XNavigation: Unterschied zwischen den Versionen
Aus Contao Community Documentation
Tril (Diskussion | Beiträge) (→Alte Versionen) |
Tril (Diskussion | Beiträge) (→Anpassen) |
||
(3 dazwischenliegende Versionen von einem Benutzer werden nicht angezeigt) | |||
Zeile 52: | Zeile 52: | ||
== Beschreibung == | == Beschreibung == | ||
+ | {{stub}} | ||
+ | Mit xNavigation lassen sich Navigationen und Sitemaps erzeugen. Eigentlich liefert Contao dafür bereits ein Modul, dieses lässt sich aber nicht beliebig erweitern. | ||
+ | xNavigation ist nicht die einzige Erweiterung, die sich mit dem Problem beschäftigt. Alternativ gibt es bspw. die [[Backboneit navigation]], die jedoch etwas weniger abstrakt aufgebaut ist. | ||
+ | |||
+ | xNavigation zeichnet sich durch folgende Funktionalitäten aus: | ||
+ | |||
+ | * Aufbau der Navigation in einem Item-Tree | ||
+ | ** Intern wird mit einem Item-Tree gearbeitet. Dieser basiert auf der [https://github.com/bit3/php-flexi-tree bit3/php-flexi-tree] Bibliothek. | ||
+ | * Unterstützung von Events | ||
+ | ** Intern werden zur Kommunikation und zum Aufbau Events verwendet. | ||
+ | * Lazy-Loading des Item-Tree's | ||
+ | ** Anstatt alle Items in einem Zug zu laden, werden die Items sukzessiv bei Bedarf geladen. Die dadurch entstehende "Entzerrung" sorgt für eine höhere Performance durch bessere Verteilung der IO/Datenbank Last und sie verhindert das erzeugen unnötiger Items. | ||
+ | * Individualisierbare Bedingungen | ||
+ | ** Für gewöhnlich definiert die Navigationserweiterung selbst wann Einträge angezeigt werden sollen und wann nicht. Bei xNavigation geschieht dies durch ein Set von Bedingungen, das man selbst aufbauen '''muss'''. Dadurch erreicht man eine nie dagewesene Flexibilität. Einfach mal einen Teilbaum ausblenden? Kein Problem, mit einer eigenen Bedingung die sich bequem über das Backend konfigurieren lässt überhaupt kein Problem. | ||
+ | * Flexible Provider | ||
+ | ** Die Einträge und deren Detailinformationen werden von sogenannten Providern geliefert. Welche Provider in welchem Menü verwendet werden kann frei bestimmt werden, damit ist es sehr einfach festzulegen, welche Einträge in welchem Menü überhaupt angezeigt werden. | ||
+ | |||
+ | == Internas == | ||
+ | |||
+ | Intern arbeitet xNavigation mit der [https://github.com/bit3/php-flexi-tree bit3/php-flexi-tree] Bibliothek. Genau genommen primär mit der ''event driven'' Implementierungen. | ||
+ | Durch die Verwendung der ''event driven'' Implementierung entsteht das ''lazy loading''. Die ''event driven'' und die statischen (normalen) Items können aber auch beliebig kombiniert werden. | ||
+ | Der Nachteil dieser Technik ist allerdings, dass der ganze Item-Tree nicht mehr stateless ist, was aber für den Einsatz in Contao vertretbar ist. | ||
+ | |||
+ | Beim erzeugen des Item-Tree's wird ein eigener EventDispatcher verwendet. Das ist notwendig, weil es sonst unmöglich ist, Provider einem Menü zuzuordnen. D.h. es ist nicht möglich, über globale Events auf die Generierung des Item-Tree's einzugreifen. | ||
+ | |||
+ | == Anpassen == | ||
+ | |||
+ | {{stub}} | ||
== Alte Versionen == | == Alte Versionen == |
Aktuelle Version vom 9. Juli 2014, 09:45 Uhr
xNavigation steht für extreme extendable and flexible navigation und stellt eine leicht erweiterbare Navigation zur Verfügung, die nicht nur die Seitenstruktur, sondern auch Artikel, Inhaltselemente, News, Events und mehr abbilden kann.
Inhaltsverzeichnis
Pakete
Erweiterungs-Übersicht | |
---|---|
Name | bit3/contao-xnavigation |
Name des Entwicklers | Tristan Lins (tril) |
Entwickler Webseite | http://bit3.de |
Link zum Extension Repository | https://packagist.org/packages/bit3/contao-xnavigation |
Link zum Tracker | https://github.com/bit3/contao-xnavigation |
Das Hauptpaket stellt das Framework, die Verwaltung von Bedingungen, Providern und Menüs, sowie die Module/Inhaltselemente zur Verfügung.
Achtung: Das Hauptpaket alleine liefert keine Provider mit. Verwenden Sie einen der folgenden Provider um Menüpunkte erzeugen zu können! |
Erweiterungs-Übersicht | |
---|---|
Name | bit3/contao-xnavigation-page |
Name des Entwicklers | Tristan Lins (tril) |
Entwickler Webseite | http://bit3.de |
Link zum Extension Repository | https://packagist.org/packages/bit3/contao-xnavigation-page |
Link zum Tracker | https://github.com/bit3/contao-xnavigation-page |
Das Page Paket stellt Provider für die Seitenstruktur zur Verfügung.
Erweiterungs-Übersicht | |
---|---|
Name | bit3/contao-xnavigation-article |
Name des Entwicklers | Tristan Lins (tril) |
Entwickler Webseite | http://bit3.de |
Link zum Extension Repository | https://packagist.org/packages/bit3/contao-xnavigation-article |
Link zum Tracker | https://github.com/bit3/contao-xnavigation-article |
Das Article Paket stellt Provider für Artikel zur Verfügung. Damit lassen sich die Artikel von Seiten in der Navigation anzeigen.
Erweiterungs-Übersicht | |
---|---|
Name | bit3/contao-xnavigation-content |
Name des Entwicklers | Tristan Lins (tril) |
Entwickler Webseite | http://bit3.de |
Link zum Extension Repository | https://packagist.org/packages/bit3/contao-xnavigation-content |
Link zum Tracker | https://github.com/bit3/contao-xnavigation-content |
Das Content Paket stellt Provider für Inhaltselemente zur Verfügung. Damit lassen sich die Inhaltselemente von Artikeln in der Navigation anzeigen.
Beschreibung
Unvollständiger Artikel: dieser Artikel ist noch nicht sauber bearbeitet.
Bitte erweitere ihn und entferne erst anschliessend diesen Hinweis. |
Mit xNavigation lassen sich Navigationen und Sitemaps erzeugen. Eigentlich liefert Contao dafür bereits ein Modul, dieses lässt sich aber nicht beliebig erweitern.
xNavigation ist nicht die einzige Erweiterung, die sich mit dem Problem beschäftigt. Alternativ gibt es bspw. die Backboneit navigation, die jedoch etwas weniger abstrakt aufgebaut ist.
xNavigation zeichnet sich durch folgende Funktionalitäten aus:
- Aufbau der Navigation in einem Item-Tree
- Intern wird mit einem Item-Tree gearbeitet. Dieser basiert auf der bit3/php-flexi-tree Bibliothek.
- Unterstützung von Events
- Intern werden zur Kommunikation und zum Aufbau Events verwendet.
- Lazy-Loading des Item-Tree's
- Anstatt alle Items in einem Zug zu laden, werden die Items sukzessiv bei Bedarf geladen. Die dadurch entstehende "Entzerrung" sorgt für eine höhere Performance durch bessere Verteilung der IO/Datenbank Last und sie verhindert das erzeugen unnötiger Items.
- Individualisierbare Bedingungen
- Für gewöhnlich definiert die Navigationserweiterung selbst wann Einträge angezeigt werden sollen und wann nicht. Bei xNavigation geschieht dies durch ein Set von Bedingungen, das man selbst aufbauen muss. Dadurch erreicht man eine nie dagewesene Flexibilität. Einfach mal einen Teilbaum ausblenden? Kein Problem, mit einer eigenen Bedingung die sich bequem über das Backend konfigurieren lässt überhaupt kein Problem.
- Flexible Provider
- Die Einträge und deren Detailinformationen werden von sogenannten Providern geliefert. Welche Provider in welchem Menü verwendet werden kann frei bestimmt werden, damit ist es sehr einfach festzulegen, welche Einträge in welchem Menü überhaupt angezeigt werden.
Internas
Intern arbeitet xNavigation mit der bit3/php-flexi-tree Bibliothek. Genau genommen primär mit der event driven Implementierungen. Durch die Verwendung der event driven Implementierung entsteht das lazy loading. Die event driven und die statischen (normalen) Items können aber auch beliebig kombiniert werden. Der Nachteil dieser Technik ist allerdings, dass der ganze Item-Tree nicht mehr stateless ist, was aber für den Einsatz in Contao vertretbar ist.
Beim erzeugen des Item-Tree's wird ein eigener EventDispatcher verwendet. Das ist notwendig, weil es sonst unmöglich ist, Provider einem Menü zuzuordnen. D.h. es ist nicht möglich, über globale Events auf die Generierung des Item-Tree's einzugreifen.
Anpassen
Unvollständiger Artikel: dieser Artikel ist noch nicht sauber bearbeitet.
Bitte erweitere ihn und entferne erst anschliessend diesen Hinweis. |
Alte Versionen
Seit Version 1.5.0 ist das Modul xNavigation modular aufgebaut. Die Integration der Inhaltsnavigation und Newsarchiv-Navigation wurde extrahiert und wird über externe Module bereit gestellt.
Das modulare Konzept, erlaubt nun eigene Menüpunkte auf einfache Art und Weise zur Verfügung zu stellen. Details hierzu sind dem Handbuch zu entnehmen.
Eine Detaillierte Beschreibung findet sich hier Modulvorstellung in der Contao Community.