PageExtension

Um einen sauberen ojektorientierten Ansatz stärker zu verfolgen, kann ein Page-Objekt seitentypspezifisch über eigene Eigenschaften und Methoden erweitert werden. Erstellen Sie dazu im jeweiligen site-Verzeichnis des Seitentyps eine "page.php"-Datei:

Beispiele:

  • site/demo/news/list/page.php
  • site/demo/events/entry/page.php

In der "page.php" Datei wird die erweiterte Page-Klasse definiert. Der Klassenname (im Beispiel "PageNewsList") ergibt sich aus dem Prefix "Page" und der technischen Seitentypbezeichnung in Camelcase.

<?php class <strong>PageNewsList</strong> extends Page {    } ?></strong>

In dieser Klasse können nun über das Vererbungsprinzip eigene Methoden und Eigenschaften definiert werden.

Die Einbindung der erweiterten Page-Klasse erfolgt von System automatisch. D.h. alle Page-Objekte sind z.B. nach Verwendung der getPages Funktion als erweiterte Page-Objekte verfügbar.

wb_incandescent
Die "page.php"-Datei kann ebenso z.B unter dem Verzeichnis site/_global/news/list/page.php gelegt werden. Dann gilt die seitentyp-spezifische Page-Erweiterung für alle verfügbaren Mandanten.

Page-Objekt global erweitern

Um das Page-Objekt global (für alle Seitentypen mandantenübergreifend) zu erweitern, erzeugen Sie folgende Datei: site/_global/page.php. Die Klassenbezeichnung muss den Namen "PageGlobal" tragen.

<?php class <strong>PageGloba</strong>l extends Page {     } ?></strong>

Page-Objekt pro Mandant erweitern

Um das Page-Objekt für alle Seitentypen innerhalb eines bestimmten Mandanten zu erweitern, erzeugen Sie folgende Datei: site/MANDANT/page.php. Die Klassenbezeichnung muss den Namen "PageMANDANT" tragen (MANDANT = Name des eigenen Mandanten).

<?php class <strong>PageMANDANT</strong> extends Page {     } ?></strong>

Eigener Konstruktur

Möchten Sie beim Erzeugen des Page-Objekt Eigenschaften setzen oder Aktionen durchführen, erzeugen Sie einfach einen eigenen Konstruktor.
Achten Sie dabei darauf, dass der Konsruktor der Parent-Klasse Page immer aufgerufen werden muss!

<?php class <strong>PageNewsList</strong> extends Page {     public $anzahl;    /**   * Konstruktor  * @param Site $site   * @param array $field   */    public function __construct($site, $field)    {   <strong>parent::__construct($site, $field);</strong>        // Anzahl setzen        $this->anzahl = $this->extra['anzahl'] ? $this->extra['anzahl'] : 5;    } } ?></strong>
wb_incandescent
Das System merkt sich welche Seitentypen welche PageExtension verwendet. Wenn Sie eine neue PageExtension hinzufügen oder eine bestehende löschen, müssen Sie die Systemcache leeren bevor diese Änderungen wirksam werden.
wb_incandescent
Diese Erweiterung steht Ihnen ab EGOTEC Version 13 zur Verfügung.
warning
Die PageExtension nutzt PHP SPL Funktionen. Diese sind standardmäßig ab PHP 5.0.0 verfügbar und ab 5.3.0 auch immer aktiviert (können nicht deaktiviert werden). Sollten Sie eine PHP Version unter 5.3.0 verwenden und die PageExtensions nutzen, so vergewissern Sie sich, dass die SPL Funktionen bei Ihnen nicht deaktiviert wurden. Andernfalls kann keine vollständige Funktionalität gewährleistet werden.