Hier kommen alle Artikel rein die mit Wordpress zu tun haben.

[PHP] NextGEN Gallery – Sortierung der Galerien

Hallo zusammen,

mal wieder die NextGEN Gallery.
Da ich es leid bin nun ständig alle Bilder per Hand zu bearbeiten und hochzuladen habe ich die Flash-Upload entdeckt… nachdem ich die Galerie schon Monate benutze. :-) Ein schickes Tool wenn man richtig viele Bilder hochladen möchte. Das funktioniert auch super! Nur einen kleinen Schönheitsfehler gibt es… die Sortierung.

Denn lade ich ein Bild einzeln hoch… dann landet es als erstes in der entsprechenden Galerie. Richtig, so soll es ja auch sein. Ist ja das neuste Bild also muss es als erstes angezeigt werden. Lade ein ganzes Verzeichnis per Flash Upload hoch dann bedeutet es (bei mir jedenfalls) das ich z.B. einen Tagesausflug dokumentiert habe… und dann möchte ich das dass erste geschossene Bild (also das eigentlich älteste) auch an erster Stelle haben.

Gut, der Programmierer kann das nicht voraus ahnen… aber er könnte z.B. für jede Galerie eine eigene Sortierungsoption angeben ;-)

Ich habe es für meine Zwecke (mal wieder) direkt im Quellcode geändert. Keine schöne Lösung, aber selten :-)

Wenn Du das auch so machen möchtest (vorsicht, beim nächsten Update ist alles wieder beim alten)… dann mache folgendes:

Rufe die Datei /wp-content/plugins/nggallery/nggfunctions.php mit einem Editor auf. Gehe in die Zeile 249 (ungefähr). Hier werden die Bilder sortiert:

$ngg_options[‚galSortDir‘] = ($ngg_options[‚galSortDir‘] == „DESC“) ? „DESC“ : „ASC“;

Ich habe es wie folgt gelöst. 2 verschiedene Alben. Eines mit Gallerien wo ich einzelne Bilder hochlade (aktuelle von mir oder so) und ein Album wo ich Galerien habe wo ich immer ganze Verzeichnisse hochlade. Du musst die ID’s der beiden Alben kennen. Hier nehme ich einfach 1 und 2 für das Beispiel.

Füge nun über der obigen Zeile den folgenden Code ein:

$album = get_query_var(‚album‘);

Damit haben wir nun die ID des aktuellen Albums. Jetzt müssen wir wissen welche Sortierung für welches Album. Album 1 ist letzte zuerst, also ASC. Bei Album 2 DESC.

if($album == 1) $ngg_options[‚galSortDir‘] = ($ngg_options[‚galSortDir‘] == „DESC“) ? „ASC“ : „DESC“;
else $ngg_options[‚galSortDir‘] = ($ngg_options[‚galSortDir‘] == „DESC“) ? „DESC“ : „ASC“;

Nun kann es sein das es jetzt genau falsch sortiert ist. Je nachdem wie Du die globale Sortierung eingestellt hast. Dann einfach entweder die globale Sortierung ändern oder $album == 1 gegen $album == 2 tauschen.

Das wars. Aber wie gesagt, wenn Du das nächste Update machst… ist wahrscheinlich alles wieder weg.

Gruss
Gordon

Mein Blog twittert jetzt auch :-)

Tach zusammen,

ja ich weiß, ich bin spät dran mit twittern… aber wie sagt man so schön… besser spät als nie :-)

Für alle die nicht wissen was twittern ist… keine panik, ich weiß es auch nicht! Aber ich tue es jetzt einfach mal. :-P Nein, twitter ist irgendwie ne mischung aus social-irgendwas und rss. Man kann sich anmelden und fleißig statusmeldungen eingeben. Sowas wie bei facebook die „live-meldung“ oder bei meinVZ der „buschfunk“. Mehr nicht… die seite besteht nur aus diesen kleinen nachrichten und die leute stehen drauf.. warum auch immer. Und ich mache jetzt mit :-) Aber nicht bei twitter direkt, nur mein blog schreibt fleißig diese meldungen von ganz allein (weniger arbeit für mich) ;-) Und das tolle… twitter schickts dann gleich an facebook weiter… so verpasst keiner mehr meinen schwachsinn :-D

Wer mir followen (folgen) will… bitte schnell adden: http://twitter.com/ChaosGordon

