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. ;)

[PHP] Bilddaten auslesen wie Breite, Höhe und Typ

Hallo,

PHP stellt, wie so oft, eine kleine Funktion bereit um einfach an diese Daten zu gelangen. Aber wozu braucht man das Ueberhaupt? Ganz einfach. Z.B. kann man damit die Bilddimensionen des IMG-Tags fuellen. Oder man kann damit die Dimensionen eines Image-Popups an Javascript uebergeben. Oder den MIME vorgeben. Es gibt sehr viele Anwendunsmoeglichkeiten fuer diese Funktion.

Hier ist sie:

getimagesize ( string $filename [, array &$imageinfo ] )

Und hier ein kurzes Beispiel.

<?php
$img = "picture.jpg";
$iA = getimagesize($img);
echo "Bildbreite: ".$iA[0]."<br>";
echo "Bildhöhe: ".$iA[1]."<br>";
echo "Imagetype: ".$iA[2]."<br>"; //JPG, GIF, etc.
echo "IMG-Tag String: ".$iA[3]; //zur verwendung von IMG-Tags
?>

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. ;)

[PHP] Fehlerausgabe lokal/web switchen

Hallo,

eigentlich immer ist es erforderlich sich in der Programmierungsphase die Fehlermeldungen ausgeben zu lassen um zu sehen wo und welche Fehler auftreten. Wenn das Projekt dann aber online ist dürfen diese aber nicht mehr (öffentlich) Ausgegeben werden.

Ich persönlich programmiere meine Projekte erst auf meinem lokalen Rechner und lade die Projekte dann auf den Webspace. Daher habe ich folgende Zeilen, direkt nach dem PHP-Tag („<?php“), in meine Scripte eingebaut:

if ($_SERVER["SERVER_NAME"] == "localhost") { error_reporting(E_ALL); ini_set('display_errors', 1); }
else ini_set('display_errors', 0);

Diese bewirken nun folgendes: Das Script überprüft ob das Script lokal ausgeführt wird. Wenn ja dann werden alle Fehlermeldungen von PHP ausgegeben. Wenn es nicht lokal ausgeführt wird (also auf einem öffentlichen Webspace/-server) dann wird keine Fehlermeldung mehr ausgegeben.
Im zweiten Fall sollte aber auf jeden fall eine Error-Reporting-Routine eingebaut werden um evtl. auftretende Fehler zu protokollieren.

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 – Resizing images according to the aspect ratio

Soooo… after postponing it for quite a while… I sat down and solved finally the aspect ratio problem when Nextgen Gallery shall resize/shrink an image.

The problem is… If I set as picture size e.g. 800×600 px (width x height), then Nextgen Gallery resizes a picture from e.g. 1024x768px to this format. All good. But if the original picture is 768x1024px then the result is not a picture with 600x800px, no, it will be a picture of 450x600px. And that is not what we want. (Isn’t it?)

So, I sat down today and checked the sources. Actually its simple. The picture will be uploaded and checked on its size. The values will be re-calculated be the settings and the aspect ratio should be checked as well. They just forgot to adjust the settings. We’ll do that now…

Open the file „/wp-content/plugins/nextgen-gallery/admin/wp25/functions.php“ in an editor and search for the function „function resizeImages()“. Here you’ll see:

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;
}

This is the function which resizes our original pictures. We’ll replace this function now with this modified one:

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;
}

Ok, what is this doing now?

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

First of all we check if the uploaded image is bigger then the settings. If not, then we don’t need to do anything anyway.

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

Here we check the aspect ratio… horizontal or vertical format.

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

And that is basically the new thing… after we know if we have a horizontal or vertical picture, we can adjust the setting values… like 800x600px or 600x800px (for my example).

And thats it already. Looks a lot, but its more explaining then anything else :)
Maybe that is not the best solution (especially it is not ‚update save‘), but it works for now. If you know a better solution, then let me have it in the comments. ;)

