Page 1 of 2
[Erledigt] Facebook: 2Klick Lösung von Heise
Posted: Tue Feb 05, 2013 9:24 am
by HadleyB
Ich probiere mich mal wieder dumm und dämlich, aber wenn ich das Script:
Code: Select all
<head>
…
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.socialshareprivacy.js"></script>
<script type="text/javascript">
jQuery(document).ready(function($){
if($('#socialshareprivacy').length > 0){
$('#socialshareprivacy').socialSharePrivacy();
}
});
</script>
…
</head>
<body>
…
<div id="socialshareprivacy"></div>
…
</body>
in meine
index.tpl einfüge, bekomme ich eine leere Seite, nichts geht mehr. Aber da gehört es doch hin, oder nicht?
http://www.heise.de/extras/socialshareprivacy/
Re: Facebook: 2Klick Lösung von Heise
Posted: Tue Feb 05, 2013 9:49 am
by kleinerChemiker
du mußt { und } durch {ldim} und {rdim} ersetzen oder den ganzen block escapen (weiß aber nicht auswendig wie)
Re: Facebook: 2Klick Lösung von Heise
Posted: Tue Feb 05, 2013 10:46 am
by yellowled
kleinerChemiker wrote:du mußt { und } durch {ldim} und {rdim} ersetzen oder den ganzen block escapen (weiß aber nicht auswendig wie)
Code: Select all
<script>{literal}
…
{/literal}</script>
YL
Re: Facebook: 2Klick Lösung von Heise
Posted: Tue Feb 05, 2013 10:48 am
by Timbalu
du meinst {ldelim} - {rdelim} oder gibt es da ene Kurzform?
Ansonsten {literal} - {/literal} für den Block wie YL sagt, oder mit s9y 1.7 und Smarty3 {leerzeichen und leerzeichen} oder }; oder }irgendeinZeichen

Re: Facebook: 2Klick Lösung von Heise
Posted: Tue Feb 05, 2013 11:20 am
by HadleyB
Das funktioniert beides nicht.
Für die INDEX.TPL
Code: Select all
<script>{ldelim}
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.socialshareprivacy.js"></script>
<script type="text/javascript">
jQuery(document).ready(function($){
if($('#socialshareprivacy').length > 0){
$('#socialshareprivacy').socialSharePrivacy();
}
});
</script>
{rdelim}</script>
Für die ENTRIES.TPL
Code: Select all
<script>{ldelim}
$('#socialshareprivacy').socialSharePrivacy({
services : {
twitter : {
'status' : 'off'
},
gplus : {
'status' : 'off'
}
}
});
{rdelim}</script>
Aber das ist sicher falsch. Wenn ich das einsetze, bekomme ich eine leere Seite.
Re: Facebook: 2Klick Lösung von Heise
Posted: Tue Feb 05, 2013 11:24 am
by Timbalu
...zurück auf Anfang und noch einmal (genauer) lesen, Hadley