Das hier ist auch gleich soetwas wie eine feuerporbe für das twitter-plugin für wordpress… ich hoffe doch das es funktioniert!

soo, dann mal los!

Tschau
Gordon

Update: Nee, funktioniert nicht… mein PHP unterstützt kein json_decode()… verdammt :(

Neues Update: Jetzt gehts… hab nen kleinen patch gefunden:

if ( !function_exists(‚json_decode‘) ){
function json_decode($json)
{
// Author: walidator.info 2009
$comment = false;
$out = ‚$x=‘;

for ($i=0; $i<strlen($json); $i++)
{
if (!$comment)
{
if ($json[$i] == ‚{‚) $out .= ‚ array(‚;
else if ($json[$i] == ‚}‘) $out .= ‚)‘;
else if ($json[$i] == ‚:‘) $out .= ‚=>‘;
else $out .= $json[$i];
}
else $out .= $json[$i];
if ($json[$i] == ‚“‚) $comment = !$comment;
}
eval($out . ‚;‘);
return $x;
}
}

PS: Und baut ein kleinen sleep(3) ein bevor die _aj_birdfeeder() verlassen wird… sicher ist sicher… hat beim ersten mal auch nicht funktioniert.

Update: Man, gar nicht so einfach…. jetzt hat es funktioniert aber kein link zum blog da :( Die Shorturl wird nicht angezeigt :(

Letztes Update: jetzt geht alles… etwas entscheidendes vergessen. Die obige fuhnktion macht kein objekt mer sondern ein array… daher muss die folgende zeile umgeschrieben werden:

$shortUrl = $shortnameHash->results->$postUrl->shortUrl;

in

$shortUrl = $shortnameHash[„results“][$postUrl][„shortUrl“];

nu gehts. :-)

Gordon’s Chaosblog goes to facebook…

Hallo zusammen,

die meisten wird das gar nicht interessieren… ein paar vielleicht schon. Nämlich die die selbst über facebook applikationen nachdenken.

Ich kann und will hier nicht noch ein how to do schreiben… dafür gibt es schon genug. Also werd ich es kurz und bündig machen :-)

Warum sollte man einen blog bei facebook einbinden? *pfff* Keine ahnung… jeder hat so seine eigenen gründe ;-) Für mich ist es einerseits spaß und andererseits brauche ich ein bisschen erfahrung für eine andere applikation. Und ein bisschen bei bestenden anwendungen abgucken kann ja nicht schaden :-)

Was macht die applikation? Es handelt sich dabei um ein plugin für wordpressblogs. Das plugin heißt WPBook. Es macht eigentlich nichts anderes als den RSS-Feed deines blogs in facebook zu veröffentlichen. Das geht sogar in deinem profil… allerdings nur in der widget bar… als profilreiter hatte ich probleme vorhin.

So… wie installiere ich das nun? ich habe es ja schon gesagt, ich werde hier kein neues how to do schreiben. Zum einen sollte man sich natürlich die installationshinweise des plugin machers anschauen (auch hier). Und ein sehr gutes tutorial hat DrWeb geschrieben.
Damit lässt sich das plugin und die applikation sehr gut einrichten. Und vorweg… es ist sehr leicht… also keine angst. ;-)

So… ich warte jetzt auf meine millionen besucher täglich und werde bei bedarf mal einen ansichtskarte von meiner eigenen südsee insel schicken. :-)

Viele Grüße (noch von der süd europa insel)
Gordon

[PHP] NextGEN Gallery – Widget optimierung (Seitenverhältnis)

Hallo,

um so mehr ich mit meinem Blog arbeite um so mehr finde ich was mich stört. Heute war das NextGEN Widget an der Reihe. Also erst einmal bin ich ja wirklich begeistert von der Gallery. Sie ist echt gut aufgebaut und bietet vieles von dem was ich von einer Gallery erwarte. Trotzdem gibts hier und da noch ein paar Sachen die mich stören… wie heute das Widget.

Was genau? Ich benutze das normale Wigdet welches eine bestimmte Anzahl von Thumbnails statisch anzeigt. Leider wird auch hier vollkommen das Seitenverhältnis ignoriert. Ich kann die Größe angeben – z.B. 150px x 120px – und so wird dann das Vorschaubild auch angezeigt. Egal was es eigentlich für eine Größe hat. Auf gut deutsch… es wird so hingezerrt das es passt. Was natürlich nicht berauschend aussieht. Besonders fällt es bei Hochformatbildern auf.

Die Lösung:

Es ist wichtig schon beim Hochladen des Bildes die richtige Thumbnailgröße anzugeben (hier wird das Seitenverhältnis beachtet!). Das macht man im Administrationsbereich unter Optionen -> Thumbnails.
Wenn nun schon beim Hochladen das Vorschaubild in die richtige Größe gebracht wird, dann brauchen wir diese beim Anzeigen nur noch auslesen (wie das genau geht kannst du hier lesen). Fertig :)

Öffne dazu die Datei „./wp-content/plugins/nggallery/widgets/widgets.php“. Ca. in der Zeile 327 findest du eine Zeile die wie folgt anfängt:
$out .= '
Diese Zeile ist teil einer „if“-Abfrage. Ändere diese Zeile(n) wie folgt:


...
if ( $instance['show'] == 'original' )
	$out .= ''.$alttext.'';
else {	
	$ImgA = getimagesize($image->thumbURL);
	$out .= ''.$alttext.'';			
}				
...

Die kursiven Zeichen sind nur zur Verdeutlichung im Kontext. Speichern und wieder auf den Server kopieren.

Bitte auf jeden Fall beachten das wenn du ein Update des PlugIns machts, diese Änderungen wieder überschrieben werden… hatte ich heute erst das Problem.

Gruß
Gordon


Hinweis: Die Verwendung meiner Codeschnipsel erfolgt auf eigene Gefahr! Ich übernehme auch keine Garantie auf Funktionstüchtigkeit (jeder Server ist anders konfiguriert. Bei Problemen können Sie hier aber gern einen Kommentar schreiben und wir suchen eine Lösung. ;)

Problem mit dem Email-Versand bei WordPress

Hallo zusammen,

ich habe das Problem schon seid Tagen im Auge… aber irgendwie nie die Zeit gefunden. Heut hat es mich dann aber genervt. Der ein oder andere kennt das Problem vielleicht… Es wird ein Kommentar zu einem Artikel abgegeben und kurze Zeit später bekommt man eine Email vom MAILER DAEMON mit dem Betreff „failure notice“.

Nein, das ist weder Spam noch wird ihr Server als Spamschleuder missbraucht. Das ganze hat einen simplen Hintergrund. Sobal ein nicht Registrierter User einen Kommentar schreibt (oder auch bei div. anderen Aktionen) schickt WordPress automatisch eine Email an den Administrator (Seitenbetreiber). Das dumme dabei ist nur das diese Emailadresse anscheinend nicht vorgegeben werden kann und sie sich somit wir folgt zusammensetzt: „wordpress@“ + Domainname. Zum Beispiel „wordpress@domain.de“.
Existiert diese Emailadresse nun real gar nicht dann gibt es, unter umständen, eben den obigen Fehler da der Empfänger prüft ob die Absenderadresse wirklich existiert… tut Sie das nicht dann verweigert er schlichtweg die Annahme. Das registriert der Absenderserver und schickt ihnen obige Email die Sie einfach darüber informiert das die Email nicht zugestellt werden konnte. :( Blöd. Noch blöder ist das diese „wordpress@…“ Emailadresse im Script verankert ist und nicht so einfach geändert werden kann. Warum auch immer. Besonders da man im Adminbereich eine Admin-Emailadresse angegeben hat bzw. angeben kann.

Das nächste Problem was ich hatte ist das WordPress emails nur per mail() verschickt. Normalerweise sollte das kein Problem darstellen, bei mir schon.

Ich habe gerade, mal wieder, 2 Stunden in den Eingeweiden von Worpress rumgefummelt bis alles funktioniert hat. Dabei habe ich mir nicht jeden Schritt gemerkt und kann daher hier leider auch keine Detailierte Anleitung geben wie Sie das abstellen können.

Wenn es nur um Problem mit der „wordpress@…“ Adresse geht dann können Sie folgendes Probieren:

Schritt 1)

Öffnen Sie die „./wp-config.php“ mit einem Editor und fügen Sie nach allen anderen Werten die folgenden Zeilen hinzu:
//email
define (‚STD_MAIL‘, ‚***‚);

Ersetzen Sie die 3 Sternchen mit ihrer Emailadresse. Diese Variable setzen wir in der wp-config.php damit wir diese Emailadresse später schnell ändern können und nicht wieder in den Code müssen.

