Ich stand kürzlich vor folgender Herrausforderung:
Auf einer Produktdetailseite wird auf eine „Jetzt online kaufen“ – Seite verlinkt, auf welcher es dann eine Liste mit Onlineshops gibt die das betreffende Produkt in der gewählten Farbe anbieten.
Dazu wird an die „Shopliste“ die Farbvarienten Id ermittelt, über die sich dann wieder auf das Produkt schließen lässt. (1 Produkte – n Farbvarianten).
In hübsch sollte die URL dann so aussehen:
…/online-kaufen/[produkt title]-[Farbvarianten-suffix]/
Umd das zu erreichen, braucht man Informationen aus zwei tabellen, was mit RealUrl, auf den ersten Blick eigentlich nach einer UserFunc schreit.
Aber man kommt tatsächlich ohne aus:
'GETvar' => 'tx_extkey_onlineshoplist[colorVariant]', 'lookUpTable' => array( 'id_field' => 'cv.uid', 'table' => 'tx_extkey_domain_model_colorvariant cv, ' . 'tx_extkey_domain_model_product p', 'alias_field' => 'CASE p.color_variants_title_handling ' . 'WHEN 0 THEN CONCAT(p.title,cv.title) ' . 'WHEN 1 THEN cv.title ' . 'WHEN 2 THEN p.title end', 'addWhereClause' => ' AND NOT cv.deleted AND '. 'cv.product=p.uid', 'useUniqueCache' => 1, 'useUniqueCache_conf' => array( 'strtolower' => 1, 'spaceCharacter' => '-' ) ) |
In dem Fall ist das sogar noch ein bischen komplizierter, weil sich der „farbliche“ Produktname unterschiedlich zusammen setzen kann, je nachdem um welches Produkt es sich handelt. Aber selbst das lässt sich abbilden, weil RealUrl das „alias_field“ einfach so an die DB durchreicht.