Please notice that all code snippets and examples on this page are on your own risk. I am not responsible for anything you do!

Cheers
Gordon

Webkatalog – www.linkarea51.com

[singlepic=83,240,320,,right]Linkarea51.com ist ein ganz normaler Webkatalog. Ursprünglich sollte auf dieser Domain ein Zwillingskatalog von katalog4web.de laufen. Die Idee war das der User sich nur in einen Webkatalog eintragen muss und auf beiden gelistet wird. Da dies Google aber nicht gefällt, wurde diese Idee gestrichen.

Also habe ich auf der Domain einfach einen weiteren Webkatalog installiert. Diesmal jedoch nicht meine eigene Software, sondern eine fertige (Fremd-)Software. Ich habe mir mehrere Anbieter angesehen und mich für phpLinkDirectory entschieden.
Warum? Es ist kostenlos und hat mir von der Usability und dem Funktionsumfang am besten gefallen. Natürlich ist das immer eine Geschmackssache… aber ich fand den einfach gut.
Und warum nun eine Fremdsoftware wenn doch einen eigene vorhanden ist? Ich wollte ausprobieren ob die User mit einer bekannten Umgebung besser zurecht kommen als mit meiner selbstprogrammierten Software. Jedoch wird dieser Webkatalog bisher schlechter frequentiert als mein anderer. Aber dennoch kann ich 50 Anmeldungen vorweisen (Stand: 18.11.2008). Wobei für den Webkatalog auch noch keine Werbung gemacht wurde. Aktuell hat der Webkatalog ca. 75 Visits am Tag (Stand: 18.11.2008).

Wie schon erwähnt ist die Software phpLinkDirectory in der Basic Version. Das Layout kommt von free-css-templates.com und wurde an die Software angepasst. Zusätzlich wurde die Software in 3 Sprachen installiert um so auch Englisch und Römanisch sprechenden Menschen den Gebrauch zu ermöglichen. Samit erwarte ich eine höhere Frequentierung. Besonders English ist eine wichtige Sprache, da selbst Menschen aus Italien oder Japan oft English sprechen.

In den ersten Wochen, nachdem die Suchmaschinen den Katalog erfasst und indexiert hatten, wurde der Webkatalog oft von Spam-Einträgen heimgesucht. Diese können zwar im Administrationsbereich recht schnell gelöscht werden, sind aber dennoch ärgerlich. Besonders da auch die Emailadressen nicht stimmen und die Mailerdämons dies gern Mitteilen. Daher habe ich auf der Domain ein Tool installiert um dies zu unterbinden. Das Tool funktioniert auch so gut das es im Monat ca. noch einen Spameintrag gibt.

Der Webkatalog steht zum Verkauf. Domain inkl. dem gesamten konfigurierten Projekt, natürlich wird nicht für das Script von phpLinkDirectory und das Layout bezahlt. Wer interesse hat kann mir gern eine Email schreiben: blog@gordon-zube.de

Der Link: www.linkarea51.com

Zypern grüßt. Ein bisschen was belangloses…

Hallo miteinander.

Seid meinem letzten Eintrag sind bereits 18 Tage vergangen und ehrlich gesagt habe ich nichts zu berichten. Eigentlich gar nichts. Traurig aber wahr… also werde ich euch heute mit mehr oder weniger belanglosem beglücken.

Jetzt musste ich erst mal schauen wann ich überhaupt das letzte mal geschrieben habe… und was.
Also meine PC-Lautsprecher habe ich jetzt bekommen. Unser allgemeiner Datenjogy hat sie mir mitgebracht. Sie sind ganz gut und reichen völlig aus. 3.1 System mit nem ganz vernünftigen Subwoofer. Ok, hat auch 50 Euro gekostet. Da soll das auch so sein :)

