PyLucid Plugins sind im Grunde nichts anderes als Django Applikationen (vor v0.9 sind Plugins noch spezielle PyLucid Klassen).

PyLucid nutzt viele kleine Plugins für Teile der generieren html Seite.
Die Philosophie ist: Den Kern von PyLucid möglichst klein zu halten und alles was möglich ist, in Plugins auszulagern. Fast jeder Teil der cms Seite ist eine Plugin für zuständig. z.B.: Das Hauptmenü, die Suche, das Sitemap usw.

Mehr Information über die Plugin API findest du auf der Entwickler Dokumentaions Seite: http://www.pylucid.org/permalink/134/new-v09-plugin-api

Ein Plugin kann auf verschiedene Arten aktiviert bzw. eingebunden werden:

inline Methode

Die inline Methode funktioniert über die Django Template Engine. Mit dem lucidTag kann man plugins in die Seite einbinden. Der Tag wird dabei mit der "Ausgabe" des Plugins ersetzt.

Dabei kann ein lucidTag in dem globalen Seiten Template eingesetzt werden (z.b: Das Hauptmenü) oder auch in den CMS Seiten Inhalt.

Hier ein Beispiel wie man einen externen RSS Feed in die Seite einfügt:

1
{% lucidTag rss url="http url" title="a feed" %}

Eine Liste der verfügbaren LucidTags erhält man beim Editeren einer Seite wenn man auf den Punkt tag list klickt.

PluginPage

Aufwendigere Plugins können direkt in den Seitenbaum eingebunden werden. Dazu erstellt man eine sog. PluginPage.

Dazu geht man im Menü auf "PyLucid admin menu" / "create content" / "new plugin page" Dort erhält man eine Liste der verfügbaren Plugins.

context middleware

Eine Besonderheit stellt sie sog. "context middleware" dar. Diese Art Plugin ist dann notwendig wenn der Inhalt im render Prozess noch verändert werden kann. z.B. können beim breadcrumb plugin noch Links Einträge hinzugefügt werden. (Das Blog Plugin macht das, wenn man auf eine Detailansicht wechselt)

Eine context middleware ist kein Django Template Tag, sondern eine PyLucid eigene Erfindung ;) Die Syntax ist recht einfach aufgebaut und sieht so aus die ein HTML Kommentar:

1
<!-- ContextMiddleware PluginName -->

Plugin Dokumentation

Hier findest du information zu den einzelnen Plugins: