Zum Inhalt springen

Parameter im typolink ändern u.a Sprachwechsel

Erstellt am 4. August 2004 · 3 Antworten · letzte Antwort am 6. August 2004

Tags: Links, Frage

Martoro ·

ich baue gerade einen Sprachwechsellink allerings möchte ich nicht die standardmethode aus /media/scripts/example_languageMenu nutzen da ich noch weitere parameter auf der seite nutze und die sonst alle von hand in dem script einbauen müsste

menu.Flag.10 = TEXT
menu.Flag.10.value = deutsch
menu.Flag.10.typolink.parameter.data = field:uid
menu.Flag.10.typolink.additionalParams= &Lang=en

bisher gibt es zwei parameter Lang(en/de) Flash(on/off) und die sollen natürlich erhalten bleiben. es könnten aber noch mehr werden und daher möchte ich mich da nicht festlegen
der code oben funktioniert. allerdings wird der string "&Lang=en" einfach an den url string anghängt das füht dann u.a zu derartigen url's

index.php?id=1&Lang=de&Lang=en

Frage
1. ist das problematisch das die Lang Variable im url string zweimal vorkommt
2. wie kann in einem typolink einen Parameter überschreiben und alle anderen einschließlich der id erhalten

möglicherweise habe ich auch die funktionen der typolink property noch nicht ganz verstanden

danke schonmal Martin

Martoro ·

ich bin der antwort auf der spur

TYPOSCRIPT

CONFIG.10.typolink.params.type = 98
CONFIG.10.typolink.userFunc = user_Functions->addLinkParam

PHP

<?php
class user_Functions {
   var $cObj;    

   function addLinkParam ($content, $conf) {

      t3lib_div::debug( $content );
      t3lib_div::debug( $conf);  

      return '<A HREF="'.$content["url"].'"'.$content["targetParams"].$content["aTagParams"].'>';
   }
}
?>

Aber wie bekomme ich nun einen parameter an das script übergeben
soweit ich das bisher verstanden habe sollten doch die parameter als array übergeben werden

ich erwarte also bei conf einen array der so ausieht

array("params"->array("type"->"98") )

allerdings konnt bei $conf gar nix an ... wo ist der denkfehler und wie setze ich parameter dafür

gruß Martin

Martoro ·

Ich habs jetzt
Script

typolink.userFunc = user_Functions->addLinkParameters
typolink.userFunc.Lang = de

PHP

<?php
# Allgemeine Funktionsklasse
# Author Martin Ficzel

class user_Functions {
   function addLinkParameters ($content,$conf) {
        # Parameter von url lösen
        $newURLArray = explode("?", $content["url"], 2);
        $newURLFile = $newURLArray[0];
        $newURLParams = $newURLArray[1];
        $newParamString = "";

        if ( isset($newURLParams) ) {
            # Parameter Array zerlegen
            $paramArray = explode("&", $newURLArray[1] );
            $oldParams = Array();
            foreach (array_keys($paramArray ) as $key) {
                #werte und keys zerlegen
                $temp = explode("=", $paramArray[$key],2);
                if (count($temp) ==2) { 
                    # und im assoziativem array ablegen
                    $oldParams[$temp[0]] = $temp[1];
               }
            } 
            # array conf auf array mappen
            $newParams = array_merge ($oldParams, $conf); 
            # parameter string wieder zusammensetzen
            $paramArray = Array();
            foreach (array_keys($newParams) as $key) {
                $paramArray[$key] = $key."=".$newParams [$key];
            }
            $newParamString = implode("&",  $paramArray );
        }
        # parameter und url wieder zusammensetzen
        $newURL = $newURLFile."?".$newParamString;
        # ATag zurüchgeben
        return '<A HREF="'. $newURL.'"'.$content["targetParams"].$content["aTagParams"].'>';
    }
}

?>

jetzt kannst du über
typolink.userFunc.myVar = myValue
beliebige Variablen dem Link mitgeben und die alten werte werden überschrieben

gruß Martin