Link-Generator

Gesperrt
Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Link-Generator

Beitrag 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é
derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Re: Link-Generator

Beitrag 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
Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Link-Generator

Beitrag 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é
derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Re: Link-Generator

Beitrag 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
Zuletzt geändert von derSteffen am Sa 4. Aug 2012, 13:00, insgesamt 1-mal geändert.
Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Link-Generator

Beitrag 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:

Code: Alles auswählen

value=\"" . $aGet[$Data] . "\"
Textarea:

Code: Alles auswählen

></textarea>
wird zu

Code: Alles auswählen

>" . $aGet[$Data] . "</textarea>
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é
Gesperrt