Hi zusammen!
Irgendwie fällt mir zu meinem Problem kein gescheiter Titel ein. Nun ja.
Folgende Sache.
Ich habe eine Extension für einen Konzertveranstalter geschrieben und mich mit RealUrl nicht wirklich beschäftigt.
Meine Links sehen daher zum Beispiel folgendermaßen aus:
http://www.domain.de/main/tickets/event/1//91/1///misc/f7a2bc72ad.html
Also Kraut und Rüben.
Ich habe mich nun dran gesetzt die Sache zu optimieren und bin auf die tolle Sache der lookUpTable gestossen.
Daher lautet selbiger Link momentan:
http://www.domain.de/main/tickets/data/kuenstler/rocky_horror_show.html?tx_meineext_pi1%5Bdetail%5D=1&cHash=f7a2bc72ad
Etwas besser also...
Das Problem ist nun, dass ich bei der damaligen Programmierung die Parameter hätte besser gestalten können und jetzt die Suppe auslöffen muss.
Wenn man zum Beispiel einen bestimmten Künstler haben möchte, dann wird der Paramter tx_meineext_pi1['artist'] auf 1 gesetzt und in tx_meineext_pi1['showUid'] steht die entsprechende uid des Künstlers.
Bei einer Veranstaltung ist das ähnlich:
tx_meineext_pi1['event'] = 1
tx_meineext_pi1['showUid'] = 57 // beispiel
Hier steht in showUid die uid der Veranstaltung
Und dann das ganze noch für Orte und Kategorien ...
Meine postVarSets sehen folgendermaßen aus:
'postVarSets' => array (
'_DEFAULT' => array(
'data' => array (
array (
'GETvar' => 'tx_meineext_pi1[artist]',
'valueMap' => array (
'kuenstler' => 1,
),
'noMatch' => 'test',
),
array (
'condPrevValue' => 'kuenstler',
'GETvar' => 'tx_meineext_pi1[showUid]',
'lookUpTable' => array (
'table' => 'tx_data_artist',
'id_field' => 'uid',
'alias_field' => 'name',
'addWhereClause'=> 'AND NOT deleted',
'useUniqueCache'=> 1,
'useUniqueCache_conf' => array (
'strtolower' => 1,
'spaceCharacter' => '_',
),
),
),
array (
'GETvar' => 'tx_meineext_pi1[city]',
'valueMap' => array (
'ort' => 1,
),
'noMatch' => 'test2',
),
array (
'condPrevValue' => 'ort',
'GETvar' => 'tx_meineext_pi1[showUid]',
'lookUpTable' => array (
'table' => 'tx_data_ort',
'id_field' => 'uid',
'alias_field' => 'name',
'addWhereClause'=> 'AND NOT deleted',
'useUniqueCache'=> 1,
'useUniqueCache_conf' => array (
'strtolower' => 1,
'spaceCharacter' => '_',
),
),
),
),
),
),
Ich habe also versucht die entsprechenden Parameter an die entsprechenden Tabellen per lookup zu schicken, um einen aussagekräftigen Alias zu erhalten. Das ganze soll dann mit dem enstprechenden Parameter versehen werden (ort/kuenstler) und nur dann aufgerufen werden, wenn der Parameter gesetzt ist (condPrevValue).
Das ganze funktioniert jetzt aber nur für den ersten Part, d.h. das die URL für die Anfrage nach einem Künstler wie oben beschrieben aussieht (für mich perfekt), aber die URL für einen Ort sieht folgendermaßen aus:
http://www.domain.de/main/tickets/data//172/ort.html?tx_meineext_pi1%5Bdetail%5D=1&cHash=d6e89906f7
Hier steht also nirgendwo 'ort', noch der Name des Ortes (Stadthalle oder so)
So... Und nun die Frage aller Fragen
Woran liegt es, dass es beim Künstler funktioniert und beim Ort nicht.
(Ich habe auch mal testweise die beiden Arrays ausgetauscht (Reihenfolge) mit dem Ergebnis, dass der Ort funktioniert und der Künstler nicht. An der SQL-Abfrage kann es also nicht liegen)
Wäre echt nett, wenn mir da jemand zur Seite stehen könnte.
Grüße
McGregor