Seite 1 von 1
Link-Generator
Verfasst: Di 15. Mai 2012, 14:15
von Spider IT
Hallo,
bei einem Projekt ist das folgende Modul als kleines "Helferlein" entstanden.
Wer's brauchen kann, viel Spaß damit
Link-Generator
Dieses Modul generiert einen Link aus dem Content (ausgewählte Felder) des Artikels. Sinnvoll in Verbindung mit einem Formular, welches je nachdem woher der Besucher kommt unterschiedliche Vorgabewerte in den Eingabefeldern haben soll. Dafür wird dieses Modul im beschreibenden Artikel eingebunden, per Konfiguration werden die entsprechenden Felder (CMS_HTMLHEAD, CMS_HTML usw) ausgewählt und mit einer Beschriftung versehen, welcher im Link den Parameter darstellt. Damit generiert das Modul dann einen anklickbaren Link zum angegebenen Artikel (z.B. Formular).
Installation
• Neues Modul anlegen
• Modul aus XML-Datei importieren
• Modul in (neues) Template einbinden
Download
Das Modul kann ab sofort
hier heruntergeladen werden.
Support
Nur hier im Forum
Gruß
René
Re: Link-Generator
Verfasst: Fr 3. Aug 2012, 19:15
von derSteffen
Hallo René,
wie müßte denn die Konfiguration im Formular aussehen, damit dort die Parameter eingetragen werden?
Ich verwende xtcDynSpryForm und habe hier ein Textfeld "Angebot" und ein Textfeld "Termin" angelegt.
Der generierte Link aus dem beschreibenden Artikel schaut ganz gut aus:
Code: Alles auswählen
http://www.domain.de/wcms/cms/front_content.php?idart=94&Angebot=%26Uuml%3Bber+Uns&Termin=15.05.2025
oder gibt es bei den Umlauten Probleme?
Danke Dir
MfG Steffen
Re: Link-Generator
Verfasst: Sa 4. Aug 2012, 09:21
von Spider IT
Hallo Steffen,
deine Vermutung ist richtig, die Umlaute (und andere Sonderzeichen), die html-encoded sind, müssen zuerst dekodiert werden.
Ich habe dafür ein Update erstellt (V.1.1), welches auf der Seite als Download verfügbar ist.
Einfach im Modul per Import die neue XML-Datei importieren, dann sollte es funktionieren.
Gruß
René
Re: Link-Generator
Verfasst: Sa 4. Aug 2012, 10:34
von derSteffen
Danke René,
als der Link klappt jetzt ... aber nur in der Statuszeile!
Code: Alles auswählen
http://www.domain.de/wcms/cms/front_content.php?idart=94&Angebot=Über+Uns&Termin=15.05.2025
aber im Quelltext und somit dann auch die Url in der Adresszeile des dann aufgerufenen Artikel sieht so aus:
Code: Alles auswählen
http://www.domain.de/wcms/cms/front_content.php?idart=94&Angebot=%DCber+Uns&Termin=15.05.2025
Leider werden auch die Inhalte nicht in das Formular übertragen (wobei ich mir hier gar nicht sicher bin ob ich das richtig mache).
Sehe ich das richtig, dass ich in den aufzurufenden Artikel (Formular) dort einfach zwei Inputfelder anlege, welche"Angebot" und "Termin" heißen oder muss ich das anders handhaben?
Vielen Dank
MfG Steffen
Re: Link-Generator
Verfasst: Sa 4. Aug 2012, 11:14
von Spider IT
Hallo Steffen,
das Modul "xtcDynSpryForm" kann in der vom Autor angebotenen Form keine per GET oder POST eingetragene Daten (wieder) in die Formularfelder eintragen.
Du brauchst also ein Formularmodul, welches das kann (hast du bereits).
Für alle anderen
Um die Anpassung selbst vorzunehmen, musst du am Anfang des Output-Codes folgendes einfügen:
Code: Alles auswählen
################################################################
################## REQUEST-Parameter auslesen ##################
################################################################
$aGet = array();
foreach ($_REQUEST as $key => $value) {
if (is_array($value)) {
for ($i = 0, $n = count($value); $i < $n; $i ++) {
$aGet[$key][] = urldecode($value[$i]);
}
} else {
$aGet[$key] = urldecode($value);
}
}
Dann musst du bei jedes auszugebenden HTML-Element (Pflichtfelder und Nicht-Pflichtfelder) den Vorgabewert einstellen.
Achtung! Nachfolgende Codeteile sind Beispiele und ggf. anzupassen!
Textfeld:
Textarea:
wird zu
Select:
Code: Alles auswählen
foreach($FieldsOptionArray as $DataSelect => $OptionRequire){
if($DataSelect==$Data){
foreach($OptionRequire as $DataSelect2 => $OptionRequireName){
$Fields.="<option value=\"".$OptionRequireName."\"" . (($aGet[$Data] == $OptionRequireName) ? ' selected="selected"' : '') . ">".$OptionRequireName."</option>";
}
}
}
oneradio und onecheckbox:
Code: Alles auswählen
" . (($aGet[$Data] == $Data) ? ' checked="checked"' : '') . "
grpradio:
Code: Alles auswählen
foreach($FieldsOptionArray as $DataSelect => $OptionRequire){
if($DataSelect==$Data){
$count=1;
$countOptionRequire=count($OptionRequire);
foreach($OptionRequire as $DataSelect2 => $OptionRequireName){
$Fields.="<span style=\"display: block; float: left; width: " . intval(100 / $countOptionRequire) . "%;\"><input type=\"radio\" value=\"".$OptionRequireName."\" name=\"".$Data."\" id=\"".sitReplaceInvalidChars($Data).$count."\"" . (($aGet[$Data] == $OptionRequireName) ? ' checked="checked"' : '') . " />".$OptionRequireName."</span>";
if((is_int($count/$Require[4]))AND($countOptionRequire!=$count)){$Fields.="<br class=\"clear\" />";}
$count++;
}
}
}
grpcheckbox:
Code: Alles auswählen
foreach($FieldsOptionArray as $DataSelect => $OptionRequire){
if($DataSelect==$Data){
$count=1;
$countOptionRequire=count($OptionRequire);
foreach($OptionRequire as $DataSelect2 => $OptionRequireName){
$Fields.="<span style=\"display: block; float: left; width: " . intval(100 / $countOptionRequire) . "%;\"><input type=\"checkbox\" value=\"".$OptionRequireName."\" name=\"".$Data."[]\" id=\"".sitReplaceInvalidChars($Data).$count."\"";
for ($i = 0, $n = count($aGet[$Data]); $i < $n; $i ++) {
if ($aGet[$Data][$i] == $OptionRequireName) {
$Fields .= ' checked="checked"';
break;
}
}
$Fields .= " />".$OptionRequireName."</span>";
if((is_int($count/$Require[4]))AND($countOptionRequire!=$count)){$Fields.="<br class=\"clear\" />";}
$count++;
}
}
}
Gruß
René