PHP-Shorthand – ein Überblick (Linktipp)

tempa wrote this 15:32:

Nicht alles was ich da sah, erkannte ich als Shorthand, denn ich dachte, das sei die ganz normale Syntax, aber immerhin hier ist für den Anfänger ein kleiner Einblick der wichtigsten Shorthand-Syntax-Beispiele: PHP Shorthand Syntax

Nachtrag: Das sollte ich hier wohl auch noch dazu packen, obwohl ich es dann noch weniger als Shorthand erkannte und auch als relative Unvollständig empfinde. Schließlich wurde auf „.=“ nicht eingegangen: PHP Shorthand Reference (link lost) ersatzweise: PHP – Shorthand If…Else Statements

jajaja … alle vergessen die Hälfte und unter PHP Shortcuts findet sich noch dieser Links: These Things I Know, PHP Tips

Gute Linktipps zum Thema Shorthand, Shortcuts zur Ergänzung der Linktipps hier werden gerne in den Kommentaren entgegengenommen.

Tooltip mit bösem inline Javascript

tempa wrote this 02:17:

Eigentlich bin ich ja ein absoluter Verfechter der Trennung von strukturiertem Inhalt, Aussehen und Benimm einer Website, aber in der Administration eines CMS ist es manchmal dann doch praktischer, wenn man mit dem alten onmouseover="" onmouseout="" im HTML-<TAG> arbeitet. Ein netter Tooltip an einer kryptischen Schaltfläche hilft dem Nutzer, der so oder so Javascript für das CMS aktiviert haben muss, bei der Bedienung des Werkzeugs.

Das ist zwar alter Kram aber weil ich das gerade gemacht habe und das eine oder andere erst Nachschlagen musste, will ich hier mein Ergebnis verposchten, für Andere zum Finden:

Tooltipp mit inline-Script

  1. <a onClick="funktion()"
  2. onmouseover="this.firstChild.style.display='block';"
  3. onmouseout="this.firstChild.style.display='none';" >
  4. <spanstyle="position: absolute; width: 200px; height: auto; margin-top: 28px; margin-left: -100px; padding=".5em" border: 1px solid #aaa; color: #494949; background: #efefef; display: none;">
  5. Tooltip-Text</span><img src="buttoff.gif" alt="Button-Text"
  6. onmouseover="this.setAttribute('src','button.gif');"
  7. onmouseout="this.setAttribute('src','buttoff.gif');" /></a>

Und so kann das dann aussehen:

Viel Platz für den Namen der Funktion und Anweisungen ;).Tool-Button

Nachtrag: ach Gottchen, mein frisch aktualisierter Firefox mag nicht, was ich da gemacht habe. Nur gut, dass ich es nur für den IE brauchte und hier auch keine Rücksicht auf die veralteten Versionen genommen habe. Aber dann … der Firefox nimmt eh gruselige Entwicklung und ich mag ihn immer weniger. Ich weiß wirklich nicht was der FF an diesen simplen DOM-Anweisungen auszusetzen hat. Meine Güte. OK. Der Firefox wollte unbedingt auch noch Javascript blockieren, obwohl ich dafür ein Addon habe … jajaja Javascript ist böse und es macht Sinn es nur von Fall zu Fall zu gestatten. Einstellungen korrigiert — jetzt tut’s auch im FF.

Step1 zur Archiv-Thumbgalerie via Custom fields Marke Eigenbau

tempa wrote this 13:54:

