Sprunglinks

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\PageBuilder {


    public function build() {
        $parentItem = $this->navigation->getItem('pageidderoberenseite');

        if (is_null($parentItem)){
            return;
        }

        $this->setParentItem(
            $parentItem
        );

        $this->loadPageRecords('ihrtabellenname');
        $parameters = new \Fuman\Db\Parameters();

        return parent::build();
    }


}

Die Daten können auch anhand eines Queries mitgegeben werden:

class app_ihrappname_navigation_ihrtabellenname extends \Fuman\Frontend\Sitemap\Builder\PageBuilder {


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

       return parent::build();
    }


}