Das Örtchen RSS-Feed
Kategorie
Kategorie: Blog
Buttons & Statistiken
Neueste Kommentare

Drupal 7: Einbindungsmöglichkeiten für das Favicon

Mein zweites Problem war eher zweitrangiger Natur, nervte mich jedoch schon bei Drupal 6. Bei Problem Nr. 2 ging es nämlich um eine möglichst flexible Einbindung des Favicons (Problem Nr. 1 habe ich im Breadcrumb-Beitrag beschrieben).

Vier Varianten der Einbindung

  1. Wir packen das Favicon einfach auf die oberste Ebene unserer CMS-Installation (entspricht dem Root unserer Domain) und verlassen uns darauf, daß die meisten Browser sowieso dort nachschauen.
  2. Wir packen das Favicon an eine beliebige Position innerhalb unserer CMS-Installation und geben die Position mittels manuell eingebautem Meta-Tag in unserem Theme an. Bei Drupal 7 würde dies in der Template-Datei html.tpl.php geschehen.
  3. Wir legen das Favicon in den Hauptordner unseres verwendeten Themes und aktivieren in der Administration unter Design -> Einstellungen die Anzeige des Favicons und weiter unten bei den Favicon-Einstellungen die Benutzung des Standard-Favicons.
  4. Anstatt des Standard-Favicons geben wir an der gleichen Stelle den Pfad zu unserem Favicon an oder laden direkt eine neue .ico-Datei hoch.

Die Probleme

Leider haben alle diese Varianten für mich persönlich den einen oder anderen Nachteil:

  1. Wir benötigen FTP-Zugang, um das Favicon zu tauschen (hat meine Designerin meist nicht).
  2. Wir benötigen FTP-Zugang und müssen die Theme-Datei für jede Änderung manuell anpassen.
  3. Wir benötigen FTP-Zugang und müssen wissen, wo die Datei (und unter welchem Namen sie) zu finden ist.
  4. Wir benötigen FTP-Zugang und haben wie bei allen Varianten außer Nr. 1 ständig Log-Meldungen (im Watchdog), wenn mal wieder ein Browser auf der obersten Ebene nach dem Icon gesucht hat.

Die Lösung

Aus meiner Sicht gibt es nur eine möglichst flexible Lösung für dieses Problem und zwar auf Basis von Ansatz Nr. 4. Hier fehlt mir nämlich lediglich eine Vermeidung der Log-Meldungen.

Genau hier setzt das Modul Favicon an. Mittels einer Änderung der .htaccess-Datei und dem Modul sollten theoretisch alle Anfragen an www.example.com/favicon.ico auf den hinterlegten Pfad umgeleitet werden.

Leider war dies beim meiner Drupal-Installation nicht der Fall, stattdessen kam immer eine 404er Meldung (Datei nicht gefunden). Also begann ich auch hier mit der Fehlersuche und wurde in der Datei favicon.module fündig. In der Zeile 21 steht dort nachfolgender Code:

 $favicon = theme_get_setting('favicon_path'); 

Bei meinen Tests war der Rückgabewert des Funktionsaufrufs immer ein leerer String. Hierzu habe ich erstmal eine Meldung im Bugtracker des Moduls gemacht. Wenn man sich den Code der Funktion theme_get_setting anschaut, bedeutet der leere String einen misslungenen Zugriff auf den Drupal-Cache.

Zur Lösung hab ich bisher nur einen dirty Hack gefunden, bei welchem ich nachfolgenden Code direkt unter Zeile 21 eingefügt habe:

 if (!$favicon) {
  $theme_settings = variable_get('theme_settings', array());
  $favicon = $theme_settings['favicon_path'];
} 

Hinweis: Dies funktioniert allerdings nur, wenn der Pfad bei den allgemeinen Theme-Einstellungen hinterlegt wird und nicht bei den Einstellungen für das verwendete Theme. Ich habe allerdings keine Ahnung, wieso an dieser Stelle der Zugriff auf eine einzelne Theme-Einstellung fehlschlägt und die Abfrage aller Einstellungen klappt.

Fazit

Meiner Meinung nach liegt hier ein Bug im Drupal-Core vor, da ich mit meinem Code nur das mache, was die Funktion theme_get_setting eigentlich sowieso schon macht. Oder habe ich etwas übersehen?

Hallo! Bist du neu hier? Dann abonniere doch den RSS-Feed dieses nicht mehr ganz so stillen Örtchens, um über meine geistigen Ergüsse auf dem Laufenden zu bleiben. Alternativ besteht auch die Möglichkeit, sich von FeedBurner per E-Mail über meine Ausscheidungen benachrichtigen zu lassen.

Neuen Kommentar schreiben

Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt.
Der Inhalt dieses Feldes wird öffentlich zugänglich angezeigt, aber als rel="nofollow" markiert.
Hinweis

Kommentare beleben den Blog! Ich freue mich über jeden Kommentar. Du kannst hier offen Deine Meinung zum Artikel sagen, aber bitte beachte die Netiquette und vermeide es andere zu beleidigen.

Bitte unterlasst es die Kommentare zu SEO-Zwecken zu missbrauchen. Kommentare mit Links, die nicht zu Blogs führen (oder zu Blogs mit Grauzonen-Themen) und/oder Keywords als Namen verwenden, sind nicht erwünscht!

Möchtest Du mir einen Blog-Artikel schmackhaft machen, dann schreib die URL ohne HTML-Tag in den Kommentarbereich und ich werde diesen bei Gefallen verlinken.