Dank der Hilfe von Michael von Reichweite.de, konnte nun das Problem gelöst werden und ich weiß wieder, warum ich selbst nur in ganz kleinem Maß schon für Kunden PHP anfasse, und hier lieber Fachmänner ins Boot hole. Aber es kommt, Leute es kommt. Ich werde peut a peut besser. Danke auch an Robert, dass er mir die Hilfe von seinem Blog rübergeschickt hat.

  1. <? /* */
  2. $dgal = get_posts('numberposts=0&category=1');
  3. function getThumbs($stichwort, $dgal){
  4. foreach($dgal as $post) : setup_postdata($post);
  5. $galArr = explode("n", get_post_meta($post->ID, "designthumbs", true));
  6. foreach($galArr as $thepics){
  7. $dtharr = explode(",", $thepics);
  8. $pos = strpos($dtharr[1], $stichwort);
  9. if($pos===false){}else{
  10. $galentry = '<dl class="galerie2">'."nt".'<dt><span><img src="http://franchie.de/ ... /uploads/'.$dtharr[0].'" alt="'.$dtharr[2].'" /></span></dt>'."nt".'<dd><a href="'.get_permalink($post->ID, '', true).'" title="'.the_title('','',false).'">Details ansehen</a> /<br /><a href="http://franchie.spreadshirt.net/ ... /design/'.$dtharr[3].'" title="'.$dtharr[2].'">Will ich haben!</a></dd>'."n".'</dl>';
  11. echo $galentry;
  12. };
  13. };
  14. endforeach;
  15. } //Funktion ende
  16. //*/
  17. ?>

Im Beitrag oder Seite folgt nun noch der Aufruf der Abfrage mit den jeweiligen Begriffen. Voila eine Thumb-Archivgalerie via Custom Fields.

  1. <h4>Thumbs mit Menschen</h4>
  2. <? getThumbs('Menschen', $dgal); ?>
  3. <h4>Thumbs mit Tiere</h4>
  4. <? getThumbs('Tiere', $dgal); ?>
  5. etc.

Die eine oder andere Kleinigkeit muss bei Franchie.de noch angepasst werden, dann wird diese Archiv-Galerie dort laufen. Also noch ein klein wenig Geduld … ach ja und irgendwann werde ich das noch mit Blättern durch die Thumbs ausbauen müssen, denn je mehr es werden, desto problematischer wird es — wer will schon Warten bis 2000 Thumbs geladen sind ;-). Das ist also auch erst noch ein Provisorium, das aber sicherlich eine Weile hält … d.h. ich muss noch ausprobieren wie die Page-Funktion von WP reagiert … ggf. vermutlich muss die Funktion in die Datei funktion.php verfrachtet werden (Jetzt erst Mal aber warten andere Aufgaben. Ich aktualisiere den Beitrag so bald ich kann).

BTW: Ich nehme für die Blätterfunktion jederzeit gerne Hilfe an, damit innerhalb einer Stichwortabfrage auch 1000de von Thumbs vorkommen dürfen.

Hier noch Mal was die Ausgangssituation war:

Ich habe in der Kategorie 1 ein Custom field namens ‘designthumbs‘. In dem Feld ist der Inhalt wie folgt:

Name des Thumbs_a, Stichwort1 Stichwort2 Stichwort3 etc, externerLink_a

Name des Thumbs_b, Stichwort1 Stichwort3 Stichwort7 etc, externerLink_b
etc.

Diese Thumbs sollen in einer Galerie in einer Seite ausgegeben werden:

H3: Stichwort 1:
============
[Thumb_a]
Postlink
externer Link a

[Thumb_b]
Postlink
externer Link b

H3 Stichwort 2
============
[Thumb_a]
Postlink
externer Link a

Ein Archiv mit Thumbs via custom fields für WordPress

tempa wrote this 15:13:

Nachdem ich vor einigen Tagen meine erste eigene WordPress.PHP-Erweiterung für die Sidebar zusammengefriggelt hatte, ging ich munter daran, diesen netten praktischen Code-Schnipsel in eine Seite einzubinden und parallel die ganze Angelelgenheit ein wenig auszubauen. Doch was relativ schnell und einfach in die Sidebar einzubauen ging, erweist sich in der Seite in der erweiterten Form doch als reichlich widerspenstig. Nach etlichen Try&Error-Fehlschlägen und zahlreichen traurigen Teilerfolgen, habe ich es nun beinahe geschafft … beinahe, denn leider looped mein Script noch etwas übereifrig gleich mehrfach und listet die Liste damit mehrfach hintereinander. Ich will mit der Geschichte von Anfang an beginnen. (mehr …)

Mini-Thumbgalerie in WordPress via Custom Fields

tempa wrote this 05:19:

Nach ein wenig try&error und mit der Hilfe einer Vorlage habe ich nun auf Franchie.de eine kleine Galerie in der Sidebar, die die jüngsten sechs Motive, genauer die jüngsten sieben T-Shirtmotive auf der Startseite. Das allerneuste Motiv ist in der rechte Spalte unter dem Feature, die weiteren sechs Motive erscheinen als Thumbgalerie. Nachdem ich über das Branford Magazin Theme die Custom fields etwas genauer unter die Lupe nahm, da war der Weg nicht weit zu den Motivbeiträgen eine Thumbgalerie zu generieren. Wie immer war Google der erste Weg. Die meisten Ergebnisse brachten mich wenig weiter, insbesondere wenn man mit der Aussage, dass Custom fields nur im Loop funktionieren nicht viel anfangen kann.

Und so sieht das Ergebnis aus:

  1. <h3>Die jüngsten sechs Motive</h3>
  2. <ul class="sixthumbs"><li>
  3. <?php
  4. $motive = get_posts('numberposts=7&category=12'); array_shift($motive); foreach($motive as $post) : setup_postdata($post);
  5. $thumbsArr = explode("|", get_post_meta($post->ID, "designthumbs", true));
  6. $cth = count($thumbsArr);
  7. srand((float) microtime() * 10000000);
  8. $rand_keys = array_rand($thumbsArr, $cth);
  9. if($cth>1){
  10. $dthpArr = explode(',', $thumbsArr[$rand_keys[0]]);
  11. }else {$dthpArr = explode(',', $thumbsArr[0]);}
  12. ?>
  13. <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><img src="<?php bloginfo('url'); echo '/'; echo get_option('upload_path'); echo '/';
  14. echo $dthpArr[0]; ?>" alt="<?php the_title(); ?>" /></a>
  15. <?php
  16. endforeach;
  17. ?>
  18. <span style="clear: left;"> </span>
  19. </li></ul>

Zunächst werden die Datenbank-Einträge (der Loop) in die Variable $motive geschrieben. Außerhalb eines Posts oder einer Page, liefert get_posts() alle Einträge, innerhalb eines Posts oder einer Page jeweils die Inhalte des Posts oder der Page. Der Loop wird in der Sidebar daher mit der Anzahl der jüngsten Beiträge und der Einschränkung auf die Kategorie 12 auf das gewünschte Segement der Datenbank reduziert. Nachdem der erste Beitrag bereits auf der Startseite gesondert hervorgehoben wurde, macht es Sinn den jüngsten Eintrag wieder wegzunehmen. Dies geschieht mit array_shift() Anschließend wird mit foreach ... der Array mit den Datenbankeinrägen abgearbeitet. Damit ist der Loop quasi offen und man kann die Funktion get_post_meta() einwerfen. Da mein Feld ein Array ist, mit dem sich eine ganze Reihe Informationen zum Motiv aufarbeiten lässt, schreibe ich die Daten in einen Array und da pro Eintrag nicht immer nur ein Motiv vorgestellt wird, es aber nicht sinnvoll ist, jedes Einzelmotiv bzw. jede Motivvariation in der kleinen Übersicht anzuzeigen und den Rahmen damit sprengen, wird die kleine Thumb-Sammlung noch einmal aufgedröselt und über array_rand() wird jeweils ganz zufällig eines aus der kleinen Sammlung herausgefischt und angezeigt. Das Customfield heißt in meinem Fall ‚designthumbs‘

Das ist nun nicht mehr schwer analog nachzubauen und kann so allerlei Dinge anzeigen lassen. Viel Spass beim Aufmotzen des eigenen Themes. 😉 Und Danke an meine beiden Vorarbeiter, ohne deren Hilfe ich vermutlich noch lange den Codex anstarren würde und nicht wüsste, wovon die Rede ist. Noch immer weiß ich z.B. nicht was hinter der Funktion steckt.

Mit dieser Vorlage ist es nicht mehr sehr schwer, jedwede Übersichten zusammenzutragen. Ich kann an dieser Stelle nur noch viel Spaß wünschen, beim Verbiegen des eigenen Themes.

PS: hier ist noch ein Link zu 28 Wege wie man sein WordPress-Blog mit Custom fields aufpeppen kann.

Die Krux mit dem Eindeutschen

tempa wrote this 03:38:

