Zum Inhalt springen

Von wo kommt der Formularsender

Erstellt am 1. April 2011 · 2 Antworten · letzte Antwort am 6. April 2011

Tags: Powermail, JavaScript & AJAX, Frage

Fjonan ·

Blöder Titel.

Ich habe ein mit PowerMail kreiertes Formular, welches überall auf der Webseite per "insert record" in die Linke Spalte eingeblendet wird.

Wenn jetzt ein Besucher irgendwo auf der Seite dieses Formular ausfüllt, möchte ich per JS folgende Zeile befüllen, welche ich mit Google Analytics auswerte:

firstTracker._trackPageview('/anfrageformular/danke?category=[xxxxxx]&type=[xxxxxx]');

XXXX Sind die zwei Breadcrumpstufen auf der Sich das Formular befand z. B.

firstTracker._trackPageview('/anfrageformular/danke?category=[Produkte]&type=[Staubsauger]');

Wie löse ich dieses Problem, wie komme ich an genau diese Information ran, wenn ich mich auf der "Danke für Ihre Kontaktanfrage" seite befinde, wo das JS ausgelöst wird.

Danke schon mal für alle Antworten.

maik ·

Du kannst einfach den Referrer nehmen.
Das ist die komplette URL von der aus auf die "Danke für Ihre Kontaktanfrage" Seite weitergeleitet wird.

$_SERVER["HTTP_REFERER"]

In JavaScript bekommst du das mit
document.referrer

Den kannst du dann nach belieben zerlegen um an die gewünschen URL-Segmente zu gelangen.

--
maik

Fjonan ·

Der Referrer reicht leider nicht, weil in dem nicht alle Infos stehen die ich brauche.

Ich habe es jetzt folgendermaßen gelöst:

Ich hab mir ein kleines PHP Script geschrieben, welches die betreffenden Daten in der Session speichert. Per TypoScript übergebe ich die Daten an das PHP Script.

Wenn das Script nur aufgerufen wird ohne das Daten mitgegeben werden, gibt es automatisch die aktuell gespeicherten Daten aus. Dieser Fall tritt nur auf Seite 614 auf und wird per Typoscript condition gelöst.

#614 ist die "Danke für Ihre Anfrage" Seite, hier wird dem Script
#keine Daten übergeben woraufhin dieses die JS Zeile generiert
[PIDinRootline = 614]
temp.analytics.30 = PHP_SCRIPT
temp.analytics.30.file = fileadmin/scripts/nl_contact.inc  
[ELSE]
#auf allen anderen Seiten übergebe ich dem Script den aktuellen Seitentitel
#und den Titel der hierarchisch drüberliegenden Seite
temp.analytics.30 = PHP_SCRIPT
temp.analytics.30 {
file = fileadmin/scripts/nl_contact.inc
lastcategory = TEXT
lastcategory.dataWrap = {leveltitle:-2}
lastpage = TEXT
lastpage.dataWrap = {leveltitle:-1}
}
[GLOBAL]

Und die nl_contact.inc sieht so aus:

<?
$category = $this->cObjGetSingle($conf["lastcategory"],$conf["lastcategory."]);
$page = $this->cObjGetSingle($conf["lastpage"],$conf["lastpage."]);
// Wenn Parameter (lastpage, lastcategory) übergeben wurden, speichern
if($category) $GLOBALS["TSFE"]->fe_user->setKey("ses","mycategory", $category);
if($page) $GLOBALS["TSFE"]->fe_user->setKey("ses","mypage", $page);

// falls nichts übergeben wurde, ausgeben
if(!$page && !$category){
$page = $GLOBALS["TSFE"]->fe_user->getKey("ses","mypage" ) ;
$category = $GLOBALS["TSFE"]->fe_user->getKey("ses","mycategory" ) ;
$content = "firstTracker._trackPageview('/anfrageformular/danke?category=".urlencode($category)."&type=".urlencode($page)."');";
}
?>

Stolperfallen waren: "getKey" und "setKey" um die Variablen zu speichern und zu holen, und .... ganz ganz wichtig ... auf der Seite 614 muss der Cache ausgestellt werden (in den Seiteneigenschaften einfach das Häkchen bei "Cache" setzen um es zu deaktivieren) damit auch immer frisch die Daten aus der Session geladen werden.

Jetzt wird die betreffende Zeile so generiert wie ich sie brauche! Viele neue Sachen gelernt 🙂

Der Lösungsweg fühlt sich zwar immer noch n bisschen komplizierter als nötig an, aber er tut was er soll. Schade das man Sessionvariablen nicht abrufen und setzen kann per TypoScript (zumindest hab ich nichts gefunden).

Ich hoffe, dieser Thread hilft Leuten mit ähnlichem Problem.