Schritt 2)

Öffnen Sie die Datei „./wp-admin/includes/upgrade.php“ mit einem Editor und suchen Sie nach der Zeichenkette „wordpress@“ (ca. Zeile 118). Die Zeile sollte wie folgt aussehen…
$message_headers = ‚From: „‚ . $blog_title . ‚“ <wordpress@‘ . $_SERVER…
… ändern Sie diese nun wie folgt ab…
$message_headers = ‚From: „‚ . $blog_title . ‚“ <‚ . STD_MAIL . ‚>‘;

Schritt 3)

Öffnen Sie die Datei „./wp-includes/pluggable.php“ mit einem Editor und suchen Sie nach der Zeichenkette „wordpress@“… Treffer 1 ca. bei Zeile 350 und ändern Sie diese wie folgt (die originalzeilen habe ich leider nicht mehr):
$from_email = STD_MAIL;
und Treffer 2 ca. bei Zeile 896:
$wp_email = STD_MAIL;

Das sollte es gewesen sein. Einfach mal ausprobieren. Falls ich etwas vergessen habe, schreibt bitte einen Kommentar hier im Artikel.

Zum Umstellen von Mail() auf SMTP kann ich leider noch weniger sagen. Nur das es einem nicht einfach gemacht wird. Auch hier könnte man im Adminbereich eine weiche einbauen… hat man aber leider nicht. Warum auch immer. Also wieder ab in den Code.

In der Datei „./wp-includes/pluggable.php“ nach der Zeile „$phpmailer->IsMail();“ suchen (ca. Zeile 377). Das ändern in $phpmailer->IsSMTP();. Dann gehts in die „./wp-includes/class-phpmailer.php“. Hier sind in der Datei weit oben die Variablen. Einige sind belegt und andere leer. Hier müssen Sie die SMTP VARIABLES mit ihren Werten ausfüllen. Dabei am besten gleich noch mal die $Mailer auf „smtp“ setzen.
Weiter unten im Script die Funktion „CreateHeader“ suchen und die folgende Zeile ändern:
if($this->Mailer != „mail“)
in
//if($this->Mailer != „mail“)
Also einfach auskommentieren. Sonst hat die Email keinen Betreff. Warum das da überhaupt drin ist frage ich mich… aber ok. Man muss nicht alles wissen, hauptsache es funktioniert.

Damit sollte auch der SMTP-Versand funktionieren.

Gruß
Gordon


Hinweis: Die verwendung meiner Codeschnipsel erfolgt auf eigene Gefahr! Ich übernehme auch keine Garantie auf Funktionstüchtigkeit (jeder Server ist anders konfiguriert. Bei Problemen können Sie hier aber gern einen Kommentar schreiben und wir suchen eine Lösung. ;)

WordPress – Kommentare sortieren

Wo ich heute eh gerade in den Eingeweiden von WordPress rumfummel… ist mir auch gleich noch etwas aufgefallen. Bei mir zumindest, werden die Kommentare so sortiert das die neusten ganz unten stehen. Sorry, aber das find ich mal total doof. Falls doch mal etwas heißer Diskutiert wird, dann muss man jedes mal nach ganz unten scrollen. Ich finde es schöner wenn der letzte Eintrag ganz oben steht… und so gehts.

Öffnen Sie die Datei „7wp-includes/comment-template.php“ in einem Editor und suchen Sie die Function „function comments_template()“. Diese ist nicht sehr groß und damit gut Übersichtilich. Sie beinhaltet 3 SQL-Abfragen. In jeder dieser Abfragen findet man den String:

…ORDER BY comment_date“, …

Diesen Teil ändert man wie folgt ab:

…ORDER BY comment_date DESC„, …

Speichern und das wars. ;) Schon werden alle Kommentare andersrum sortiert ausgegeben.

Bitte beachten Sie. Alle Angaben auf dieser Seite sind ohne Gewähr und nur auf eigene Gefahr zu verwenden!

Gruß
Gordon

NextGEN Gallery – Bilder verkleinern im Seitenverhältnis

Soooo… nach langem verschieben habe ich mich heute mal beigemacht und das Problem mit dem Seitenverhältnis gelöst.

