Textrinum ist durch Plugins erweiterbar
Zur Zeit gibt es 5 definierte Schnittstellen an denen ein Plugin eingreifen kann. Diese werden über Attribute im Element "interface" in der Datei "meta.xml.php" spezifiziert.
Aufbau der Datei "meta.xml.php"
Plugins liegen im Websiteordner "plugins". Ein Plugin sollte mindestens folgenden Grundaufbau/Ordnerstruktur besitzen:
Pluginname/conf/meta.xml.php
Unter "Pluginname/" können alle zur Funktionalität gehörenden Dateien liegen.
Die Datei "meta.xml.php" ist eine XML-Datei die Informationen über das Plugin bereithält. Aufbaufbau der Datei "meta.xml.php":
<?xml version="1.0" encoding="utf-8"?>
<!-- <?php die(); ?>-->
<textrinum_plugin>
<name> Pluginname </name>
<version> 0.9.1 </version>
<license><![CDATA[ license ]]></license>
<author><![CDATA[ Copyright holder ]]></author>
<webpage><![CDATA[ http://www.yourdomain.com ]]></webpage>
<description><![CDATA[ description ]]></description>
<interfaces>
<interface
type="standard_execution"
include_file=""
function=""
class=""
/>
<interface
type="page_execution"
include_file=""
function=""
class=""
/>
<interface
type="search_execution"
include_file=""
function=""
class=""
/>
<interface
type="htmleditor_images_execution"
html_file=""
/>
<interface
type="htmleditor_links_execution"
html_file=""
/>
</interfaces>
</textrinum_plugin>
Das Attribut "include_file" bezeichnet die PHP-Datei die inkludiert
werden soll - relativ zum Pluginordner. Beispiel:
include_file="action.php" liegt in
"plugins/Pluginname/action.php".
Das Attribut "function" bezeichnet die auszuführende Funktion. Beispiel: In action.php liegt die Funktion "foo". Die Attribute währen folglich include_file="action.php" function="foo".
Das Attribut "class" bezeichnet die zu instanzierende Klasse. Beispiel: In action.php liegt die Klasse "foo". Die Attribute währen folglich include_file="action.php" class="foo".
- "standard_execution" wird ausgeführt sobald eine Seite geladen wird (index.php).
- "page_execution" wird ausgeführt sobald eine Seite geladen wird (index.php), muss aber für jede Seite in ihrer Konfiguration extra angegeben werden.
- "search_execution"
wird ausgeführt sobald eine Suchanfrage signalisiert wird. Das Plugin
soll, falls es Daten vorhält, diese durchsuchen und die Ergebnisse dem
Hauptsuchprozess zur verfügung stellen.
- "htmleditor_images_execution" bietet Plugins eine Möglichkeit ein Userinterface in den Bilder Dialog des HTML/WYSIWYG - Editors einzublenden.
Das Attribut "html_file" bezeichnet die HTML-Ausgebende Datei dafür - relativ zum Pluginordner. - "htmleditor_links_execution" bietet Plugins eine Möglichkeit ein Userinterface in den Link Dialog des HTML/WYSIWYG - Editors einzublenden.
Das Attribut "html_file" bezeichnet die HTML-Ausgebende Datei dafür - relativ zum Pluginordner.
Konfiguration
Sofern eine Datei "plugins/Pluginname/configuration.php" existiert wird diese aufgerufen aus dem Seiten- oder Standardkonfigurationsdialog.
Vorgegebene Parameter für Funktionen und Klassen
Wird eine Funktion oder Klasse im interfaces/interface -Teil angegeben, werden dieser beim Aufruf Referenzen auf Variablen die die wesentlichen Teile des Inhalts enthalten übergeben.
Diese sind bei:
"standard_execution" -> $site, $page, $template
"page_execution" -> $site, $page, $template
"search_execution" -> $searchString, $results
Beispiel wie die entsprechende Funktion auszusehen hätte:
function foo(& $site,& $page,& $template){
$page['MAIN_CONTENT'] = '<h1>Hello World</h1>' . $page['MAIN_CONTENT'];
}
// search_execution
function testSearch($search, & $results){
//everything is optional
$item['ID'] = PAGE_ID;
$item['LANG'] = DEFAULT_LANGUAGE;
$item['TITLE'] = 'TestSearch works';
$item['LAST_CHANGED'] = time();
$item['URL'] = 'plugins/'.basename(dirname(__FILE__)).'/hello_search.htm';
$item['GET_VARS']['first'] = 'hello';
$item['GET_VARS']['second'] = 'search';
$item['TARGET'] = '_blank';
$item['SEARCHMATCH'] = 'just a demo and test';
$results[] = $item;
}
Beispiel wie die entsprechende Klasse (PHP4 - kompatibel) auszusehen hätte:
class Foo{
function Foo(& $site,& $page,& $template){
$page['MAIN_CONTENT'] = '<h1>Hello World</h1>' . $page['MAIN_CONTENT'];
}
}
// search_execution
class TestSearch {
function TestSearch($search, & $results){
//everything is optional
$item['ID'] = PAGE_ID;
$item['LANG'] = DEFAULT_LANGUAGE;
$item['TITLE'] = 'TestSearch works';
$item['LAST_CHANGED'] = time();
$item['URL'] = 'plugins/'.basename(dirname(__FILE__)).'/hello_search.htm';
$item['GET_VARS']['first'] = 'hello';
$item['GET_VARS']['second'] = 'search';
$item['TARGET'] = '_blank';
$item['SEARCHMATCH'] = 'just a demo and test';
$results[] = $item;
}
}