In Silkester.de verwende ich das Plugin „Technorati Tags„, das den Loop von WordPress verwendet. Intern in WordPress habe ich „tag“ durch „Stichwort“ ersetzt, was im Deutschen durchaus Sinn macht, dabei aber nicht bedacht, dass das Plugin nun die Link-Struktur für Silkester auf Technorati anwendet und damit in einem 404 bei Technorati aufläuft. Die Quick&Dirty-Methode ist es, einfach über str_replace an der Stelle, wo der Link erzeugt wird einzubinden und „stichwort“ gegen „tag“ auszutauschen. Besser wäre es, den Feld-Inhalt zu verwenden, das herauszukramen ist mir jetzt zu mühsam. Es ist unwahrscheinlich, das ich bei Silkester erzählt … die interne Url zu den jeweiligen Stichworten noch einmal ändere. Für da nächste Kundenprojekt werde ich es dann aber wohl heraussuchen müssen.

Javascript: onLoad oder delegate?

tempa wrote this 06:32:

Onload? Sei kein Esel, delegate!Sei kein Esel, delegate

Das so scheint das Fazit zu sein, dass ich meiner jüngsten Suche nach dem onLoad-Script entnehme. Es began mit einem Beitrag vom Mai 2004: addLoadEvent von Simon Wilson. Dann begegnete mir eine Übersicht des Onloads Stand 30. Januar 2007: The window.onload problem (still) von Peter Micheaux. Lesenswert auch wenn einige Bahnhöfe für mich dabei sind. Peter Micheaux publiziert im August des selben Jahres noch einmal zum Thema: The window.onload Problem – Really Solved!, Aha. Interessant … und am Ende der Kommentare stößt man auf eine Kommentar von Diego Perini, die besagt … Pfeiff auf onLoad-Funktionen und delegier: Delegates (Da sämtliche verlinkten Beispiele seiner vorherigen Kommentare verschwunden sind, macht es Sinn, sich die Seite irgendwo lokal für den zukünftigen Zugriff zu speichern, bevor auch diese Seite vom 19. Februar 2008 sich in Luft auflöst.). Ob und in wie weit es wirklich Sinn macht, auf den Eventhandler zu verzichten und schlicht alles zu delegieren, klärt Christian Heilman in seinem Beitrag: Vergleich Eventhandling und Eventdelegation

Schaut man sich weiter um, dann scheint die Delegation aktuell im Gespräch zu sein. Noch weitere Beiträge:

  1. A Look at Sun.COM’s New Event Delegation Library
  2. Poor man’s JavaScript Behaviours
  3. Event-Delegation made easy in jQuery

Bildquelle Esel auf flickr.com vom User Jaxxon

Linktipps: PHP

tempa wrote this 04:28:

Quellen, Listen, Snippets und gute Ratschläge aus dem Netz:

So und damit ist mit der Reihe 1001 Linktipp-Overload für heute erst mal Schluss 🙂

Einen hab ich noch, einen hab ich noch: 5 Coole Sachen machen mit Windows und PHP

Linktipps: Intensivkurs Javascript

tempa wrote this 03:01:

… und kommen wir nun zu Javascript. Zur Einstimmung erst einmal der ultimative Rahmen für jeden Startrek-Fan: Through Space 2 (Source) und noch ein wenig Daddeln mit JS bevor es Ernst wird: Das Labyrinth

Javascript

Ressourcen:

Für Fortgeschrittene vermutlich interessant (mir derzeit schlicht noch zu komplex und ~iziert): Curried Javascript

PHP: Index 0 in Arrays und die humanoide Syntax

tempa wrote this 21:13:

Ich wette, der Programmierer, der sich das mit dem Index „0“ für das erste Element im Array ausdachte, fand das tierisch clever und amüsant. Und weil das in der Welt der Programmierer fortan nun einmal so war und immer noch ist, dass man das erste Element eines Arrays mit $arrayVariable[0] anspricht und das letzte folglich mit $arrayVariable[$Anzahl-1], dürfen alle Manchmal~ und Gelegenheits-Programmierer sich ein Schleifchen an den Finger machen, damit sie diese Tatsache nicht vergessen. Ich für meinen Teil habe bei den ersten Zählübungen im zarten Toddler-Alter verinnerlicht, dass beim Zählen der Gummibärchen in der Hand, das Schnabulieren mit dem ersten Gummibär beginnt und nicht mit dem nullten. Daher zum Trotz und für ein gegrummeltes „Und Überhaupt!“:

  1. <?PHP
  2. $i = 1;
  3. $arrayVariable = array(
  4. $i++ => 'Erstes Element',
  5. $i++ => 'Zweites Element',
  6. $i++ => 'Drittes Element'
  7. );
  8. echo '<pre>$arrayVariable: ';
  9. print_r($arrayVariable);
  10. echo '</pre>';
  11. ?>

Und bei diesem Script stimmt die Ausgabe mit den Zählerfahrungen aus frühster Kindheit wieder überein:

< ?php $tci = 1; $arrayVariable = array($tci++ => ‚Erstes Element‘,$tci++ => ‚Zweites Element‘,$tci++ => ‚Drittes Element‘);
echo ‚

$arrayVariable: ';
print_r($arrayVariable);
echo '

‚;
?>

Für alle, die das erste Mal sich mit PHP beschäftigen und das mit der Null noch ganz neu ist, hier ein paar kleine Erläuterungen zum Skript: (mehr …)

Recent Comments:

  • Silke schümann { Du warst auf dieser Seite: Step1 zur Archiv-Thumbgalerie via Custom fields Marke Eigenbau http://templaterie.de/blog/931/step1-zur-archiv-thumbgalerie-via-custom-fields-marke-eigenbau/ Hier war ich noch am Basteln. Ich fürchte meine PHP-Kenntnisse sind... } – Aug 26, 9:29 AM
  • Andreas { Hey, ich habe den Code wie oben benutzt und auch $dgal = get_posts('category=1′); on der richtigen Zeile eingesetzt nur bei mir läufts immernoch nicht. Kann... } – Aug 26, 3:20 AM
  • Fred { "wer Smarty lernt, kann tatsächlich gleich auch PHP mitmachen, ich hatte es eine zeitlang auch eingesetzt, aber jetzt mach ich es wieder auf meine art... } – Jan 06, 7:14 PM
  • Silke Schümann { Das klingt nach einem Syntaxfehler in der ersten Zeile. Anführungszeichen korrekt? Und das Plugin funktioniert nur innerhalb von Editland. Die index.php ausserhalb von Editland aufzurufen... } – Jun 18, 3:40 PM
  • Jörg { Hallo, ich habe die index.php im ersten Abschitt Nr. 3 beschrieben, angelegt. Beim Aufruf der Seite wird folgende Fehlermeldung angezeigt: Parse error: parse error, unexpected... } – Jun 18, 3:14 PM
  • Michael { Gern geschehen 😉 } – Mai 29, 2:31 PM
  • Silke Schümann { Jepp. Das war's: ES tut! Lösung ist nun in einem eigenen Beitrag: Step1 zur Archiv-Thumbgalerie via Custom fields Marke Eigenbau Fertig und betriebstüchtig! 🙂 } – Mai 29, 1:25 PM
  • Michael { Wie wäre es, wenn Du die Zeile $dgal = get_posts('category=1'); auslagerst und den Rest in eine Funktion packts, der Du $dgal übergibst. Das wäre auch... } – Mai 29, 12:45 PM
  • Silke Schümann { Ich ziehe diees Variante ebenfalls vor, dovh wenn ich Code übernehmen, dann ändere ich hierfür nicht extra. Es dürfte gehzpft wei gesprungen sein, welche man... } – Mai 29, 2:00 AM
  • Ulf { ich würde bei der Syntax für Schleifen konsequent die C-ähnliche Variante mit geschweiften klammern nehmen, nicht die alternative mit Doppelpunkt und "endwhile" bzw. "endforeach". } – Mai 29, 12:00 AM
  • Silke Schümann { Ich habe ich http://franchie.de die Thumbs in der Sidebar erfolgreich ausgelesen. Ansonsten ist die Test-Umgebung unter 1a-test dot de / blog Ich will diese Adresse... } – Mai 28, 11:37 PM