Das Problem ist folgendes… Gebe ich für meine Bilder einer Größe von 800 px x 600 px (Breite x Höhe) vor, so verkleinert die Software z.B. ein Bild von 1024px x 765px auf dieses Format. Ist mein Bild allerdings 765px x 1024px so wird es nicht auf 600px x 800px verkleinert sondern auf 450px x 600px. Und das ist nicht im Sinne des Erfinders. :)

Also habe ich mich heute mal hingesetzt und bin dem auf den Grund gegangen. Es ist eigentlich simpel. Das Bild wird hochgeladen und auf seine Größe kontrolliert. Die werte werden nach der Vorgabe neu berechnet und es wird aufgepasst das aus Querformat nicht plötzlich ein Hochformat wird und umgekehrt. Vergessen wurde aber leider auch Vorgabewerte anzupassen. Das tun wir nun…

Öffnen Sie die Datei „/wp-content/plugins/nextgen-gallery/admin/wp25/functions.php“ in einem Editor und suchen Sie nach der Function „function resizeImages()“. Hier finden Sie folgenes:

function resizeImages($gallery_absfolder, $pictures) {
// ** $gallery_absfolder must contain abspath !!

if(! class_exists(’ngg_Thumbnail‘))
require_once(NGGALLERY_ABSPATH.’/lib/thumbnail.inc.php‘);

$ngg_options = get_option(’ngg_options‘);

if (is_array($pictures)) {

$bar = new wpProgressBar(__(‚Running… Please wait‘,’nggallery‘));
$bar->setHeader(__(‚Resize images‘,’nggallery‘));
//total number of elements to process
$elements = count($pictures);
// wait a little bit after finished
if ($elements > 5) $bar->setSleepOnFinish(2);
//print the empty bar
$bar->initialize($elements);

foreach($pictures as $picture) {

if (!is_writable($gallery_absfolder.“/“.$picture)) {
$messagetext .= $gallery_absfolder.“/“.$picture.“<br />“;
$bar->increase();
continue;
}

$thumb = new ngg_Thumbnail($gallery_absfolder.“/“.$picture, TRUE);
// echo $thumb->errmsg;
// skip if file is not there
if (!$thumb->error) {
$thumb->resize($ngg_options[‚imgWidth‘],$ngg_options[‚imgHeight‘], $ngg_options[‚imgResampleMode‘]);
if ( $thumb->save($gallery_absfolder.“/“.$picture,$ngg_options[‚imgQuality‘]) ) {
// do not flush the buffer with useless messages
if ($elements < 100)
$bar->addNote($picture. __(‚ : Image resized…‘,’nggallery‘));
} else
$bar->addNote($picture . “ : Error : <strong>“.$thumb->errmsg.“</strong>“);
$bar->increase();
}
$thumb->destruct();
}
}

if(!empty($messagetext)) nggallery::show_error(‚<strong>‘.__(‚Some pictures are not writeable :‘,’nggallery‘).'</strong><br /><ul>‘.$messagetext.'</ul>‘);
return;
}

Das ist die Function die unseren „normalen“ Bildern eine neue Größe gibt. Wir ersetzen diese Funktion nun durch diese neu modifizierte:

