Die JoomGallery erlaubt das HinzufĂĽgen von eigenen Routern. Hier erfahrt ihr, wie man das macht.
Das Prinzip
Grundsätzlich listed die JoomGallery in den Konfigurationen sämtliche PHP Dateien/Router, welche sich im Verzeichnis site\com_joomgallery\src\Service befinden und Router im Namen haben. Um einen eigenen Router hinzuzufügen, muss also eine PHP Datei hinzufügen, welche eine Router-Klasse enthält.
- Um einen modernen Router zu erstellen, muss die Router-Klasse von
Joomla\CMS\Component\Router\RouterViewextenden. - FĂĽr einen legacy Router, muss die Router-Klasse das
Joomla\CMS\Component\Router\RouterInterfaceimplementieren.
Die Property $displayName ist der Anzeige-Name des Routers, wie er in der Dropdown-Liste in der Konfiguartion angezeigt wird.
Schau auch in die allgemeine Dokumentation zum modernen Router:
Der moderne RouterEinen modernen Router
Das Erstellen eines modernen Routers ist recht einfach und zielfĂĽhrend. Dies ist das Template eines neuen Routers:
class CustomRouter extends DefaultRouter {
public static string $displayName = 'Custom Router';
public static string $image_parentID = 'catid';
public function __construct($app, $menu, $categoryFactory, $db) {
parent::__construct($app, $menu, $categoryFactory, $db, true);
// ... here comes your custom RouterView definitions
}
}
Im Konstruktor der Router Klasse können dann alternative RouterViews definiert werden. z.B kann definiert werden, dass die URL der Detail-Ansicht direkt als Kind der Galerie-Ansicht generiert wird.
/gallery/1-flugzeug.html
Dieses Beispiel braucht folgende RouterViews Definitionen:
$gallery = new RouterViewConfiguration('gallery');
$this->registerView($gallery);
$image = new RouterViewConfiguration('image');
$image->setKey('id')->setParent($gallery);
$this->registerView($image);
$this->attachRule(new MenuRules($this));
$this->attachRule(new StandardRules($this));
Nach diesem Prinzip können komplett eigene URLs generiert werden nach einer komplett eigener Logik.