Themen
Letzte Nachrichten
- TYPO3 und Bilder bei Facebook Links
- 12.05.2012 18:35
- Google Analytics und die Datenschutzaufsicht
- 07.05.2012 13:19
- "Nervige" Title-Tags bei Links in TYPO3
- 26.02.2012 10:58
- TYPO3 Install Tool und session.auto-start is enabled
- 20.02.2012 21:28
Kategorien
- Commerce (7)
- Design (4)
- Technology (18)
Blogrolls
Letzte Kommentare
- Inline
- 04.02.2011 13:09
Meist gelesene Posts
- Wochentag lokalisiert mit Fluid aus einem DateTime Objekt...
- 916 mal angeschaut
- 03.02.2011 15:38
- TYPO3 Backend Layouts
- 674 mal angeschaut
- 27.04.2011 23:57
- TYPO3 4.5 und kb_nescefe und Security Token
- 657 mal angeschaut
- 18.03.2011 17:43
- JQuery und IE9
- 624 mal angeschaut
- 24.03.2011 10:31
Zur Zeit wird gefiltert nach: Commerce
Filter zurücksetzen
TYPO3 und Bilder bei Facebook Links
Warum keine Bilder bei Facebook Verlinkungen zur Auswahl angeboten werden?
Setzt man RealUrl auf seiner TYPO3 Seite ein, so kann - trotz der Angabe der BaseURL - Facebook keine Bilder laden, wenn man eine Unterseite verlinken will. Dies liegt wohl daran, daß Facebook die <base href="..."/> Angabe ignoriert.
Für Abhilfe sorgt ein:
config.absRefPrefix = /
im TypoScript Template - aber Achtung: es gibt auch Extensions die damit nicht klar kommen!
Google Analytics und die Datenschutzaufsicht
Post vom Bayerischen Landesamt für Datenschutzaufsicht
Das Landesamt für Datenschutzaufsicht versendet derzeit Schreiben wie dieses hier: download
Darin fordert das Landesamt für Datenschutzaufsicht auf mehrere Punkte bei der Verwendung von Google Analytics einzuhalten:
- der Vertrag zu Auftragdatenverarbeitung muss schriftlich mit Google abgeschlossen werden.
- in der Datenschutzerklärung muss der Benutzer auf die Widerspruchsmöglichkeiten gegen die Erfassung seiner Daten durch Google Analytics hingewiesen werden
- die Kürzung der IP-Adressen muss aktiviert werden
- Altdaten müssen gelöscht werden
Bußgeld ist übrigens zunächst keines fällig, das Landesamt behält sich jedoch vor, dass "wenn ein Webseitenbetreiber sich nach entsprechender Aufforderung durch das BayLDA sein Programm anzupassen, nachhaltig weigert oder nicht reagiert" ein Bußgeldverfahren eingeleitet wird.
Weitere Informationen auch auf der Webseite des Bayerischen Landesamt für Datenschutzaufsicht http://www.lda.bayern.de/onlinepruefung/index.html
Vertrag zur Auftragsdatenverarbeitung
Unter http://www.google.de/intl/de/analytics/tos.pdf kann ein Vertrag heruntergeladen werden, der unterschrieben an Google zu senden ist. Nicht vergessen den addressierten und frankierten Rückumschlag beizulegen. Auf Seite 1 des PDFs ist das genaue Vorgehen beschreiben.
Datenschutzerklärung
Auf der Webseite muss eine Datenschutzerklärung eingefügt werden. Hier bietet das Bayerische Landesamt für Datenschutzaufsicht einen Mustertext (http://www.lda.bayern.de/onlinepruefung/googleanalytics.html#faq):
„Diese Website benutzt Google Analytics, einen Webanalysedienst der Google Inc. („Google“). Google Analytics verwendet sog. „Cookies“, Textdateien, die auf Ihrem Computer gespeichert werden und die eine Analyse der Benutzung der Website durch Sie ermöglichenDie durch den Cookie erzeugten Informationen über Ihre Benutzung dieser Website werden in der Regel an einen Server von Google in den USA übertragen und dort gespeichert. Im Falle der Aktivierung der IP-Anonymisierung auf dieser Webseite, wird Ihre IP-Adresse von Google jedoch innerhalb von Mitgliedstaaten der Europäischen Union oder in anderen Vertragsstaaten des Abkommens über den Europäischen Wirtschaftsraum zuvor gekürzt. Nur in Ausnahmefällen wird die volle IP-Adresse an einen Server von Google in den USA übertragen und dort gekürzt. Im Auftrag des Betreibers dieser Website wird Google diese Informationen benutzen, um Ihre Nutzung der Website auszuwerten, um Reports über die Websiteaktivitäten zusammenzustellen und um weitere mit der Websitenutzung und der Internetnutzung verbundene Dienstleistungen gegenüber dem Websitebetreiber zu erbringen. Die im Rahmen von Google Analytics von Ihrem Browser übermittelte IP-Adresse wird nicht mit anderen Daten von Google zusammengeführt. Sie können die Speicherung der Cookies durch eine entsprechende Einstellung Ihrer Browser-Software verhindern; wir weisen Sie jedoch darauf hin, dass Sie in diesem Fall gegebenenfalls nicht sämtliche Funktionen dieser Website vollumfänglich werden nutzen können. Sie können darüber hinaus die Erfassung der durch das Cookie erzeugten und auf Ihre Nutzung der Website bezogenen Daten (inkl. Ihrer IP-Adresse) an Google sowie die Verarbeitung dieser Daten durch Google verhindern, indem sie das unter dem folgenden Link verfügbare Browser-Plugin herunterladen und installieren. Der aktuelle Link ist http://tools.google.com/dlpage/gaoptout?hl=de.“
Wie das Landesamt weiter schreibt, reicht es nicht aus, diesen Text in das Impressum einzufügen, sondern der Besucher der Webseite muss einen eindeutigen Hinweis auf die Unterrichtung erhalten und dieser Hinweis muss sofort erkennbar sein. "In der Praxis sind die datenschutzrechtlichen Ausführungen daher häufig unter einem eigenen Link mit Bezeichnungen wie "Datenschutzerklärung", "Datenschutzhinweis" und ähnliche zu finden."
Kürzung der IP Adressen
Google hat mittlerweile eine Funktion eingebaut, die das letzte Oktett der IP Adresse enfernt. Diese Funktion ist jedoch nicht automatisch aktiv. Dazu muss der Analytics Code wie folgt angepasst werden:
try {
var pageTracker = _gat._getTracker("UA-XXXXX-Y");
_gaq.push(['_gat._anonymizeIp']);
pageTracker._trackPageview();
} catch(err) {}
Alte Daten löschen
Last but not least fordert das Bayerische Landesamt für Datenschutzaufsicht Altdaten - sofern vorhanden - zu löschen. Da Google bisher wohl noch keine Funktionalität diesbezüglich anbietet, heißt das: Google Analytics Profil schließen und ein neues Profil öffnen. Damit sind dann leider alle alten Statistiken weg. Nicht vergessen: neuen Trackingcode einfügen!
noch keine Post bekommen?
Wie der Pressemeldung unter http://www.lda.bayern.de/lda/datenschutzaufsicht/p_archiv/2012/pm005.html zu entnehmen ist, bietet das Landesamt "allen bayerischen Webseitbetreibern aus dem nicht öffentlichen Bereich an, ihren Internetauftritt in Hinblick auf den datenschutzkonformen Einsatz von Google Analytics hin überprüfen zu lassen. [...] Hierzu genügt eine e-mail mit Angabe der jeweiligen URL in der Betreffzeile an onlinepruefung(at)lda.bayern.de. Ende Mai 2012 plant das BayLDA dann einen zweiten Prüfdurchgang mit den neu hinzugekommenen Internetadressen durchführen."
tt_news, powermail und direct_mail_subscription verknüpfen
Aufgabenstellung
Events sollen mit tt_news (und newscalendar) dargestellt werden. Zu den einzelnen Veranstaltungen kann man sich per Formular anmelden. In dem Anmeldeformular gibt es auch eine Check-Box, die den Double-Opt-In zur Newsletteranmeldung anstoßen soll.
Daten aus tt_news an powermail übergeben
Auf die "Single-View" Seite von tt_news plazieren wir zusätzlich powermail. Über ein Erweiterungstemplate lesen wir den Newstitel (dieser Beinhaltet den Eventnamen) und das Datum aus und übergeben diese an powermail:
lib.news = COA
lib.news {
10 = RECORDS
10 {
# id des template-records
source = {GPvar:tx_ttnews|tt_news}
source.insertData = 1
tables = tt_news
conf.tt_news >
conf.tt_news = TEXT
conf.tt_news.field = title
}
20 = RECORDS
20 {
# id des template-records
source = {GPvar:tx_ttnews|tt_news}
source.insertData = 1
tables = tt_news
conf.tt_news >
conf.tt_news = TEXT
conf.tt_news.field = tx_newscalendar_calendardate
conf.tt_news.strftime = am %A, %d.%m.%Y
}
}
lib.newsTitel = COA
lib.newsTitel{
5 = TEXT
5.value = <input type="hidden" id="uid7" name="tx_powermail_pi1[uid7]" value="
10 = COA
10 < lib.news
15 = TEXT
15.value = "/>
20 = COA
20 < lib.news
}
Im Powermail fügt man ein TYPOScript Objekt ein - in unserem Fall als erstes Element, so dass der Name des Events gleich ganz oben steht.
Double-Opt-In von direct_mail_subscription auslösen
Powermail unterstützt userfunc somit kann man beim Absenden des Formulars den Double-Opt-In starten:
Wir ergänzen das Erweiterungstemplate um folgenden TYPOScript:
# include library
includeLibs.user_powermailvorgangsnummer = fileadmin/libs/user.tx_powermaildirectmailsubscription.php
plugin.tx_powermail_pi1.dynamicTyposcript {
directmailsubscription = USER
directmailsubscription {
userFunc = user_powermaildirectmailsubscription->subscribe
# subscribe field
userFunc.subscribe = uid5
# name field
userFunc.name = uid1
# email field
userFunc.email = uid3
#content uid
userFunc.formuid = 24
}
}
die Ids muss man sich entsprechend aus dem Formular heraussuchen.
user.tx_powermaildirectmailsubscription.php könnte z.B. so aussehen:
<?php
require_once (PATH_tslib.'media/scripts/fe_adminLib.inc');
require_once(t3lib_extMgm::extPath('direct_mail_subscription').'pi/class.dmailsubscribe.php');
class user_powermaildirectmailsubscription {
/**
* subscribe() subscribe user
*
* @param string $content: content to userFunc is empty
* @param array $conf: conf array from ts
* @return void
*/
function subscribe($content = '', $conf = array()) {
$subscribe = $GLOBALS['TSFE']->fe_user->sesData['powermail_'.$conf['userFunc.']['formuid']][$conf['userFunc.']['subscribe']];
if (strlen(implode(",", $subscribe)) > 0) {
$email = $GLOBALS['TSFE']->fe_user->sesData['powermail_'.$conf['userFunc.']['formuid']][$conf['userFunc.']['email']];
$name = $GLOBALS['TSFE']->fe_user->sesData['powermail_'.$conf['userFunc.']['formuid']][$conf['userFunc.']['name']];
$conf = $GLOBALS['TSFE']->tmpl->setup['plugin.']['feadmin.']['dmailsubscription.'];
// simulate registerprocess
$_POST['FE']['tt_address']['email'] = $email;
$_POST['FE']['tt_address']['module_sys_dmail_html'] = 1;
// Initialisierung feAdmin Objekt
$ua = new user_feAdmin();
$ua->cObj = t3lib_div::makeInstance('tslib_cObj');
$ua->init($content,$conf);
}
}
}
?>
Jetzt muss man noch diese Userfunktion auslösen. Dazu bauen wir folgenden Marker in die Empfänger-Mail:
###POWERMAIL_TYPOSCRIPT_DIRECTMAILSUBSCRIPTION###
automatische Sprachwahl bei der Integration von TYPO3 in Facebook
Automatische Sprachwahl bei der Integration von TYPO3 in Facebook
In unserem letzten Blog Eintrag haben wir beschrieben, wie man TYPO3 in Facebook integrieren kann. Dieser Beitrag erklärt, wie man zusätzlich noch die Sprache der integrierten TYPO3 Site automatisch auf die in Facebook gewählte Sprache schaltet.
Vorbereitung
Zunächst legt man ganz gewöhnlich die Sprachen in TYPO3 an und übersetzt die Seiten. Wir zeigen hier ein Beispiel für einen Single-Tree, dieses läßt sich aber auch auf den Multi-Tree Ansatz übertragen. Das TYPOScript sollte schon soweit funktionieren, dass sich die Sprache über einen Parameter auswählen läßt, d.h. es sollte etwas in diese Art im TYPOScript zu finden sein:
config.linkVars = L
#English, sys_language.uid = 0
[globalVar = GP:L = 0]
config.sys_language_uid = 0
config.language = en
config.locale_all = en_GB
config.htmlTag_langKey = en
#German, sys_language.uid = 1
[globalVar = GP:L = 1]
config.sys_language_uid = 1
config.language = de
config.locale_all = de_DE
config.htmlTag_langKey = de
[global]
Die ausgwählte Sprache von Facebook abfragen
Die Sprache, die der Facebook User eingestellt hat, läßt sich über eine User Funktion in TYPOScript abfragen.
Hierzu benötigt man zunächst ein entsprechendes Skript. Da der TYPO3 Core die localconf.php teilweise öfter ausführt kommt es zu Fehlern, wenn man die Funktion direkt dort hineinschreibt. Daher erstellt man ein neues File in typo3conf, z.B. facebook.php mit folgenden Inhalt:
<?php
function parse_signed_request($signed_request, $secret)
{
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
// decode the data
$sig = base64_url_decode($encoded_sig);
$data = json_decode(base64_url_decode($payload), true);
if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
error_log('Unknown algorithm. Expected HMAC-SHA256');
return null;
}
// check sig
$expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true);
if ($sig !== $expected_sig) {
error_log('Bad Signed JSON signature!');
return null;
}
return $data;
}
function base64_url_decode($input)
{
return base64_decode(strtr($input, '-_', '+/'));
}
function user_facebook($lan)
{
$app_secret = "f170ea8186b8acf89a511a4295148f27";
$data = parse_signed_request($_REQUEST['signed_request'], $app_secret);
$page_user = $data['user'];
if ($lan == $page_user['locale']) {
return true;
} else {
return false;
}
}
?>
diese wir dann in der localconf.php inkludiert:
include_once('facebook.php');
(wichtig: include_once verwenden!)
TYPOScript anpassen
Im letzten Schritt wird über eine UserFunc die Facebook Locale abgefragt und dementspechend die Sprache gesetzt:
[userFunc = user_facebook(de_DE)]
config.sys_language_uid = 1
config.language = de
config.locale_all = de_DE
config.htmlTag_langKey = de
[end]
(das PHP File muss vorher nicht über TYPOScript inkludiert werden, der Eintrag in der localconf.php reicht aus)
TYPO3 in Facebook integrieren
Seit noch gar nicht so langer Zeit kann man in Facebook wieder IFrame Tabs verwenden. Somit ist es möglich Inhalte von einem beliebigen Server in Facebook auf eine Facebook Seite zu integrieren und somit natürlich auch Inhalte aus TYPO3
Facebook Seite erstellen
Zunächst benötigt man eine Facebook Seite. Den Erstellungs-Prozess kann man z.B. von der Facebook Login Seite aus starten:

Facebook Anwendung erstellen
Im nächsten Schritt erstellt man eine Facebook Anwendung. Dazu öffnet man folgende URL: http://www.facebook.com/developers/ und klickt auf "Erstelle eine neue Anwendung":

Im ersten Schritt muss man der Anwendung einen Namen geben und den Bedingungen zustimmen:

Nachdem man die Sicherheitskontrolle "bestanden" hat, geht es richtig los. Auf dieser Maske ist das "Symbol" wichtig, denn dieses wird dann später in der Navigation angezeigt:

auf dem Reiter "Website" kommt in das Feld "Site URL" die URL der Seite, die man im IFrame anzeigen möchte - hierfür sollte man in TYPO3 eine Seite angelegt haben, die eine Breite von 520px hat (aus Mangel an solch einer Seite für diese Anleitung bauen wir unsere komplette Homepage ein):

Im Tab "Facebook Integration" müssen die Felder "Canvas Page", "Canvas-URL", "Name des Reiters" (wird nachher im Menü verwendet) und "URL des Reiters" ausgefüllt werden:

Nach dem Speichern muß man noch die erstellte Anwendung der Seite hinzufügen. Dafür geht man zunächst auf die "Anwendungs-Profilseite":

Auf der Profilseite findet man link unten den Link "Zu meiner Seite hinzufügen". In der Box wählt man dann die Seite aus, auf der die Anwendung angezeigt werden soll:

Das war es schon, auf der ausgewählten Seite befindet sich nun ein neuer Navigationpunkt. Wird dieser ausgewählt öffnet sich unsere Seite in einem IFrame (in dem Screenshot sieht man, was passiert, wenn die Seite breiter als 520 Pixel ist ;-) ):

Somit hat man die volle Kontrolle über die Inhalte der Seite in TYPO3. Natürlich kann man auch Javascript verwenden, oder z.B. mit Google Analytics die Besucher tracken...