Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.
Seiten: 1
#1 21. Juli 2011 13:05
- rage_all
- kennt CMS/ms
- Ort: Augsburg
- Registriert: 09. März 2011
- Beiträge: 288
[GELÖST] Contentblock nach Wahl des Users laden oder nicht laden
Hallo zusammen,
die Überschrift ist nicht sehr aussagefähig, sorry - ich kriegs nicht besser in einen Satz...
Folgendermaßen:
Auf einem neuen Projekt möchte ich sogenannte SocialPlugins oder SocialWidgets anbieten; also »Google Plus Button«, »Facebook Like Button«, »Tweet this«. Außerdem möchte ich dem User anbieten, seinen Besuch auf dieser Internetseite durch die Statistik nicht mitzählen zu lassen.
Das mit dem Counter ist nicht so wild, da bekommt er ein entsprechendes Cookie platziert, "zähl mich nicht", fettich. Wer keine Cookies zulässt, wird gezählt (außer dem Counter-Cookie gibt es sonst eh keine von der Seite).
Wenn der User aber nicht möchte, dass Datenkrake Google und Datenkrake II Facebook von seinem Seitenbesuch erfahren, bleibt nur diesen Contentblock von Haus aus überhaupt nicht zu laden. Ansonsten werden die Dienste ja durch die JS-Aufrufe - ob gefällt oder nicht - vom Seitenbesuch erfahren (was ja der eigentliche Sinn der ganzen Sache ist... ).
Daher die Frage: Gibt es eine Möglichkeit, z.B. via Cookie-Abfrage vor dem Seitenaufruf diesen Contentblock Fallweise im Template zu überspringen?
Vielleicht sehe ich es auch viel zu kompliziert; und wenn's nicht geht, dann halt nicht - bietet doch eh in dieser Form noch keiner im Web an, oder?
Schöne Grüße
Michael
Offline
#2 21. Juli 2011 17:22
- NaN
- Moderator
- Ort: Halle (Saale)
- Registriert: 09. November 2010
- Beiträge: 4.437
Re: [GELÖST] Contentblock nach Wahl des Users laden oder nicht laden
Ich habe es hier auf dieser Seite mal so gelöst (siehe unten die beiden buttons): Ein JS Button, der erst bei Klick die Facebook und Twitter Daten lädt. Man muss dann zwar immer zweimal klicken (einmal auf den Button der Seite und einmal auf den FB bzw. Twitter Button), aber dadurch werden die Scripte der Anbieter (und deren Datensammelmaschine) erst aktiv, wenn der Seitenbesucher explizit auf den Link klickt. Klickt er nicht darauf, werden bloß die Buttons angezeigt. Und die stammen ja von der Seite selbst.
Wenn Du den weg übers Cookie nehmen willst, dann nimm doch die Smarty-Variable {$smarty.cookies} und frage im Template ab, ob ein bestimmtes Cookie existiert bzw. welchen Wert es hat:
{if isset($smarty.cookies.NAME_DES_COOKIES) && $smarty.cookies.NAME_DES_COOKIES != 'NÖ WILL NICHT!'}
{content block="SocialNetworkZeugs"}
{/if}
Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)
Offline
#3 21. Juli 2011 20:10
- rage_all
- kennt CMS/ms
- Ort: Augsburg
- Registriert: 09. März 2011
- Beiträge: 288
Re: [GELÖST] Contentblock nach Wahl des Users laden oder nicht laden
Hej!
Erstmal vielen Dank!
Ich sitze noch über der Umsetzung; momentan werden die Plugins beim ersten Seitenaufruf nicht angezeigt - ist mir aber fast zu safe (ich würde lieber alles zeigen, wenn Cookie vorhanden, welches die Darstellung ausdrücklich erlaubt ODER/UND wenn gar kein Cookie vorhanden ist).
Dazu sitze ich noch über dem JS-Snippet, welches das Cookie mit dem entsprechenden "disallow"-Wert überschreiben soll.
Sobald ich ein gut funktionierendes und komplettes Ergebnis habe, poste ich es natürlich.
Vielen Dank inzwischen für den Tipp!
Offline
#4 28. Juli 2011 19:42
- rage_all
- kennt CMS/ms
- Ort: Augsburg
- Registriert: 09. März 2011
- Beiträge: 288
Re: [GELÖST] Contentblock nach Wahl des Users laden oder nicht laden
Hallo zusammen,
so, die Seite ist endlich online, geht also gleichzeitig ins Showcase...
Mr. Onions Restaurant und Cocktailbar Augsburg
Dank Eurer Hilfe konnte ich die Abschaltung der SocialPlugins gut umsetzen.
Wie NaN schrieb, habe ich den Snippet ins Template übernommen und nur die Parameter geändert zu
[== smarty / template ==]
{if !isset($smarty.cookies.social) or $smarty.cookies.social == 'allowed'}
{global_content name='startpagefb'}
{/if}
Dazu wird zuvor noch ein JavaScript geladen, dass das Cookie platziert:
[== JavaScript ==]
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
var socialized = readCookie('social');
if (socialized == null) {
createCookie('social','allowed',90);
}
document.write("<div id=\"privacy\"><a title=\"Privatsphäre\" id=\"privacylink\" href=\"template/privacy.htm?height=600&width=600\" class=\"thickbox\">Privatsphäre</a></div>");
Warum diese Methode?
Ich hab versucht, das Cookie zu Beginn über PHP/UDT auszugeben. Hat auch wunderbar funktioniert; allerdings hat das JavaScript ein weiteres Cookie gesetzt, anstatt das bestehende zu überschreiben.
Nach kurzem Grübeln kam ich auf folgenden Schluss:
Wer generell keine Cookies zulässt, dem kann ich das "ich mag nicht"-Cookie leider auch nicht geben
Wer kein JavaScript aktiviert hat, sieht sowieso keine SocialPlugins - dem ist es ohnehin wurst
Berücksichtigt habe ich es lediglich mit dem Button zu der Seite, wo der User seine Privatsphäreneinstellungen vornehmen kann: Wer kein JavaScript aktiviert hat, oder wer keine Cookies akzeptiert, sieht den Link dazu gar nicht. Punkt.
Ich wollte jetzt eigentlich noch die Templates für den Google Plus Button, Twitter und Facebook als XHTML-Valide Vorlagen mit veröffentlichen - jetzt hab ich aber gesehen, dass die ja schon im Board stehen...
Nochmals vielen Dank für Eure, bzw. Nein, vielmehr: NaN, Danke für Deine Hilfe!
P.S.: Wo sage ich eigentlich "gelöst"?
Offline
#5 28. Juli 2011 21:21
- nockenfell
- Moderator
- Ort: Gontenschwil, Schweiz
- Registriert: 09. November 2010
- Beiträge: 2.934
- Webseite
Re: [GELÖST] Contentblock nach Wahl des Users laden oder nicht laden
Danke für den Code! Finde ich sehr ansprechend umgesetzt.
Wenn ich bei Statistiken auf den Text klicke, wird kurz die Checkbox unselektiert und danach sofort wieder selektiert. Ich nehme nicht an, dass dies so korrekt ist, oder? Sinnvoll wäre es, wenn du anzeigst, ob piwik aktiviert ist oder nicht.
[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog / Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox
Offline
#6 29. Juli 2011 10:55
- NaN
- Moderator
- Ort: Halle (Saale)
- Registriert: 09. November 2010
- Beiträge: 4.437
Re: [GELÖST] Contentblock nach Wahl des Users laden oder nicht laden
Wirklich nette Idee.
Gefällt mir.
Aber über die Texte muss nochmal jemand drüberschauen.
Sind ein paar Tippfehler (Bsp.: "Wie Besucher benützen Internet Explorer" oder "Jegliche Daten werden niemals veräußert, verleihen oder sonst wie Dritten zugänglich gemacht.")
Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)
Offline
#7 01. August 2011 09:50
- rage_all
- kennt CMS/ms
- Ort: Augsburg
- Registriert: 09. März 2011
- Beiträge: 288
Re: [GELÖST] Contentblock nach Wahl des Users laden oder nicht laden
Erstmal Danke für die Blumen ... hätte nicht gedacht, dass es so guten Anklang findet...
@NaN: Ja, das kommt glaube ich von den Nachtschichten... *grins*
Ich bin eigentlich sehr sorgfältig beim Texten und lies am nächsten oder übernächsten Tag nochmal drüber, bevor ich etwas veröffentliche. Mindestens lese ich jeden Beitrag, wie auch diesen, noch 2x nach dem tippen, bevor ich ihn absende.
Da sieht man wieder, wie *** es ist, bewährte Workflows - wenn auch nur temporär - außer Acht zu lassen.
Danke, ich hab's nochmal nachgebessert.
@Nockenfell: Dass der Code "ansprechend" ist, haut mich gleich noch mehr um ... bin Designer, kein Coder
Meine Kenntnisse sind Autodidakt, Tutorialized, kopiert und geklaut - immer nur in dem Maß, dass ich die Aufgabe umsetzen kann. Ans richtige Programmieren trau ich mich nicht, weil ich mich um Sicherheit und Serverlast sorge. Ein Script kann in wenigen CPU-Sekunden ein sicheres Ergebnis errechnen, oder unsicher und mit maximaler Last. Da hab ich großen Respekt vor...
Was die Checkbox angeht: Piwik bietet derzeit nur die Nummer mit dem iFrame an. Ich hab schon überlegt am Piwik was zu modifizieren; aber ich hab das ja selbst erst seit sehr kurzem im Einsatz und muss mich noch überhaupt einarbeiten. Außerdem war für das Projekt nicht mehr die Zeit (und ich bin immer noch kein Coder ).
Später hätte ich schon gerne eine elegantere Lösung, evtl. grafisch, mit Anzeige: "Aktuelle Einstellung: Du wirst erfasst / nicht erfasst", etc.
Wenn die Abschaltung bei Dir nicht funktioniert, überprüfe bitte ob Du Cookies von Drittanbietern zulässt.
Hintergrund: Ich biete meinen Hostingkunden eine Statistik inklusive - neben dem unübersichtlichen Webalizier. Es wäre ein zu großer Aufwand auf jeder Domain einen eigenen Zählerdienst zu installieren, daher hab ich den für alle meine Kunden auf einer Subdomain meiner Internetseiten.
Ich hatte alles getestet mit IE7, IE8, IE9, FF5, Safari 5, Chrome 12, Opera 11.5 ... und natürlich für die alten IE's extra Styles schreiben müssen... Bei mir sind alle Funktionen gelaufen. *puzzled*
Danke für Euer Feedback! Lob hört man immer gern (konstruktive Kritik aber auch).
Schöne Grüße
Michael
Offline
Seiten: 1