Ich besitze 2 tabellen. jos_photomuseum_hersteller und jos_photomuseum_laender.
Wobei die struktur der tabellen folgendermassen ist:
jos_photomuseum_hersteller
========================
id
hersteller
...
jos_photomuseum_laender
=======================
id
land
iso3166
...
die buildquery functions sind aufgeteilt, wobei ich normalerweise für die order so einen abschnitt verwende
das problem ist, dass wenn ich bei den herstellern, nach hersteller sortiere, und anschliessend auf die länder wechsleCode:function _buildContentOrderBy() { global $mainframe, $option; $filter_order = $mainframe->getUserStateFromRequest( $option.'.filter_order', 'filter_order', 'a.land', 'cmd' ); $filter_order_Dir = $mainframe->getUserStateFromRequest( $option.'.filter_order_Dir', 'filter_order_Dir', '', 'word' ); if ($filter_order == 'a.land') { $orderby = ' ORDER BY '.$filter_order .' '. $filter_order_Dir . ', a.iso3166 '. $filter_order_Dir; } else if ($filter_order == 'a.iso3166') { $orderby = ' ORDER BY '.$filter_order .' '. $filter_order_Dir . ', a.land '. $filter_order_Dir; } else { $orderby = ' ORDER BY '.$filter_order .' '. $filter_order_Dir; } return $orderby; }
$filter_order den Wert "a.hersteller" hat.Code:$filter_order = $mainframe->getUserStateFromRequest( $option.'.filter_order', 'filter_order', 'a.land', 'cmd' );
was natürlich zu einem sql error führt.
ursprünglich hab ich gedacht, dass $filter_order pro controller oder so neu generiert wird... oder so ähnlich
jedoch ist $filter_order immer für die ganze komponente anscheinend aktiv.
wie auch immer,
ich hab jetzt auf die schnelle so was gebaut:
was ich aber ziemlich hässlich finde... bei der sortierung hab ich da noch ne wissenslücke (na ja nicht die einzige in joomla)... aber es wurmt mich total.Code:function _buildContentOrderBy() { global $mainframe, $option; $filter_order = $mainframe->getUserStateFromRequest( $option.'.filter_order', 'filter_order', 'a.land', 'cmd' ); $filter_order_Dir = $mainframe->getUserStateFromRequest( $option.'.filter_order_Dir', 'filter_order_Dir', '', 'word' ); //workaround if($filter_order == 'a.hersteller') { $filter_order = 'a.land'; } if ($filter_order == 'a.land') { $orderby = ' ORDER BY '.$filter_order .' '. $filter_order_Dir . ', a.iso3166 '. $filter_order_Dir; } else if ($filter_order == 'a.iso3166') { $orderby = ' ORDER BY '.$filter_order .' '. $filter_order_Dir . ', a.land '. $filter_order_Dir; } else { $orderby = ' ORDER BY '.$filter_order .' '. $filter_order_Dir; } //dump($orderby); return $orderby; }
es muss doch ne generelle lösung für dieses problem geben. Oder ich hab irgendwo generell in den controllers oder anderswo ein code-snippet vergessen.
hat irgendjemand mir einen tipp (und nein, ich will nicht alle queries mit a.hersteller AS a.title und a.land AS a.title umschreiben, denn es werden sehr komplexe views mit vielen individuellen spalten nach denen sortiert werden soll, was dann wieder zu diesem problem führen wird).
Für jede Hilfe bin ich dankbar


LinkBack URL
About LinkBacks
Zitieren

Lesezeichen