Builder
Wenn Daten einer Tabelle, welcher nicht in der Sitemap ist, in die Navigation laden möchte, kann folgendermassen vorgegangen werden.
- Ein Seite(fuman_page) Inputtyp muss vorhanden und konfiguriert sein (Wie bei Sitemap Action erklärt).
- Eine Aktion für die Tabelle welche in der Config hinterlegt ist (Wie bei Sitemap Action erklärt).
Die genaue Zuweisung wird über eine Klasse gesteuert, welche so aussehen kann:
- admin
- app
- ihrappname
- navigation
- ihrtabellenname
- ihrtabellenname.php
- ihrtabellenname
- navigation
- ihrappname
- app
Die Klasse muss in der App Config zugewiesen werden.
[web_frontend] navigation_builders = ,app_ihrappname_navigation_ihrtabellenname
Die Klasse kann entweder alle Einträge eines Tabelle in die Navigation oder einfügen oder anhand eines Queries:
class app_ihrappname_navigation_ihrtabellenname extends Fuman_Frontend_Sitemap_Builder_Page { public function build() { $parentItem = $this->_navigation->getItem('pageidderoberenseite'); if (is_null($parentItem)){ return; } $this->setParentItem( $parentItem ); $this->loadPageRecords('ihrtabellenname'); $parameters = new Fuman_Db_Parameters(); parent::build(); } }
Die Daten können auch anhand eines Queries mitgegeben werden:
class app_ihrappname_navigation_ihrtabellenname extends Fuman_Frontend_Sitemap_Builder_Page { public function build() { $parentItem = $this->_navigation->getItem('pageidderoberenseite'); if (is_null($parentItem)){ return; } $this->setParentItem( $parentItem ); $relatedTable = Fuman_Registry::getTable('ihrtabellenname'); $parameters = new Fuman_Db_Parameters(); $sql = 'SELECT * FROM ihrtabellenname'; $this->loadPageRecordsWithRelatedDataSql($sql->getQueryString(), null, $parameters); parent::build(); } }