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

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();
    }


}