Letzte Wochenende war ich wieder bei George und Maomie. Und nun endlich sind wir dazu gekommen Tartatan zu kochen. Wobei ich noch immer nicht weiß wie man das schreibt… aber nun wie man es macht. :) Es ist eigentlich total simpel… aber total lecker. Ich weiß nicht ob ich es hier schreiben soll… denn dann könnte es ja jeder machen *grins*… ok ok… ich schreibs ja.

Die Zutaten: Stahlpfanne (keine Plastikteile!), feinen braunen Zucker, Blätterkuchenteig, Birnen (oder andere feste Früchte) und Wasser. Das wars.

Die Zubereitung: Die Pfanne mit einem schluck Wasser auf den Herd. Eine gute ladung Zucker rein. Das ganze gut durchrühren, bis sich der Zucker aufgelöst hat, und zum Kochen bringen. Das ganze so lange kochen lassen bis die Flüssigkeit nur noch Sirup ist. Die Früchte (ca.) vierteln, entkernen und Schale ab… klar. Dann in die Sirupartige masse in der Pfanne legen… optimal ist wenn die Früchte einen Kreis ergeben… daher eignen sich längliche Birnen sehr gut. Durch die Flüssigkeit der Früchte wird der Sirup wieder flüssiger… das ganze eine weile durchkochen bis die Bläschen wieder dicker werden… also wieder so viel Flüssigkeit verdunstet ist das es wieder Sirupartig wird. Den Herd nun abstellen und 1-2 Minuten abkühlen lassen. Dann den Blätterteig, den man vorher in so geformt hat das er genau in die Pfanne passt, oben auf die Früchte legen. Nun die Pfanne in den Backofen (daher darf kein Plastik etc. an der Pfanne sein). Optimal ist dieser mit 200 Grad vorgeheizt. Das ganze bleibt dort ca. 20 Minuten.
Jetzt der schwierige Teil :) … Das Tartatan ist natürlich verkehrtherum im Topf… also einen Teller auf den Topf legen und ganzzzzz schnell beides Umdrehen ;) Tata… Fertig ist unser Tartatan…

Serviervorschlag: Heiß mit Sahne drüber. Nix für eine Diät… aber LECKER :)

Was gibts noch so zu berichten? Ich komme Weihnachten doch nach hause *freu*. Vom 17.12. bis 31.12. habe ich Heimaturlaub :) Dazu musste ich schon 3 Tage Urlaub vom nächsten Jahr mit aufbrauchen… aber was solls. Weihnachten ist das Fest der Familie (das andere lassen wir mal weg) und gerade jetzt finde ich es doch sehr schön es auch mit ihnen feiern zu können. Nun sehe ich sie ja wahrscheinlich nur noch 2 mal im Jahr. Zu Weihnachten halt und zu meinem Geburtstag. So ist das mit der arbeitenden Bevölkerung… der Urlaub ist rar und ist straff geplant. Weihnachten 2 Wochen, eine Woche zum Geburtstag… und dann bleibt nur noch eine und da werde ich dann wohl mit meinen Freunden zum alljährlrichen Urlaub aufbrechen. Falls es nächstes Jahr wieder was wird. Ich hoffe es.

