Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.
Seiten: 1
#1 19. Februar 2014 13:51
- jeff1980
- Server-Pate
- Ort: Dortmund
- Registriert: 26. November 2010
- Beiträge: 630
[GELÖST] URL-Parameter für jede Seite
Hallo,
dies ist sicher kein direktes CMSms-Thema - wobei, wer weiß ...
Bei einem aktuellen Projekt sollen Besucher, die von einer bestimmten Homepage kommen, die ganze Zeit "markiert" bleiben, um in Piwik ein Ziel auszulösen.
Mein Gedanke war, dass der Link von der externen Seite einfach einen Parameter mitbekommt, z.B. www.domain.de?ref=extern. Nun soll dieser Parameter aber die ganze Zeit an jede URL gehängt werden, damit nachvollzogen werden kann, ob irgendwann auch eine bestimmte Seite aufgerufen wird. Zudem muss gewährleistet sein, dass auch andere Parameter zusätzlich mit übergeben werden können (von einem Link zum Kontakt-Formular).
Ich habe schon ein wenig gegoogled, aber keinen wirklichen Ansatz gefunden.
Auf der Seite ist mod_rewrite aktiviert - mache ich so etwas dann auch über die htaccess?
Bin für jeden Hinweis dankbar ...
Offline
#2 19. Februar 2014 14:06
- NaN
- Moderator
- Ort: Halle (Saale)
- Registriert: 09. November 2010
- Beiträge: 4.437
Re: [GELÖST] URL-Parameter für jede Seite
Warum nicht mit einem Cookie und dem Referer arbeiten?
Ist zwar nicht Bulletproof aber wesentlich einfacher, als jedesmal die URL zu manipulieren.
Sagen wir mal der Besucher kommt von Website A zu Website B. Dann müsstest Du ja schon bei Website A an jeden Link zu Webseite B eine Art ID an den Link anhängen (so wie Dein ref=extern). Wäre eigentlich kein Problem. Aber wie willst Du diese ID über Website B die ganze Zeit im Link halten?
Variante A): Mit Hilfe von Javascript jeden internen Link bei Klick (oder auch pauschal bei onload bzw. $(document).ready() ) manipulieren und den Parameter ans href hinten dran hängen. Das gleiche mit Formularen und dem Action-Attribut bzw. kann man da auch ein hidden-Feld hinzufügen.
Wäre mir aber zu viel Javascript.
Variante B): Cookies.
Website A bleibt dabei vollkommen unberührt.
Bei Website B wird mit einem PHP-Script ein Cookie mit dem Referer gesetzt (sofern der Referer nicht Website B ist). D.h. solange sich der Besucher auf Website B aufhält, schleift er das Cookie mit dem ursprünglichen Referer Website A (oder was auch immer) mit. Und Du musst Dir keine Gedanken über Links, Parameter, Formulare etc. machen
Würde das nicht ausreichen?
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 19. Februar 2014 14:42
- jeff1980
- Server-Pate
- Ort: Dortmund
- Registriert: 26. November 2010
- Beiträge: 630
Re: [GELÖST] URL-Parameter für jede Seite
Hi NaN,
danke für den Denkanstoß - Javascript ist hier glaube ich die beste Wahl - Piwik kann standardmäßig in URL's nachschauen und somit bestimmte Ziele "auslösen". Sonst müsste ich zusätzlich noch in die Piwik-JS-API einsteigen ...
Ich habe jetzt folgendes Schnippselchen eingebunden (und es funktioniert sogar):
[== Javascript ==]
<script type="text/javascript">
if (window.location.search.indexOf('ref=vvp') > -1) {
for (i=0; i<document.links.length; i++) { document.links[i].href = document.links[i].href+"?ref=vvp" };
}
</script>
So muss zwar bei Website A (der verweisenden Seite) das "?ref=vvp" an die Links angefügt werden, aber ich denke, dass sollte nicht das Problem sein, da es nur 10 Links sind und diese sich wohl auch so gut wie nie ändern werden.
Das Ganze funktioniert übrigens auch noch bei zusätzlichen Parametern - diese werden nicht gelöscht oder verändert.
Offline
#4 19. Februar 2014 15:43
- jeff1980
- Server-Pate
- Ort: Dortmund
- Registriert: 26. November 2010
- Beiträge: 630
Re: [GELÖST] URL-Parameter für jede Seite
Schade, zu früh gefreut - beim Formbuilder wird der Parameter dann doch vergessen.
Bei der Seite gibt es einen Formularaufruf, der einen Parameter als Betreff übergibt.
Nun wird 1. der neue Parameter mit in den Betreff übergeben (obwohl er in der URL mit einem "?" getrennt ist) und 2. wird der Parameter beim Versenden des Formulars "vergessen".
Versuche, den Parameter mit einem "&" abzutrennen scheitern leider auch. Zwar erscheint der Parameter dann nicht mehr im Betreff des Formulars, allerdings kann ich ihn mit o.g. Script auch nicht automatisch hinzufügen - das funktioniert nur, wenn er mit "?" abgetrennt ist.
Liegt es vielleicht an dem Script? Oder an der Art, wie der Formbuilder arbeitet?
Edith: Leider verschwinden die Parameter auch schon, wenn man vorzeitig das Formular absendet und nicht alle Pflichtfelder ausgefüllt sind. Sieht für mich nach einem "Problem" beim Formbuilder aus ...
Edit 2: Hat sich auch erledigt - habe das Script noch etwas erweitert:
[== Javascript ==]
<script type="text/javascript">
if (window.location.search.indexOf('ref=vvp') > -1) {
for (i=0; i<document.links.length; i++) { document.links[i].href = document.links[i].href+"?ref=vvp" };
document.getElementById("cntnt01moduleform_1").action = document.getElementById("cntnt01moduleform_1").action+"?ref=vvp?form=yes";
}
</script>
Die zweite Zeile im if-Bereich ändert die URL auch bei "action" und hängt sogar noch etwas mehr dran - so kann das Absenden des Formulars noch mal gesondert in Piwik abgefangen werden.
Beitrag geändert von jeff1980 (19. Februar 2014 16:22)
Offline
#5 19. Februar 2014 16:29
- NaN
- Moderator
- Ort: Halle (Saale)
- Registriert: 09. November 2010
- Beiträge: 4.437
Re: [GELÖST] URL-Parameter für jede Seite
Dein 1. Script behandelt nur Links, keine Formulare.
Außerdem musst Du bei jedem Link/Formular prüfen, ob bereits Parameter enthalten sind.
Wenn nicht, dann musst Du Deinen Parameter mit einem ? anhängen.
Wenn doch, dann mit einem &.
Bsp.:
[== Javascript ==]
<script type="text/javascript">
var links = document.links,
forms = document.forms,
param = 'ref=vvp';
if (window.location.search.indexOf( 'ref=vvp' ) > -1) {
for ( i = 0; i < links.length; i++ ) {
if( links[i].href && links[i].href != '' && links[i].href.lastIndexOf( '#' , 0 ) === 0 ) // check if link has href and is no anchorlink
links[i].href = links[i].href + ( links[i].href.indexOf( '?' ) > -1 ? "&" : "?" ) + param;
}
for ( i = 0; i < forms.length; i++ ) {
forms[i].action = forms[i].action + ( forms[i].action.indexOf( '?' ) > -1 ? "&" : "?" ) + param;
}
}
</script>
Beitrag geändert von NaN (20. Februar 2014 08:34)
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
#6 19. Februar 2014 17:48
- jeff1980
- Server-Pate
- Ort: Dortmund
- Registriert: 26. November 2010
- Beiträge: 630
Re: [GELÖST] URL-Parameter für jede Seite
Hi NaN,
danke für das Script - das ist echt cool und funktioniert hervorragend :-).
Offline
#7 20. Februar 2014 08:35
- NaN
- Moderator
- Ort: Halle (Saale)
- Registriert: 09. November 2010
- Beiträge: 4.437
Re: [GELÖST] URL-Parameter für jede Seite
Hab das Script mal noch etwas angepasst, weil es sonst auch bei Ankerlinks das href-Attribut geändert bzw. gesetzt hätte.
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
Seiten: 1