Widgets in WordPress Themes ermöglichen

Da ich gerade selbst darüber gestolpert bin: Widgetizing Themes

Wie kann ich Widgets in meinem WordPress Theme nutzen?

Gehen wir von folgendem Sidebar-Code aus:

<ul id="sidebar">
 <li id="about">
  <h2>About</h2>
  <p>This is my blog.</p>
 </li>
 <li id="links">
  <h2>Links</h2>
  <ul>
   <li><a href="http://example.com">Example</a></li>
  </ul>
 </li>
</ul>

Mit zwei kleinen Änderungen aktivieren wir Widgets in unserer Sidebar:

<ul id="sidebar">
<?php if ( !function_exists('dynamic_sidebar')
        || !dynamic_sidebar() ) : ?>
 <li id="about">
  <h2>About</h2>
  <p>This is my blog.</p>
 </li>
 <li id="links">
  <h2>Links</h2>
  <ul>
   <li><a href="http://example.com">Example</a></li>
  </ul>
 </li>
<?php endif; ?>
</ul>

Hier die zwei Zeilen noch einmal:

<?php if ( !function_exists('dynamic_sidebar')
        || !dynamic_sidebar() ) : ?>
[...]
<?php endif; ?>

Wenn nun in den Theme-Einstellungen Widgets hinzugefügt werden, werden diese angezeigt, ansonsten die statische Sidebar.

Wollen wir aber unsere komplizierte Sidebarstruktur behalten, die uns eben ganz bestimmte Inhalte in ganz bestimmten Bereichen (Seiten, Blogbereich oder Archiven; siehe Conditional Tags) ausgeben, dann nutzen wir diese zwei Zeilen einfach an einer beliebigen Stelle innerhalb unseres Kontrukts.
Mein Beispiel: Mein Blogbetreiber hat verschiedene inhaltliche Bereiche, die jedesmal mit anderen Sidebarinhalten zusammen gehören. Uns an einer einzigen Stelle (in normalen Blogbetrieb) will er eigenen HTML-Code anzeigen.

Beachte: Wenn wir Widgets nutzen wollen, müssen wir dies in der functions.php unseres Themes aktivieren. Siehe Widgetizing Themes

WordPress, Polyglot und Templates

So, nach langem Suchen habe nicht ich die Lösung gefunden, sondern wieder einmal der toocan.

Problem: Wer mehrere Sprachen in einem WordPress-Blog verwenden möchte, landet früher oder später bei Polyglot (wie ich) oder Language Switcher. Dann müssen aber Templates angepasst werden, damit der Besucher eben alles in seiner Sprache lesen kann. Das geht zum einen über gettext und ist verdammt aufwendig (immerhin müssen die Sprachdateien und die Ausgaben im Template angepasst werden…. bäh)

Oder man nutzt die Polyglot-interne Möglichkeit eines Filters: polyglot_filter()

Will man also in der Sidebar alle Kategorien anzeigen lassen und hat dazu den Titel „Kategorien“ vorgesehen, benötigt aber dasselbe für englischsprachige Besucher, dann könnte das so aussehen:

polyglot_filter('[lang_de]Kategorien[/lang_de][lang_en]Categories[/lang_en]')

Das kommt einfach ins Template an die Stelle, an der nachher die Liste mit den Kategorien erscheinen soll, also irgendwo vor wp_list_categories().

Übrigens:
Das funktioniert nicht nur in Themes, sondern auch in Plugins, die Daten aus der Datenbank holen und eben nicht für die Mehrsprachigkeit vorbereitet haben, sondern sie fein mit den bekannten polyglotschen eckigen Klammern zur Sprachzuordnung anzeigt. Das ist nicht nur hässlich, sondern auch verwirrend.

Nun, aber fein ans Übersetzen.

ACL im ZF auf Actionebene

Nun, da ich schon einige Male gefragt wurde, wie am besten zu lösen (wobei ich nicht sagen kann, ob dies die beste Lösung ist), poste ich mal ‚unsere‘ Möglichkeit:


[...]
$acl_resources = array();
 foreach ($this->getFrontController()->getControllerDirectory() as $module => $cntrl_path)
 {
    $files = scandir($cntrl_path);
    foreach ($files as $file)
    {
        if (preg_match('/^([\\w]*)Controller\.php$/i',$file,$hits))
        {
          $classPrefix = ($module == 'default') ? '' : ucfirst($module).'_';
          $className = $classPrefix.$hits[1].'Controller';
          require_once($cntrl_path.DIRECTORY_SEPARATOR.$file);
          if (class_exists($className))
          {
            $refl_class = new ReflectionClass($className);
            foreach ($refl_class->getMethods() as $refl_method)
            {
                if (preg_match('/^([\\w]*)Action$/i',(string) $refl_method->getName(),$matches))
                {
                    $acl_resources[$refl_method->getDeclaringClass()->getName()][] = array(
                                                                                           'action'         => $matches[0],
                                                                                           'action_short'   => strtolower($matches[1])
                                                                                           );
                }
            }
          }
        }
    }
}
[...]

Wenn’s gefällt, viel Spass – ansonsten bin ich über Kommentare/ Kritik sehr erfreut.

Gruß tucci

Wetterdaten für Website-Designs nutzen