Hmm… es gibt zwar noch etwas was mich im moment bewegt… aber das ist wohl ein sehr heikles Thema. Ich versuch mal drum rum zu reden. Letztens hat eine Arbeitskollegin Spendengelder für eine Organisation gesammelt die mehr oder weniger illegal in ein besetztes Land vornimmt. Ich habe mich daraufhin mit der Thematik ein wenig näher beschäftigt und finde diese „Reise“ sehr interessant. Eigentlich denke ich im moment sehr viel darüber nach. Nicht nur an diese Unternehmung… allgemein.
Eigentlich haben wir es in der EU richtig gut. Ich meine was ich da alles an Berichten gelesen, Bilder und Videos gesehen habe… im Rest der Welt gehen wirklich schreckliche dinge vor sich. Ehrlich gesagt kann ich mir das gar nicht wirklich Vorstellen. Die Relisierung fällt mir sehr schwer da ich es selbst nie erlebt habe. Die DDR habe ich nicht mehr wirklich miterlebt. Ich kann mich nur noch an Bruchstücke erinnern. Und ich denke die DDR war auch noch eine „humane“ Regierung im vergleich zu manch anderen Regierungen, oder besser gesagt Regimen, auf dieser Welt. Ich möchte hier gar nicht anfangen einzelheiten aufzulisten… denn dazu fehlen mir bei weitem die Informationen. Warum eigentlich? Ich denke es hat mich einfach nicht interessiert. Ich lebte in Deutschland in einer wohl behüteten Umgebung und es war weit entfernt von meinem Interesse irgend etwas über weit entfernte „Probleme“ wissen zu wollen. Ich fand meinen Alltag schwierig, die Ämter in Deutschland zu kompliziert und bisweilen böswillig.
Nun aber ist es anders… ich bin nicht mehr in Deutschland, die schützende Hand ist nicht mehr über mir… ich glaube im moment Entwickle ich sogar eine regelrechte Neugierde auf das was hier in der „näheren“ Umgebung passiert. Und das ist leider nicht immer alles wunderbar, ehrlich, ehrhaft, friedlich und völkerrechtlich postiv.
Hört sich sicherlich bekloppt an… naja, vielleicht schreibe ich noch mal darüber… vielleicht auch nicht. Ich werde es sehen und ihr lesen. Aber definitiv werde ich kein Völkerrechtler… nur Neugierig!

Soweit für heute.
CYA
Gordon

Ich mal wieder… aktuell meine erste Autofahrt… allein!

Hallo zusammen,

da bin ich mal wieder. Ja ich lebe noch :) und alles ist soweit fein.

Erst einmal der aktuelle anlass meines Eintrags… ich bin gerade vom Einkaufen wiedergekommen. Und ICH bin gefahren… ganz allein!!!! :D Ich bin soooo stolz auf mich. :) Ok, es war zum glück nicht viel los heute auf den Strassen… aber dennoch ein Leistung, wie ich finde.
Ok, ich bin ja letztes Wochenende schon mal gefahren… aber das zählt nicht wirklich. Das war mit Chefins Auto. Und das fährt sich extrem besser (u.a. weils ein Automatik ist) und dann auch nur abends zu George und wieder zurück. Aber dazu später mehr.
Heute bin ich erst hoch ins Dorf zur Bank und dann zurück, auf die Autobahn und dann quer durch Limassol City. Und natürlich auch wieder zurück. Den Weg kannte ich zum Glück schon ganz gut und er war einfach zu merken. Und nicht einen Kratzer eingefangen :)
Vielleicht ermutigt mich das nun öfters mal eine Runde zu drehen… nein, nicht vielleicht. Ich werde es tun! :)
Aber das fahren hier ist gar nicht so kompliziert wie ich es vermutet hatte. Es geht ganz gut wenn man seinem Kopf erst einmal klar gemacht hat das man hier auf der linken Seite bleiben muss und besonders das dass Auto an sich links weitergeht und nicht – wie in den meisten anderen Ländern – rechts vom Fahrer weitergeht. Das ist mein größeres Problem… da kann man links schnell mal wo gegenfahren. Aber die Umgewöhnung geht recht fix, denn alle anderen machen es ja genauso… Gruppenzwang halt :D

