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_-]+)=|',
'&$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?



Danke für den Link und für die nützlichen Angaben
redpanda (Gast), 14. Juni 2010 - 20:35
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
Jan, 14. Juni 2010 - 21:36
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
Igor Klajo (Gast), 17. Juni 2010 - 11:30
Danke für die Lösung. Diese ist besser als wenn man am module core was ändert.
Kommentar hinzufügen