Kategorien

Navigation

Feeds/Meta

Blog RSS Feed
Kommentare RSS Feed

Manuel Josupeit-Walter - XING Profil
Manuel Josupeit-Walter - Amazon Wunschliste
Manuel Josupeit-Walter - XMPP (Jabber)
Manuel Josupeit-Walter - ICQ
Manuel Josupeit-Walter - Skype

Bloggeramt.de
BlogAlm
Add to Technorati Favorites

SpamPoison

josupeit.com > Weblog > Informatik und Technik > HTML, CSS und Web > Piwik Opt-Out IFrame

Piwik Opt-Out IFrame

Datum:   03.09.2011, 17:07 Uhr
Kategorie:   HTML, CSS und Web Feed dieser Kategorie abonnieren
Kommentare:   0, Neuen Kommentar schreiben

Puh, endlich wieder bloggen. Nachdem ich die Seite hier auf meinen eigenen Server umgezogen habe, konnte ich anfangs keine Artikel posten. Damit ist jetzt Schluss, denn hier geht's gleich weiter. ;-) Nachdem Google Analytics ja seit geraumer Zeit bzgl. geltenden Datenschutzes in Kritik geraten ist1, 2, 3, hatte ich zunächst keine Software zur Erhebung von Statistiken im Einsatz. Nun habe ich mich jedoch für Piwik entschieden und es anhand des Blogeintrages von Daniel Weihmann datenschutzkonform konfiguriert. Dabei habe ich auch gleich das Opt-Out IFrame im Impressum eingebunden, durch das Benutzer dieses Blogs der Erhebung von Statistiken widersprechen können.

Bedauerlicher Weise passt der Inhalt des Frames layout-technisch garnicht zum Look-and-Feel dieses Blogs und ich habe mich gefragt, wieso man dort kein eigenes Stylesheet einbetten kann. Gut, es gibt hier und da Blogeinträge, die beschreiben, dass man ja eine Referenz im Template setzen könne, allerdings gilt das dann global. Für alle, die Piwik also für mehrere Webseiten einsetzen, ist das keine Lösung. Glück, dass Piwik die Template-Engine Smarty verwendet, denn so kann man das Opt-Out Template erweitern, sodass dem IFrame ein CSS direkt übergeben werden kann:

 

Original Template plugins/CoreAdminHome/templates/optOut.tpl

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
        <head>
                <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
                <meta name="robots" content="noindex, nofollow" />
        </head>
        <body>
                {if !$trackVisits}{'CoreAdminHome_OptOutComplete'|translate}
                <br/>
                {'CoreAdminHome_OptOutCompleteBis'|translate}
                {else}
                {'CoreAdminHome_YouMayOptOut'|translate}
                <br/>
                {'CoreAdminHome_YouMayOptOutBis'|translate}
                {/if}
                <br/><br/>
                <form method="post" action="?module=CoreAdminHome&amp;action=optOut{if $language}&amp;language={$language}{/if}">
                        <input type="hidden" name="nonce" value="{$nonce}" ></input>
                        <input type="hidden" name="fuzz" value="{$smarty.now}"></input>
                        <input onclick="this.form.submit()" type="checkbox" id="trackVisits" name="trackVisits" {if $trackVisits}checked="checked"{/if}></input>
                        <label for="trackVisits"><strong>
                        {if $trackVisits}{'CoreAdminHome_YouAreOptedIn'|translate} {'CoreAdminHome_ClickHereToOptOut'|translate}
                        {else}{'CoreAdminHome_YouAreOptedOut'|translate} {'CoreAdminHome_ClickHereToOptIn'|translate}{/if}
                        </strong></label>
                </form>
        </body>
</html>

Angepasstes Template

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
        <head>
                <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
                <meta name="robots" content="noindex, nofollow" />
                {if isset($smarty.request.css)}
                <link rel="stylesheet" type="text/css" href="{$smarty.request.css}" />
                {/if}
        </head>
        <body>
                {if !$trackVisits}{'CoreAdminHome_OptOutComplete'|translate}
                <br/>
                {'CoreAdminHome_OptOutCompleteBis'|translate}
                {else}
                {'CoreAdminHome_YouMayOptOut'|translate}
                <br/>
                {'CoreAdminHome_YouMayOptOutBis'|translate}
                {/if}
                <br/><br/>
                <form method="post" action="?module=CoreAdminHome&amp;action=optOut{if $language}&amp;language={$language}{/if}">
                        <input type="hidden" name="nonce" value="{$nonce}" ></input>
                        <input type="hidden" name="fuzz" value="{$smarty.now}"></input>
                        {if isset($smarty.request.css)}
                        <input type="hidden" name="css" value="{$smarty.request.css}"></input>
                        {/if}
                        <input onclick="this.form.submit()" type="checkbox" id="trackVisits" name="trackVisits" {if $trackVisits}checked="checked"{/if}></input>
                        <label for="trackVisits"><strong>
                        {if $trackVisits}{'CoreAdminHome_YouAreOptedIn'|translate} {'CoreAdminHome_ClickHereToOptOut'|translate}
                        {else}{'CoreAdminHome_YouAreOptedOut'|translate} {'CoreAdminHome_ClickHereToOptIn'|translate}{/if}
                        </strong></label>
                </form>
        </body>
</html>

 

Was jetzt noch zu tun ist, ist dem IFrame die Url zum Stylesheet zu übergeben. Aber Vorsicht: Die Url muss ensprechend kodiert sein (zum kodieren eignet sich bspw. der URL Encoder von hier). Im Falle dieses Blogs lautet die URL zum Stylesheet http:// www.josupeit.com/css/piwik.css und das entsprechend kodierte Pendant also http%3a%2f%2fwww.josupeit.com%2fcss%2fpiwik.css. Der IFrame-Code ändert sich also wie folgt:

<iframe src="http://vps1.josupeit.com/piwik/index.php?module=CoreAdminHome&amp;action=optOut&amp;language=de&amp;css=http%3a%2f%2fwww.josupeit.com%2fcss%2fpiwik.css" frameborder="no" height="200px" width="600px"></iframe>

Viel Spaß. ;-)


1 Google Analytics (Wikipedia)
2 Warum Google Analytics in Deutschland illegal ist - Golem (Golem)
3 Datenschützer bricht Verhandlungen über Google Analytics ab (Heise Online)

 




Bisherige Kommentare: RSS Feed der Kommentare
Keine
Bisherige Trackbacks:
Keine