Magento Social Bookmark Extension Tab- und Toolbar (Update 23.02.2011)
Diese Extension ermöglicht, wie auf dieser Seite oder unter demo.snm-portal.de zu sehen eine Tabbar am oberen Bildschirmrand, mit den Tabs 'Translator','Share' und 'Feedback', sowie eine Social Bookmark Leiste für Produkte und CMS-Artikel (siehe unten).
Damit der Seitenaufbau nicht durch Facebook blockiert wird, wird hier auf die gängige Variante über ein iFrame zur Ermittlung der Anzahl der "Shares" verzichtet.
Dies übernimmt ein, nach dem Laden der Webseite, ein kleines JQuery-Script, welches die Counts für Twitter und Facebook nachlädt.
Damit ergeben sich auch neue Gestaltungsmöglichkeiten.
Diese Toolbar kann leicht an das Design einer beliebigen Magento-Seite angepasst werden. Im Normalfall sollte das Anpassen der CSS-Datei genügen. Eine CSS-Abwandlung ist auf dieser Seiten zu finden (rechts oben).
Für die Magento-Version ab 1.5.0.1 steht unter dem
Channel: http://connect2.snm-portal.com/snm_toolbar (26.08 gändert)
diese Extension bereit.
Achtung!
Es wird in der Magento Version 1.5.0.1 noch der Patch für den Downloader für abhänige Extension benötigt.
Anpassungen können leicht über die XML-Layout-Beschreibung vorgenommen werden, so können über die Action "addTab" eigene Tabs integriert werden bzw. durch entfernen der Action z.B. der Translater entfernt werden.
<layout version="0.1.0">
<default>
<reference name="head">
<action method="addJs">
<script>jquery/jquery.easing.1.3.js</script>
</action>
<action method="addCss">
<stylesheet>css/auit/toolbar/styles.css</stylesheet>
</action>
<action method="addJs">
<script>auit/toolbar/toolbar.js</script>
</action>
</reference>
<reference name="top.container">
<block type="auit_toolbar/tab" name="auit_toolbar_tab" as="auit_toolbar_tab" template="auit/toolbar/tab.phtml">
<action method="addTab" translate="title">
<alias>translator</alias>
<title>Open the Translator</title>
<text>Translator</text>
<block>core/template</block>
<template>auit/toolbar/translator.phtml</template>
</action>
<action method="addTab" translate="title">
<alias>share</alias>
<title>Share this page</title>
<text>Share</text>
<block>auit_toolbar/tab_share</block>
<template>auit/toolbar/share.phtml</template>
</action>
<action method="addTab" translate="title">
<alias>feedback</alias>
<title>Give a Feedback</title>
<text>Feedback</text>
<block>core/template</block>
<template>auit/toolbar/feedback.phtml</template>
</action>
</block>
</reference>
</default>
</layout>
Um die entsprechenden Anzahl von Shares für Facebook und Twitter nach zuladen benutzen wir JQuery.
Dabei werden alle Platzhalter gesucht und mit dem zugehörigen Wert gefüllt.
Platzhalter für Twitter:
<a rel="external nofollow" href="<?php echo $_Url; ?>" class="share-twitter" title="<?php echo $this->__('Share on Twitter') ?>">
<span class="i"></span>
<span class="t"><?php echo $this->__('Twitter') ?></span>
<span class="c"><span>0</span></span>
</a>
Platzhalter für Facebook:
<a rel="external nofollow" href="<?php echo $_Url; ?>" class="share-facebook" title="<?php echo $this->__('Share on Facebook') ?>">
<span class="i"></span>
<span class="t"><?php echo $this->__('Share') ?></span>
<span class="c"><span>0</span></span>
</a>
Das entsprechende Javascript:
Dabei wird für Facebook, alle Links mit der Klasse "share-facebook" gesucht, das Ergebnis kommt dann in den SPAN mit der Klasse "c".
(function($) {
jQuery(document).ready(function() {
updateFBCount();
updateTwitterCount();
});
function updateFBCount() {
var fbUrls='',lnk,href,fblinks=[];
$('a.share-facebook').each(function(idx) {
var p = getQueryParams(this.href);
if ( p.u ) {
$(this).find('span.c span').each( function(){
if ( !fblinks[p.u] )
fblinks[p.u]=[];
fblinks[p.u].push(this);
});
}
});
fbUrls='';
for ( lnk in fblinks ) {
if (!fblinks.hasOwnProperty(lnk)) continue;
if ( fbUrls)
fbUrls += ',';
fbUrls += encodeURIComponent(lnk);
}
if ( fbUrls )
{
$.ajax({
url: "http://api.facebook.com/restserver.php?"+'v=1.0&method=links.getStats&format=json&urls='+fbUrls,
dataType: "jsonp",
success: function (data, textStatus, XMLHttpRequest) {
if ( data && data.length )
for ( var i=0; i < data.length;i++ )
{
var item = data[i];
var a = fblinks[item.url];
if ( a && item.total_count){
$.each(a,function( ){
$(this).text(item.total_count);
});
}
}
},
error: function (XMLHttpRequest) {
}
});
}
}
function updateTwitterCount() {
var lnk,href,fblinks=[];
$('a.share-twitter').each(function() {
var p = getQueryParams(this.href);
if ( p.url ) {
$(this).find('span.c span').each( function(){
if ( !fblinks[p.url] )
fblinks[p.url]=[];
fblinks[p.url].push(this);
});
}
});
for ( lnk in fblinks ) {
if (!fblinks.hasOwnProperty(lnk)) continue;
$.ajax({
url: 'http://urls.api.twitter.com/1/urls/count.json?url='+lnk,
dataType: "jsonp",
mainLnk:lnk,
success: function (data, textStatus, XMLHttpRequest) {
if ( data && data.count )
var a = fblinks[this.mainLnk];
if ( a ){
$.each(a,function( ){
$(this).text(data.count);
});
}
},
error: function (XMLHttpRequest) {
}
});
}
}
function getQueryParams(qs) {
var params = {};
qs = qs.split("?");
if ( !qs || qs.length < 2 )
return params;
qs = qs[1].split( '&' );
for ( var i=0; i<qs.length; i++ ) {
var name = qs[i].split('=')[0];
var value = qs[i].split('=')[1];
params[name] = value;
}
return params;
}
})(jQuery);
Is there any update planned? Is it working with 1.6.1.0?
Because an update to be able to take off wing and the toolbar would be nice...
Könnte evtl. die jQuery Datei angepasst werden, damit sich diese nicht mit anderen jQuery Dateien überschneidet? Ich habe hier bei einem Projekt das Problem, das viele Extensions jQuery verwenden und das jQuery für diese Extension nicht funktioniert. Somit werden die ganzen Counter für Facebook und Twitter nicht aktualisiert. Google+1 geht, da dies ja nicht über jQuery nachgeladen wird. Die Funktion mit <action method="addJs"><script>jquery/jquery-noconflict.js</script></action> funktioniert leider nicht.
AUIT
Ja das ist ein allgemeines Problem. Jeder legt die jQuery-Dateien in einen eigenen Bereich ab.
Da hilft nur der manuelle Eingriff über das Layout-XML-File
Hallo,
Wie kann ich die obere Tab (translation, share, ...) und den compare Button ausschalten?
Danke fuer die Antwort.
MfG
C
AUIT
Im Layout file
Hallo zusammen,
die Installation hat super geklappt. Leider scheinen die Counts von Facebook und Twitter nicht korrekt nachgeladen zu werden. Kann es sein, dass das länger als ein paar Minuten dauert, bevor ein neues Share registriert wird?
Ansonsten könnte es noch mit dem Minify des Javascripts zusammenhängen.
Irgendwelche Ideen?
Gruß
Bernd
PS: Großes Lob für die Extension
AUIT
Das sollte max. ein paar Sekunden dauern
Hello,
I first installed this module without any template, it worked perfectly...
Today i tried to install a template to my website and the module isn't working anymore. Nothing on the product page and nothing elsewhere. I tried to reinstall it or change some files emplacement but maybe i'm not doing it right...
How can i make it work? I really liked having this...
Regards,
Der
AU-IT
Toollbar and Tab?
Please check the Layout-XML structure
Hallo,
I've installed the toolbar extension and at the productpage it is fine but the homepage isn't good. The slider isn't working (2 single frames) and there is a white bar above it now. Why is that?
Greetings,
Monique
AU-IT
Please check your CSS or you have conflict with other javascript.
Open the firebug and look for the problem.
Good extension, but I got an error @ line 27 of toolbar.js
var hidTop = $('#auit-toolbar').offset().top;
and G+! doesnt appear in IE8
AU-IT
Thanks
hi, bei mir wird in der Artikel LISTE, die Social bookmark toolbar nicht angezeigt..., wie bekomme ich die da ohne probleme rein? eine kurze hilfestellung wäre ganz nett.
Im Produkt selbst ist alles super..., nur eben nicht in der kategorieansicht, in der alle Produkte angezeigt werden, da hätte ich diese Leiste auch gerne.habe schon versucht die list.phtml zu ändern, die im app/design/frontend/base/default/template/catalog/product liegt, aber das haut nicht hin..., EIn Tipp wäre super, oder eine kurzanleitung wie ich das da rein bekomme...
AU-IT
Da gibt es einen kleinen Tip in
app/design/frontend/base/default/layout/auit_toolbar.xml
Öffne dein
<your design>/template/catalog/product/list.phtml
und den folgenden Code an die gewünschte Stelle einfügen:
<?php if ( ($child = $this->getChild('auit_toolbar_social_toolbar')) ) : ?>
<?php echo $child->setProduct($_product)->toHtml();?>
<?php endif;?>
copy paste into your magento connect manager. It works fine with Magento V.1.5.1
Hello.
I'm very interested in your Social Bookmark Toolbar extension, however, the download page at http://www.snm-portal.de/magento-channel/snm_toolbar is appearing as a blank white page. Is there another way to download it?
Danke.
AU-IT
Please use Magento 1.5