function resizeImages($gallery_absfolder, $pictures) {
// ** $gallery_absfolder must contain abspath !!

if(! class_exists(’ngg_Thumbnail‘))
require_once(NGGALLERY_ABSPATH.’/lib/thumbnail.inc.php‘);

$ngg_options = get_option(’ngg_options‘);

if (is_array($pictures)) {

$bar = new wpProgressBar(__(‚Running… Please wait‘,’nggallery‘));
$bar->setHeader(__(‚Resize images‘,’nggallery‘));
//total number of elements to process
$elements = count($pictures);
// wait a little bit after finished
if ($elements > 5) $bar->setSleepOnFinish(2);
//print the empty bar
$bar->initialize($elements);

foreach($pictures as $picture) {

if (!is_writable($gallery_absfolder.“/“.$picture)) {
$messagetext .= $gallery_absfolder.“/“.$picture.“<br />“;
$bar->increase();
continue;
}

$thumb = new ngg_Thumbnail($gallery_absfolder.“/“.$picture, TRUE);
// echo $thumb->errmsg;
// skip if file is not there

if (!$thumb->error) {
//$thumb->resize($ngg_options[‚imgWidth‘], $ngg_options[‚imgHeight‘], $ngg_options[‚imgResampleMode‘]);

if ($thumb->currentDimensions[‚height‘] > $ngg_options[‚imgHeight‘] || $thumb->currentDimensions[‚width‘] > $ngg_options[‚imgWidth‘]) {

// check for portrait format
if ($thumb->currentDimensions[‚height‘] > $thumb->currentDimensions[‚width‘]) {
//vorgaben checken
if ($ngg_options[‚imgWidth‘] > $ngg_options[‚imgHeight‘]) {
$y = $ngg_options[‚imgWidth‘];
$x = $ngg_options[‚imgHeight‘];
} else {
$y = $ngg_options[‚imgHeight‘];
$x = $ngg_options[‚imgWidth‘];
}
$thumb->resize($x, 0, $ngg_options[‚imgResampleMode‘]);
// get optimal y startpos
$ypos = ($thumb->currentDimensions[‚height‘] – $y) / 2;
$thumb->crop(0, $ypos, $x,$y,$ngg_options[‚imgResampleMode‘]);
} else {
//vorgaben checken
if ($ngg_options[‚imgWidth‘] < $ngg_options[‚imgHeight‘]) {
$y = $ngg_options[‚imgWidth‘];
$x = $ngg_options[‚imgHeight‘];
} else {
$y = $ngg_options[‚imgHeight‘];
$x = $ngg_options[‚imgWidth‘];
}
$thumb->resize(0,$y,$ngg_options[‚imgResampleMode‘]);
// get optimal x startpos
$xpos = ($thumb->currentDimensions[‚width‘] – $x) / 2;
$thumb->crop($xpos, 0, $x,$y,$ngg_options[‚imgResampleMode‘]);
}

} else {
$thumb->resize($ngg_options[‚imgWidth‘], $ngg_options[‚imgHeight‘], $ngg_options[‚imgResampleMode‘]);
}

if ( $thumb->save($gallery_absfolder.“/“.$picture,$ngg_options[‚imgQuality‘]) ) {
// do not flush the buffer with useless messages
if ($elements < 100)
$bar->addNote($picture. __(‚ : Image resized…‘,’nggallery‘));
} else
$bar->addNote($picture . “ : Error : <strong>“.$thumb->errmsg.“</strong>“);
$bar->increase();
}
$thumb->destruct();
}
}

if(!empty($messagetext)) nggallery::show_error(‚<strong>‘.__(‚Some pictures are not writeable :‘,’nggallery‘).'</strong><br /><ul>‘.$messagetext.'</ul>‘);
return;
}

Was machen wir da nun im Einzelnen?

if ($thumb->currentDimensions[‚height‘] > $ngg_options[‚imgHeight‘] || $thumb->currentDimensions[‚width‘] > $ngg_options[‚imgWidth‘]) {

Hier überprüfen wir ob das Hochgeladene Bild überhaupt größer ist als die Vorgabe (hier 800px x 600px). Wenn nicht muss auch nichts verkleinert werden.

if ($thumb->currentDimensions[‚height‘] > $thumb->currentDimensions[‚width‘])

Hier überprüfen wir in welchem Seitenformat das Bild vorliegt, Quer- oder Hochformat.

if ($ngg_options[‚imgWidth‘] > $ngg_options[‚imgHeight‘]) {
$y = $ngg_options[‚imgWidth‘];
$x = $ngg_options[‚imgHeight‘];
} else {
$y = $ngg_options[‚imgHeight‘];
$x = $ngg_options[‚imgWidth‘];
}

Und das ist im Endeffekt das neue… Nachdem wir nun wissen ob wir es mit einem Quer- oder Hochformat zu tun haben, passen wir die Vorgabewerte dem Format an… 800px x 600px oder 600px x 800px (für mein Beispiel.

Und das war es auch schon. Sieht viel aus, ist aber mehr Erklärung als alles andere :)
Vielleicht ist das nicht das non-plus-ultra, aber es funktioniert. Und darauf kommt es an. Wer es besser machen kann… kann gern seinen Kommentar loswerden ;)

Bitte beachten Sie. Alle Angaben auf dieser Seite sind ohne Gewähr und nur auf eigene Gefahr zu verwenden!

Gruß
Gordon

NextGEN Gallery und Bilder verkleinern…

Hallo,