Wo wir gerade beim Einkaufen sind. Ich wollte mir heute ein paar Lautsprecher für meinen Laptop holen. Deswegen extra ein paar Euronen mehr von der Bank geholt. Und extra zum großen Carrefour hier gefahren (die kleinen haben nur wenig Elektrosachen). Und bei dem habe ich letztes mal schon ein paar schöne gesehen… aber da waren leider nur noch die Ausstellungsstücke da. Ich habe einfach mal angenommen das sie nachbestellen wenn keine Ware mehr auf Lager ist… ja, dachte ich aber auch nur. Die Ausstellungsstücke waren noch da, aber mehr immer noch nicht. Dann hatten sie noch ein anderes paar was nicht schlecht aussah… nur noch die Ausstellungsstücke *grrrr*
Damit ohne Boxen den restlichen Einkauf erledigt. Wieder nahm ich mal an das mein Einkauf, ohne die Lautsprecher, dieses mal recht günstig ausfällt. Ich hatte auch nicht viel auf meinem Einkaufzettel stehen und mehr ist auch (fast) nicht im Wagen gelandet. An der Kasse wurde ich dann wieder ermahnt… nicht denken, wissen! 43,37 Euro hat mich der Einkauf gekostet! :o Ich habe gerade noch einmal nachgerechnet… es stimmt sogar. Also lasst euch gesagt sein: Zypern ist ein teures Pflaster. In Deutschland hätte ich für diesen Einkauf vielleicht die hälfte Bezahlt.
Ja ja, ich weiß. Ich habe es mir ja ausgesucht werden jetzt einige sagen und … Ja, habe ich :D
Und für alle die es interessiert: Carrefour hat Samstags bis 19:30 Uhr offen :) Ich habe nämlich 4 Leute gefragt und keiner konnte es mir sagen… besser noch, jeder hat was anderes Gesagt :D

Naja, meine PC-Boxen werde ich mir nun wohl im Internet bestellen und kommen lassen.
Was gibts sonst so neues? Wie schon erwähnt war ich letztes Wochenende bei meiner Chefin Haus und Hunde hüten. Sie war im Urlaub.
Es war ein wundervolles Wochenende. Kein Internet, Sonne pur (sie hat hier auch ende Oktober noch richtig bums) und nen Pool… dazu ein süßes Haus auf einem Hügel mit absoluter Ruhe und der nächste Nachbar weit weg. Traumhaft.

Ich habe diese 2 Tage damit verbracht selbst einmal ein bisschen Urlaub zu machen, abzuschalten und das Leben hier mal ein bisschen zu genießen. Die meiste Zeit habe ich draußen in der Sonne verbracht und noch ein paar Pigmente gehascht (hat ein bisschen was gebracht :) ), mal wieder ein Buch in die Hand genommen – ohne Internet ist was anderes nicht möglich – und mittags war ich beide Tage mit Reenie im Pool. Reenie ist ein knuffiger Hund. Man könnte fast meinen sie mag es „Arschbomben“ zu machen :)
Samstag nachmittag war ich noch mit George und Naomie mit den Hunden einen Spaziergang machen und wurde von den beiden zum Essen eingeladen. Es gab Steak mit Kartoffeln und Gemüse. Wie immer sehr lecker – die beiden sind wirklich gut in der Küche. Nur mögen die beiden Steaks eher „etwas“ blutiger. Schmeckt auch nicht schlecht… ist nur etwas zäh. Und zum Nachtisch gab es Tartatan (keine ahnung wie man das schreibt)… aber ein Traum sag ich euch. Es besteht aus einem Blätterkuchenteig als Boden und oben Früchte drauf. Und irgendwas mit Karameliesiertem Zeugs hat sie noch gesagt, das habe ich aber nicht genau verstanden. Auf jeden Fall will sie mir zeigen wie man es macht… :) Dann kann ich es mir selbst backen.
Und sonst habe ich dieses Wochenende einfach gar nichts gemacht… und das war schön so :)

Sonst gibts eigentlich schon nichts neues mehr. Ist ja immer das selbe irgendwie.
Ach doch, ab nächster Woche versuchen wir ein Schichtsystem einzuführen. Dann habe ich endlich mehr Freizeit und hoffe das ich auch wieder mehr für meine Firma tun kann und hier auch mal ein bisschen die Umgebung erkunden kann… nun wo ich mich etwas traue Auto zu fahren :)

Tja, dann sag ich erst mal wieder tschüss und berichte das nächste mal hoffentlich von meinem ersten Ausflug :)

Bye Bye ihr lieben
Gordon