Kommt ein wenig bekannt vor, denn die Macher von The Unseen Video hatten bereits vor einiger Zeit die Wetterdaten der Besucher genutzt, um ganz unterschiedliche Erscheinungsbilder ihres Werkes zu erzeugen. Die Ergebnisse konnte man kurz darauf in einer Flickr-Gruppe betrachten.

Wie man selbst die eigene Website je nach Wetterlage unterschiedlich aussehen lässt, zeigt David Walsh bei CSS-Tricks: Using Weather Data to Change Your Website’s Appearance through PHP and CSS.
Das Beispiel zeigt verschiedene Header für die Wetterbeschreibungen Sunny, Rain, Snow, and Cloudy.

Mittels PHP werden die zuvor abgeholten Wetterdaten zu eine CSS-Klassen umgewandelt und können dann als Variable im HTML für die Darstellung verschiedener Wetterlagen genutzt werden. Eine nette kleine Spielerei.

Wieder was gelernt: Strato und PHP5

Ich weiß, man sollte keinen Strato-Webhosting-Vertag haben. Der Kunde wusste das leider nicht. Also muss man eben nehmen, was einem geboten wird.

Und dass die Kundenverwaltung bei eben jenem Anbieter nicht besonders nutzerfreundlich ist, wissen wir auch. Aber wo zum Teufel findet man die Möglichkeit, alle PHP-Skripte generell mit PHP5 laufen zu lassen?

Ja man könnte es über die .htaccess aktivieren. Beispielsweise so:

AddType application/x-httpd-php5 .php .php4 .php3 .php5

Aber auch im Kundenbereich gibt es das: „So einfach bestimmen und wechseln Sie die PHP-Version“ sagt die FAQ.
Über die Menüpunkte Homepagegestaltung und Website-Configurator findet man die PHP-Konfiguration. Dann noch gefühlte 50 Einstellungen vornehmen (ein paar Klicks können sich verdammt viel anfühlen), fertig.

„Einfach“ ist aber was anderes.

Nachtrag: Richtig komisch wird es, wenn man mod_rewrite nutzen will. Dass das bei Strato nicht geht, wusste ich. Dass das Modul allerdings installiert und aktiv ist, allerdings der normale Nutzer es eben nicht nutzen darf, ist wie ein „Betretn verboten“-Schild auf der Grünfläche im Freibad.

Bookmarks #7: Neues und Altes

Rund um die Jahreswende sind alte Themen aufgegriffen worden. Aber auch Neues kam auf. Hier eine kleine Zusammenstellung:

Erwähnt sei außerdem dieses Geek-Kissen in klassischem Schwarz mit dem wohlklingenden Namen Dosugus.

Unbekannte Googlesuche [gelöst]

Ich hab die Lösung für die erweiterte Linkangabe bei manchen Suchergebnissen nun selbst gefunden. In den Webmaster Tools von Google findet sich unter dem Punkt Links -> Sitelinks folgender Text:

Sitelinks [?]

Sitelinks sind zusätzliche Links, die Google mitunter aus dem Inhalt von Websites erstellt, um Nutzern die Navigation zu Ihrer Website zu erleichtern. Google generiert diese Sitelinks in regelmäßigen Abständen aus dem Content Ihrer Website.

Da Sitelinks dynamisch erstellt werden, kann sich diese Liste von Zeit zu Zeit ändern.

Google hat keine Sitelinks für Ihre Website generiert. Sitelinks sind vollständig automatisiert. Wir zeigen sie lediglich dann an, wenn wir der Meinung sind, dass sie für den Nutzer hilfreich sind. Falls die Struktur Ihrer Website keine Algorithmen zur Suche nach guten Sitelinks zulässt oder wir nicht der Meinung sind, dass Sitelinks für die Suchanfrage des Nutzers relevant sind, zeigen wir sie nicht an. Wir arbeiten jedoch ständig daran, Erstellung und Anzeige von Sitelinks zu verbessern.

Jetzt wäre es allerdings von Vorteil zu wissen, wie man die Suche nach Sitelinks auf einer Website ermöglicht/verbessert.
Etwas mehr Inormationen erhält man im Blog für SEO, SEM und themenrelevantes: Google SiteLinks.

Nachtrag: Wie man seine Seite für Sitelinks qualifiziert, erfährt man im Beitrag Google Sitelinks and How to Get Them! beim LooMag.
Zusammenfassend kann man sagen, dass Links, die sich für Google Sitelinks qualifizieren sollen, mindestens zweimal auf jeder Seite verlinkt sein sollten. Auch ist das Format nicht unerheblich: Am besten eignet sich laut LooMag das Pipe-Zeichen „|“ zur Trennung der relevanten Links, die auf allen Seiten im gleichen Format eingebunden sein sollten.

Sehr schön zu sehen an der Website des Homöopathieherstellers Heel, der alle Links aus linker und oberer, horizontaler Navigation auch in der Googlesuche vertreten ist.

Bookmarks #6: Hilfen für Entwickler

Und wieder einmal eine kleine Sammlung an hilfreichen Tipps für Webentwickler. Von MySQL und PHP bis hin zu den kleinen Hindernissen im Arbeitsalltag.

Und ein Schmankerl zum Schluss: IT in the Real World.