Zum Inhalt springen

realurl für eigene extension

Erstellt am 22. Oktober 2010 · 3 Antworten · letzte Antwort am 29. Oktober 2010

Tags: RealURL, Frage

matschomaen ·

Hallo,

ein Kunde möchte die extra für ihn erstellte Extension realURL'lisiert haben.
Die Extension ist so aufgebaut, dass man schritt für schritt sein Produkt selber zusammenbauen kann.
Bei jedem Schritt werden 2 Paramater in der URL mitgegeben:
Der Schritt (tx_xyzproduktkonfigurator_pi1[step]=beispielschritt1) und das jeweilige Thema dieses Schrittes (z.b. Material => tx_xyzproduktonfigurator_pi1[material]).

Hier das erweiterte Array für die Extension:

$TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT']['postVarSets']['_DEFAULT']['material'] = array(
    
    array(
        'GETvar' => 'tx_xyzproduktkonfigurator_pi1[material]',
        'lookUpTable' => array(
            'table' => 'tx_xyzproduktkonfigurator_material',
            'id_field' => 'uid',
            'alias_field' => 'material',
            'maxLength' => 10,
            'addWhereClause' => ' AND NOT deleted',
            'useUniqueCache' => 1,
            'useUniqueCache_conf' => array(
                'strtolower' => 1,
                'spaceCharacter' => '-',
            ),
        ),
    ),
    
    array (
        'GETvar' => 'tx_xyzproduktkonfigurator_pi1[step]',
        'valueMap' => array(
            'choose-material' => 'material',
            'choose-diameter' => 'diameter'
        ),
        'noMatch' => 'bypass',
    )    
    
);

Danach deklariere ich das Array für den nächsten Schritt und so weiter.
Leider funktioniert das gar nicht...
Der erste Schritt wird gut angezeigt. Der nächste dann falsch.

Nun möchte ich die Steps vor Deklarierung des Arrays ertsmal abfragen per switch-case.
Leider gibt es die globalen Arrays, womit ich das abfragen könnte in der RealURL Extension noch nicht bzw sie sind leer.

Hat jemand eine Idee, wie ich die Parameter dennoch aus der URL auslesen kann, damit ich die switch-case Abfrage machen kann?

Oder hat jemand eine bessere Lösung?

VG, matschomaen

Julian.​Hofmann ·

Hallo.

Bin hinsichtlich realurl-Anpassung kein Experte, aber IMHO sehen die Array-Verschachtelungen komisch aus Sicher, dass der Key "step" innerhalb von "material" passt?

Kanne s sein, dass es eher so gehört?

$TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT']['postVarSets']['_DEFAULT'] = array(
 
    'material' => array(
        'GETvar' => 'tx_xyzproduktkonfigurator_pi1[material]',
        'lookUpTable' => array(
            'table' => 'tx_xyzproduktkonfigurator_material',
            'id_field' => 'uid',
            'alias_field' => 'material',
            'maxLength' => 10,
            'addWhereClause' => ' AND NOT deleted',
            'useUniqueCache' => 1,
            'useUniqueCache_conf' => array(
                'strtolower' => 1,
                'spaceCharacter' => '-',
            ),
        ),
    ),
 
    'step' => array (
        'GETvar' => 'tx_xyzproduktkonfigurator_pi1[step]',
        'valueMap' => array(
            'choose-material' => 'material',
            'choose-diameter' => 'diameter'
        ),
        'noMatch' => 'bypass',
    )    
 
);

Viele Grüße
Julian

matschomaen ·

Hi,

nein, daran liegt es leider nicht. Bin aber etwas weitergekommen.
Das Ding ist wohl, dass wenn ich ein alias_field angebe, dann verfälscht es mir beim nächsten Step die Werte, da dieser field_alias nicht eindeutig ist. =(
Es wird also anscheinend nicht mehr nach der UID gesucht, sondern nach dem Wert aus diesem alias_field...

Kann ich das irgendwie umgehen ohne das ganze Plugin neu zu programmieren?!

VG!

matschomaen ·

moin,

hab das nun lösen können.

lag an folgender Zeile:

'useUniqueCache' => 1

Nach Auskommentieren klappte es endlich.
Mit CONCAT dann noch Felder mit uid und so ausstatten, dann passt es.

Hier der Code:

'lookUpTable' => array(
                'table' => 'tx_xyzproduktkonfigurator_pi1[material]',
                'id_field' => 'uid',
                'alias_field' => 'concat(material,"-",uid)', 
                'maxLength' => 100,
                'addWhereClause' => ' AND NOT deleted AND NOT hidden',
                //'useUniqueCache' => 1,
            ),

VG und Danke!