Zum Inhalt springen

realurl für eigene Extension

Erstellt am 11. Dezember 2006 · 5 Antworten · letzte Antwort am 13. Dezember 2006

Tags: RealURL, Frage

maop ·

Hallo,
ich möchte für meine Erweiterung die Parameter der Urls mit realURL ersetzen. Es funktioniert soweit schon, nur mit dem einen Parameter komme ich nicht weiter.

'param1' => array(
array(
'GETvar' => 'ext_name[parameter1]',
'lookUpTable' => array(
'table' => 'tabellenname',
'id_field' => 'uid',
'alias_field' => 'name',
'addWhereClause' => ' AND NOT deleted',
'useUniqueCache' => 1,
'useUniqueCache_conf' => array(
'strtolower' => 1,
'spaceCharacter' => '-',
),
),
),
),
'param2' => array(
array(
'GETvar' => 'ext_name[parameter2]',
'lookUpTable' => array(
'table' => 'tabellenname',
'id_field' => 'uid',
'alias_field' => 'product_name',
'addWhereClause' => ' AND NOT deleted', 
'useUniqueCache' => 1,
'useUniqueCache_conf' => array(
'strtolower' => 1,
'spaceCharacter' => '-',
),
),
),
),

Der Parameter werden bei realurl ja durch eine DB-Abfrage mit dem Wert einer anderen Spalte (alias) ersetzt. Das funktioniert so weit auch, so lange es sich um Primärschlüssel handelt.

Der 2. Parameter ist allerdings ein zusammengesetzter Primärschlüssel. Wie sieht dort die Abfrage aus? wie kann ich in der ext_localconf auf einen anderen Parameter zugreifen?
Dieser Parameter müßte in die 'addWhereClause' mit rein oder geht das irgendwie anders?

Kann mir da jemand helfen?

maop ·

Hallo steffenk,

die URL-Parameter sehen wie folgt aus:

kategorie_id=3&produkt_id=8&shop_id=14&action=produkt_ansehen
bzw. nur
kategorie_id=3&shop_id=14&action=kategorie_ansehen

produkt_id und shop_id können einfach ersetzt werden, weil es primärschlüssel sind

bei der kategroie_id müßte die DB-Abfrage aber lauten '... WHERE shop_id=14 AND kategroie_id=3' um den entsprechenden Alias zu bekommen.

Gruß
Marcel

steffenk ·

wirf mal einen Blick in die class.tx_realurl.php, Funktion lookUpTranslation - da findet die Auswertung statt.
Du kannst also bei table auch 2 Tabellen angeben und die addWhereClause entsprechend ausweiten.
Da Du ja in php bist, kannst Du den anderen Parameter auch unterbringen, also über ...['param1']['GETvar'], musst Du mal mit rumspielen.
Du kannst ja in der entsprechenden Funktion ein debug einsetzen, das Dir die Select-Klausel ausgibt.

maop ·

Hallo,

wie genau kann ich den Parameter an die addWhereClause ranhängen?

Wie kann ich auf ['param1']['GETvar'] zugreifen? Steht dort überhaupt der aktuelle Parameterwert drin? Dort wird doch nur der Parametername gespeichert (der von realurl dan ausgewertet wird)

Wenn ich ['param1']['GETvar'] oder den kompletten Array-Pfad an die Stelle schreibe gibt es Fehler.

Hier nochmal mein genauer Code:

'anbieter' => array(
array(
'GETvar' => 'tx_moprodukte_pi1[merchant_id]',  !!!hier steht der benötigte Parameter drin
'lookUpTable' => array(
'table' => 'tx_moprodukte_merchants',
'id_field' => 'uid',
'alias_field' => 'name',
'addWhereClause' => ' AND NOT deleted',
'useUniqueCache' => 1,
'useUniqueCache_conf' => array(
'strtolower' => 1,
'spaceCharacter' => '-',
),
),
),
),
'produkt' => array(
array(
'GETvar' => 'tx_moprodukte_pi1[product_id]',
'lookUpTable' => array(
'table' => 'tx_moprodukte_data',
'id_field' => 'uid',
'alias_field' => 'product_name',
'addWhereClause' => ' AND NOT deleted',
'useUniqueCache' => 1,
'useUniqueCache_conf' => array(
'strtolower' => 1,
'spaceCharacter' => '-',
),
),
),
),
'action' => array(
array(
'GETvar' => 'tx_moprodukte_pi1[action]',
),
),

'kategorie' => array(
array(
'GETvar' => 'tx_moprodukte_pi1[category_id]',
'lookUpTable' => array(
'table' => 'tx_moprodukte_data',
'id_field' => 'category_merchant_id',
'alias_field' => 'category_merchant',
'addWhereClause' => ' AND NOT deleted AND merchant=', !!!!hier muss der Paramater rangehängt werden'
'useUniqueCache' => 1,
'useUniqueCache_conf' => array(
'strtolower' => 1,
'spaceCharacter' => '-',
),
),
),
),

Vielen Dank für Hilfe!!!

steffenk ·

hast Du mal probiert, ganz dreist den Get-Wert einzusetzen ?

'addWhereClause' => ' AND NOT deleted AND merchant='.intval($_GET['tx_moprodukte_pi1']['merchant_id']),