Re: Facebook: 2Klick Lösung von Heise
Posted: Tue Feb 05, 2013 11:26 am
by HadleyB
Alle { und } ersetzen? Oh! Ich teste.....
Das funktioniert alles nicht. Ich werde erstmal auf diese Funktion verzichten. Danke für Eure Mühe.
Re: [Aufgegeben!] Facebook: 2Klick Lösung von Heise
Posted: Tue Feb 05, 2013 12:58 pm
by Timbalu
Ich weiß nicht warum du dir soviel Mühe machst es einfach falsch verstehen zu wollen... um dann immer gleich das Handtuch zu schmeißen...?!
Code: Select all
<script>{literal}
…
{/literal}</script>
ist das einzig Wahre in diesem Fall, denn dann brauchen Javascript { } keinerlei Umwandlung, um erfolgreich von Smarty (als non-Smarty-delimiter!) ausgelesen zu werden.
Diese
einzelnen {ldelim} = { und {rdelim} = } sind nur wirklich sinnvoll zu benutzen, falls man im Javascript code auch Smarty Anweisungen hat. Ansonsten droht halt bei jedem vergessenen bracket eine weiße Seite.
Re: [Aufgegeben!] Facebook: 2Klick Lösung von Heise
Posted: Tue Feb 05, 2013 1:47 pm
by HadleyB
Ich mache jetzt seit Stunden mit diesen paar Codeschnipseln rum und ich hatte Hunger.
In der INDEX.TPL steht jetzt:
Code: Select all
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.socialshareprivacy.js"></script>
<script type="text/javascript">{literal}
jQuery(document).ready(function($){
if($('#socialshareprivacy').length > 0){
$('#socialshareprivacy').socialSharePrivacy();
}
});
{/literal}</script>
In der ENTRIES.TPL steht:
Code: Select all
<script>{literal}
$('#socialshareprivacy').socialSharePrivacy({
services : {
facebook : {
'perma_option': 'off'
},
twitter : {
'status' : 'off'
},
gplus : {
'display_name' : 'Google Plus'
}
},
'cookie_domain' : 'heise.de'
});
{/literal}</script>
Ich habe jetzt zwar keine "weiße Seite" mehr, es geht aber immer noch nicht.
Re: Facebook: 2Klick Lösung von Heise
Posted: Tue Feb 05, 2013 1:56 pm
by Timbalu
Aber nu weißt du, dass es nicht mehr an Smarty liegt!
Guck mal hier
Das kann doch so nicht stimmen, wenn das bei dir laufen soll...
Re: [Aufgegeben!] Facebook: 2Klick Lösung von Heise
Posted: Tue Feb 05, 2013 2:00 pm
by yellowled
HadleyB wrote:
Code: Select all
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.socialshareprivacy.js"></script>
<script type="text/javascript">{literal}
jQuery(document).ready(function($){
if($('#socialshareprivacy').length > 0){
$('#socialshareprivacy').socialSharePrivacy();
}
});
{/literal}</script>
1. Du musst, nein,
solltest jQuery nicht einbinden. Aktuelle Versionen von s9y kommt bereits mit jQuery, zweimal einbinden ist unsinnig und bremst das Seitenrenderung massiv aus.
2. Der Pfad zu jquery.socialshareprivacy stimmt sehr wahrscheinlich nicht, je nachdem, wo Du die Datei abgelegt hast. Die simpelste Lösung ist, sie ins Template-Verzeichnis zu packen. Dann wird sie so eingebunden:
Code: Select all
<script type="text/javascript" src="{$serendipityHTTPPath}templates/{$template}/jquery.socialshareprivacy.js"></script>
Ohne die korrekte Einbindung des Plugins klappt natürlich auch der folgende script-Aufruf nicht.
3. Der doppelte Aufruf von .socialSharePrivacy(); in index.tpl und entries.tpl ist unsinnig.
4. Der Aufruf in der entries.tpl muss ebenfalls in
Code: Select all
jQuery(document).ready(function($){
if($('#socialshareprivacy').length > 0){
// …
}
});
erfolgen, da das mit s9y gebundlete jQuery im noConflict-Modus arbeitet. Ich wäre mir unsicher, ob das if-Statement so überhaupt nötig oder sinnvoll ist.
5. Ob die Einbindung in der entries.tpl überhaupt sinnvoll ist, kommt ein wenig darauf an, ob #socialshareprivacy nur in der Einzelansicht von Artikeln angezeigt wird oder auch auf Übersichtsseiten – falls letzteres, muss es definitiv in die index.tpl.
YL
Re: Facebook: 2Klick Lösung von Heise
Posted: Tue Feb 05, 2013 2:28 pm
by onli
Nur für das Log (mir ist bewusst, dass das Findmore-Plugin bei dir Probleme zeigt): Im Findmore-Plugin ist bereits eine Option, die genau diese Buttons einbindet.
Re: Facebook: 2Klick Lösung von Heise
Posted: Wed Feb 06, 2013 8:16 am
by HadleyB
Da Findmore bei mir nicht funktioniert (warum auch immer), wollte ich das Heise-Script einbinden, soweit vorneweg. Ja, dieser Script soll nur im Artikel auftauchen, nicht auf Übersichtsseiten. Die Daten des Scripts habe ich in das Template-Verzeichnis gespeichert, das dachte ich mir schon, dass das dahin gehört.
Vielen Dank für Eure Hilfe, ich habe das mal eingebunden, es geht aber immer noch nicht, das Script wird nicht einmal angezeigt.
In der INDEX.TPL steht nun
Code: Select all
<script type="text/javascript" src="{$serendipityHTTPPath}templates/{$template}/jquery.socialshareprivacy.js"></script>
<script type="text/javascript">{literal}
jQuery(document).ready(function($){
if($('#socialshareprivacy').length > 0){
$('#socialshareprivacy').socialSharePrivacy();
}
});
{/literal}</script>
In der ENTRIES.TPL steht nun
Code: Select all
<script>{literal}
jQuery(document).ready(function($){
if($('#socialshareprivacy').length > 0){
facebook : {
'perma_option': 'off'
},
twitter : {
'status' : 'off'
},
gplus : {
'display_name' : 'Google Plus'
}
},
'cookie_domain' : 'hadley.de'
});
{/literal}</script>
Wie gesagt, es geht nicht.
Re: Facebook: 2Klick Lösung von Heise
Posted: Wed Feb 06, 2013 10:37 am
by yellowled
HadleyB wrote:Vielen Dank für Eure Hilfe, ich habe das mal eingebunden, es geht aber immer noch nicht, das Script wird nicht einmal angezeigt.
Du hast das Plugin und den initialen Scriptaufruf (der wirklich nicht sein muss, wenn es doch ohnehin nur auf Eintragsseiten ausgegeben wird) ziemlich weit oben im <head> eingebunden. Das hat zur Folge, dass das Plugin aufgerufen wird, ehe jQuery überhaupt bereit steht. Übliche Praxis ist es (das funktioniert in s9y auch), sowas vor dem schließenden </body> einzubinden. Außerdem ist Dein „zweiter Aufruf“ von socialshareprivacy keiner, Du kippst nur die Optionen rein. Das funktioniert so aber nicht.
Also in der – Achtung! –
index.tpl:
Code: Select all
{if $view == 'entry'}
<script type="text/javascript" src="{$serendipityHTTPPath}templates/{$template}/jquery.socialshareprivacy.js"></script>
<script>{literal}
jQuery(document).ready(function($){
if($('#socialshareprivacy').length > 0){
$('#socialshareprivacy').socialSharePrivacy({
services : {
facebook : { 'perma_option': 'off' },
twitter : { 'status' : 'off' },
gplus : { display_name' : 'Google Plus' }
},
'cookie_domain' : 'hadley.de'
});
}
});
{/literal}</script>
{/if}
</body>
</html>
Sollte gehen. Der Smarty-Code {if…}…{/if} sorgt dafür, dass socialshareprivacy nur auf Eintragsseiten eingebunden wird, obwohl das Ganze in der index.tpl steht.
YL
Re: Facebook: 2Klick Lösung von Heise
Posted: Wed Feb 06, 2013 12:01 pm
by HadleyB
Danke für Deine Mühe, aber das funktioniert wieder nicht:
http://www.hadley.de/cms/archives/12771 ... Daten.html
Das Script steht nun ganz unten, es wird aber nichts angezeigt.