Das Örtchen RSS-Feed
Suchen
Blog
Ähnliche Beiträge
Neueste Kommentare
Neueste Einträge
Populäre Einträge
Tagwolke
addon auswertung barcamp blog bug cms cms made simple datenkrake drupal feed film firefox frickeln friday gewinnspiel hardware how-to individualisierung meinung mmo modul nas php problem rss se7en server sicherheit sicherung software spiel teil theme trailer unterhaltung update windows windows 7 wordpress wow
Monatsarchiv

Drupal: Social Bookmarks können sexy sein

Seit ich FeedBurner für meinen RSS-Feed nutze, habe ich auch Feed Flare aktiv. Dort habe ich Delicious, Digg und Stumbleupon als Bookmark-Dienste aktiv und wollte diese nun auch gerne am Ende jedes Blog-Beitrags einbinden. Deswegen habe ich in letzter Zeit bei den von mir besuchten Blogs die Augen aufgehalten und mir die dortigen Einbindungen angesehen. Dabei gefiel mir SexyBoorkmarks, welches ursprünglich von Josh Jones als Plugin für Wordpress geschrieben wurde, grundsätzlich am besten.

Die Recherche

Eine kurze Suche über Big G bestätigte mir dann auch schnell, daß es ein entsprechendes Drupal-Modul gibt, welches auf redpanda.ch kurz vorgestellt wurde. Leider wollte das Modul bei mir nicht sofort funktionieren, weswegen ich erstmal weitersuchte.

Als nächstes sah ich mir die Projekteseite von Service Links an. Dort störte mich jedoch etwas, daß sich das Modul auf den US-Markt konzentriert und deutsche Dienste nur in der Dev-Version enthalten sind. Für Drupal 4 und 5 hatte man sich auf Infopirat.com dieses Problems angenommen und für Drupal 6 gab es eine gehackte Version auf NetzWahn. Doch auf solch fremdgepflegten Code stehe ich nicht sonderlich, da man so nicht sofort die aktuellste Release-Version installieren kann.

Also sah ich mich weiter um und entdeckte noch die Module AddToAny und AddThis, welche aber beide einen externen Dienst nutzen und auf JavaScript basieren.

Das Problem

So sah ich mir erneut SexyBookmarks an und versuchte zu debuggen, wieso nirgends die Grafiken der Dienste angezeigt wurden und zudem mein Layout nach der Modul-Aktivierung leicht zerschossen wirkte.

Beim Lesen des HTML-Quelltextes fiel mir lediglich auf, daß die erzeugen Links nicht valide waren, da das kaufmännische Und nicht durch die HTML-Entity "&" umschrieben wurde. Doch dies hatte nichts mit den eigentlichen Problemen zu tun.

Danach untersuchte ich den CSS-Code mittels Firebug und entdeckte, daß die URL-Angaben der Bilder fehlerhaft waren. Bei genauerer Untersuchung des Modul-Codes stellte ich fest, daß alle diese Angaben mittels der Drupal-Funktion url() generiert werden. Diese muss jedoch in einer mehrsprachingen Umgebung (i18n oder ähnliches) mit zusätzlichen Infos zur Sprachangabe versorgt werden, was im Modul derzeit nicht geschieht. Mittels eines Hacks des Modul-Codes wäre das Problem relativ schnell lösbar gewesen, doch ich hatte eine andere Lösung im Auge.

Die Lösung

Beim Ansehen des PHP-Codes war mir aufgefallen, daß Deciphered den HTML- und CSS-Code über Theme-Dateien generieren lässt. Somit müsste ich diese Dateien im Ordner meines verwendeteten Themes lediglich überschreiben, um dort die Probleme beheben zu können.

Also kopierte ich die drei Dateien (sexybookmarks.tpl.php, sexybookmarks_css.tpl.php und sexybookmarks_admin_css.tpl.php) aus dem theme-Unterordner des Moduls in den Ordner des von mir verwendeten Themes (sites/all/themes/custom/mytheme).

Dann ergänzte ich in den kopierten CSS-Templates sexybookmarks_css.tpl.php und sexybookmarks_admin_css.tpl.php die Icon-URL-Angaben hinter background-image mit einem preg_replace, der das Länderkürzel entfernt.

Vorher:

<?php print $bookmark['icon']; ?>

Nachher:

<?php
    print preg_replace(
        '|^(.*/)[a-z]+/sites|',
        '$1sites',
        $bookmark['icon']
    );   
?>

Gleiches machte ich auch noch für das Weitersagen-Hintergrundbild in der sexybookmarks_css.tpl.php.

Vorher:

<?php print $settings['background']['file']; ?>

Nachher:

<?php
    print preg_replace(
        '|^(.*/)[a-z]+/sites|',
        '$1sites',
        $settings['background']['file']
    );   
?>

Auch das Problem mit den nicht validen Links konnte ich in der sexybookmarks.tpl.php lösen.

Vorher:

<?php print $bookmark['url'] ?>

Nachher:

<?php
        print preg_replace(
            '|&([a-z_-]+)=|',
            '&amp;$1=',
            $bookmark['url']
        );
    ?>

Abschließend kümmerte ich mich noch um mein zerhacktes Layout, was definitiv ein Floating-Problem sein musste. Deswegen entfernte ich zunächst das clear-block in der sexybookmarks.tpl.php und dann das clear: both; in der sexybookmarks_css.tpl.php. Dies sollte aber bei einem normalen Theme wie beispielsweise Garland nicht nötig sein.

Hinweis: Alle Änderungen werden erst aktiv, nachdem man den Cache geleert hat und gegebenenfalls im Ordner sites/default/files/css alle Dateien manuell gelöscht hat.

Fazit

Ich denke das erzielte Ergebnis ist wirklich sexy und war die Mühe wert. Nun würde ich nur gerne von meinen Lesern erfahren, welche Dienste denn überhaupt in Deutschland Verwendung finden?

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.

Kommentare (3)

Danke für den Link und für die nützlichen Angaben

Interessante Sache deine Lösung. Das wird sicher noch vielen Leuten helfen.

Und natürlich noch recht herzlichen Dank für deinen Link auf redpanda.ch. Werde selbstverständlich das stille Örtchen gleich mal abonnieren.

Bis dann.
Gruss
redpanda

Re: Drupal: Social Bookmarks können sexy sein

Gern geschehen und danke für die Vorstellung des comment_notify-Moduls (wird definitiv als eines der nächsten Module hier eingebaut).

Re: Drupal: Social Bookmarks können sexy sein

Danke für die Lösung. Diese ist besser als wenn man am module core was ändert.

Kommentar hinzufügen

(If you're a human, don't change the following field)
Your first name.
Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt.
Der Inhalt dieses Feldes wird öffentlich zugänglich angezeigt, aber als 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 und/oder Links im Kommentarbereich enthalten, sind nicht erwünscht!

Möchtest Du mir einen Blog-Artikel schmackhaft machen, dann schreib die URL ohne Link-Tag und ohne http(s):// in den Kommentarbereich und ich werde diesen bei Gefallen verlinken.

Die ersten vier Kommentare (mit den gleichen Daten bei Name, E-Mail und Blog) landen vor der Veröffentlichung in meiner Freigabe-Warteschlange und ich behalte mir das Recht vor, Kommentare entsprechend dieser Regeln anzupassen oder zu löschen!