da hatte ich doch gerade mal wieder ein Problem. Wer WordPress mit dem Plugin „NextGEN Gallery“ verwendet wird vielleicht auch drauf stoßen.
Man kann in den Optionen angeben auf welche Bildgröße die Bilder verkleinert werden sollen (falls Sie zu groß sind).
Ich habe dort 640px x 480px angegeben. Denn zu große Bilder brauchen zu lange zum Laden und benötigen nur unnötig Speicherplatz. Nun habe ich mich vorhin gewundert warum die Bilder dennoch so lange zum Laden brauchen und bei einer Vollbildansicht hab ichs dann gesehen… die Bilder wurden nicht verkleinert.

Nach einigem Googlen habe ich dann eine Hilfe gefunden. Allerdings auf englisch… daher gebe ich es einfach mal hier auf deutsch wieder:

Bearbeiten Sie die Datei „/wp-content/plugins/nextgen-gallery/admin/wp25/functions.php“ und suchen Sie nach der Funktion „function upload_images()„. Scollen Sie ganz an das ende der Funktion und suchen Sie nach:

//create thumbnails
nggAdmin::generatethumbnail(WINABSPATH.$gallerypath,$imageslist);

Davor schreiben Sie dann folgendes:

//create resized pictures
nggAdmin::resizeImages(WINABSPATH.$gallerypath,$imageslist);

Speichern (und die Datei wieder auf den Webspace laden) und nun sollte es funktionieren.

Quelle: http://wordpress.org/support/topic/177782

Etwas stört mich nun aber immernoch. Wenn ich als größe 640px x 480px angebe ist das ja das Querformat. Er erkennt allerdings nicht automatisch ein Hochformat. Also er erkennt es schon… nimmt aber weiter fleißig 480px als höhe an und rechnet die Breite um. Damit wird das Bild aber noch kleiner als gedacht. Schöner wäre es wenn er im Querformat dann einfach 480px x 640px benutzt.
Vielleicht werde ich mich da nächste Woche mal ransetzen. Da habe ich dann ja wieder Zeit :)
[UPDATE] Der Artikel ist fertig, das Problem gelöst: Zum Artikel

Gruß
Gordon

WordPress installieren

Hallo zusammen,

nun habe ich mich ja entschieden einen eigenen Blog zu starten. Als Software habe ich mich für WordPress entschieden. WordPress ist eine weit verbreitete Blog-Software.

Die Installation verlief sehr simpel. Erst habe ich sie lokal auf meinem Rechner installiert… ein wenig rumprobiert und diverse Plugins ausprobiert. Besonders wichtig war mir die Galerie, die standartmäßig nicht mit dabei ist. Aber das Plugin „NextGen Gallery“ machte einen ganz guten Eindruck und wenn man erst einmal verstanden hat wie sie funktioniert ist sie auch ganz nett.

Nun habe ich das ganze System gerade auf meinen Webspace geladen und es funktioniert wie geplant :)

Nun ist es ja leider so das man sich über die Sicherheit fast mehr sorgen machen muss als alles andere. Dazu habe ich gerade ein nettes Tutorial gefunden, welches ich gerade durchrocke. Es beinhaltet schon viele, wichtige, Schritte. Dazu werde ich noch ein paar eigene Ideen einbauen. Ich hoffe nur das ich bei den ganzen Sicherheitsmaßnamen nicht auch „echte“ User ausschließe. Falls doch möchte ich mich schon mal entschuldigen.

Falls meine eigenen Ideen funktionieren werde ich dazu auch noch mal etwas schreiben.

… so, Idee Nr. 1 ist installiert und funktioniert einwandfrei :)
Worum gehts? Ganz einfach. WordPress hat natürlich ein Backend um die Artikel zu verfassen (etc.pp.). Dieses Backend ist von Haus aus immer unter /wp-admin/ zu finden. Das ist allerdings nicht nur gut für den Benutzer, sondern auch Hacker und sonstige Bösewichte finden das toll. So müssen Sie nicht erst ewig nach dem Administrationsbereich suchen.
Leider ist es bei WordPress nicht damit getan das Verzeichnis einfach umzubennen. Denn in vielen Dateien wird auf genau dieses Verzeichnis verwiesen und eine zentrale Konfigurationsvariable gibts leider nicht. Also muss man alle Dateien abklappern und die Pfadangeben manuell ändern. Zum Glück gibts kleine Helferlein die das für einen in Sekunden erledigen. Ein solch Helferlein ist z.B. InfoRapid.
Aufzupassen ist dabei das Sie nach „wp-admin“ suchen und durch den neuen Verzeichnispfad (z.B. „meinadmin“) ersetzen. Nach dem durchlauf muss gleich noch einer gestartet werden, da auch so einige CSS-Dateien „umbenannt“ wurden. Also muss danach nach „meinadmin.“ gesucht werden und durch „wp-admin.“ ersetzt werden. Dann stimmen die CSS-Dateinamen wieder.

Somit kann man das Backend-Verzeichnis umbenennen. Soweit ist das schon mal eine tolle Sache und ein Schritt in Richtung Sicherheit. Da nun aber das Backend-Verzeichnis nicht mehr vorhanden ist, die Bösewichte aber gern danach suchen, kam mir gleich noch der Gedanke einen drauf zu setzen.

Wem das Projekt „Spider Trap“ bekannt ist, der weiß vielleicht was ich meine :) Für alle die es nicht kennen erkläre ich es kurz. Suchmaschinen setzen sogenannte Bots ein um das Internet zu durchsuchen und zu indexieren. Bots sind Softwaregesteuerte Maschinen die selbstständig ihre Arbeit verrichten. Da es aber auch Inhalte im Internet sind die, aus welchen Gründen auch immer, nicht in Suchmaschinen auftauchen sollen gibts es Regeln an die sich die Bots halten müssen. Diese Regeln werden, unter anderem, in der Datei „robots.txt“ festgehalten. Nun gibt es leider auch hier Bots (meist von kleinen Suchmaschinen) die sich nicht an diese Regeln halten oder schlichtweg ignorieren. Bots kommen auch nicht immer von Suchmaschinen. Auch Hacker bauen sich solche Bots um Standartsystem aufzuspüren und auszukundschaften.
Soweit dazu. Das Projekt „Spider Trap“ stellt diesen Bots eine Falle in dem Sie eine Regel aufstellen die besagt das ein Bot ein bestimmtes Verzeichnis nicht „betreten“ darf. Gute Bots halten sich an diese Regel und fassen das Verzeichnis nicht an. Böse Bots jedoch werden gerade versuchen genau dieses Verzeichnis aufzurufen und tappen damit in die Falle. Sie werden vom System registriert und schlichtweg ausgeschlossen. Dies geschieht über eine IP-Sperre.
(Anm. Die IP ist einzigartig und somit kann man einen Rechner eindeutig identifizieren. Bei normalen Internetusern wechselt diese jedoch des öfteren (normalerweise bei jeder neuen Internetverbindung). Bots sind aber meist auf Webservern installiert und deren IP muss immer gleich sein.)

Nun zum Plan: Wir haben nun das Verzeichnis „wp-admin“, in dem normalerweise das Administrationsmenü von WordPress liegt, „frei“ gemacht. Dieser Verzeichnisname ist frei. Ich habe es neu angelegt und die „Bot-Falle“ darin installiert. Damit werden nicht nur die bösen Bots darin gefangen sondern auch gleich noch ein paar andere böse Buben. Leider bringt das nur bei automatisierten Scripten etwas. Denn die Bot-Falle kann auch wieder aufgelöst werden. Wenn nun ein Mensch versucht hat mein System auszuspähen dann kann er sich allein wieder „befreien“.
Warum das so ist? Ganz einfach. Wenn ein Benutzer meines System ausversehen selbst in die Falle gegangen ist (was ich mir eigentlich nicht vorstellen kann wie das passieren soll, aber kann ja vorkommen), dann wäre es überaus übel wenn er dort nicht wieder rauskommt und meine Seite nicht mehr anschauen kann. So muss er einen Code eingeben und kommt wieder aus der Falle raus.
Wie oben schon angesprochen ändern sich bei normalen Internetnutzern die IP nach einer weile. So kann es auch vorkommen das ein böser Benutzer in meine Falle getappt ist, sich aus dem Internet abmeldet und somit seine IP wieder frei wird. Nun wählt sich irgend ein anderer Benutzer ins Internet ein, bekommt die IP des bösen Benutzers und will ganz zufällig auch meine Seiten besuchen so ist er gleich gesperrt, denn er hat ja jetzt die IP des anderen, bösen, Benutzers.

Naja, bei mir funktioniert das ganze erst einmal. Vielleicht setze ich mich selbst mal an das Script von „Spider Trap“ und tüftel mal dran rum. Es gibt da noch ein paar Ideen die man einbauen könnte. Vielleicht wenn ich Zeit habe.

Sonnige Grüße
Gordon