Announcement

Collapse
No announcement yet.

Plugin / Modul System

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Plugin / Modul System

    Hallo,

    für ein umfangreicheres System sind wir gerade ein Framwork am planen, das auf dem ZendFramework aufsetzen soll. Die Ausgabe soll entweder mit XML/XSL oder mit Smarty erzeugt werden.

    Wir möchten auch ein Plugin System einplanen, so dass über definierte Schnittstellen einfach Erweiterungen des Systems eingepflegt werden können ohne am Core rumzuschrauben.

    Wir haben uns schon mehrere Modelle angeschaut und finden das System von Wordpress am besten geeignet für unsere Zwecke. Dort gibt es Hooks und Filter. Hooks zum einhängen von Logik an vordefinierten Stellen (Actions) und Filter zum verändern von Strings in der Ausgabe.

    (mehr zum Thema: http://codex.wordpress.org/Plugin_API )

    WordPress erlaub den Modulentwicklern Prioritäten für die Actions mitzugeben, d.h. wenn ein weiteres Modul sich an einem Hook eines anderen Module anhängt, wird das mit der höchsten Priorität zuerst ausgeführt.

    Soweit so logisch.

    Wir streiten uns jetzt, ob es sinnvoll ist, diese Prioriäten auch gleichzeitig dazu zu nutzen, die Reihenfolge in der Ausgabe (in unserem Fall erst mal XML) festzulegen.

    Beispiel:

    Meine Seite besteht aus dem Module A, dass innere Module AA, AB und AC enthält, die untereinander ausgegeben werden sollen. Alle drei inneren Module haben exakt die selbe Ausgabestruktur. Man braucht in diesem Fall also nur ein Sub-Template.

    Wir sehen mal von der Möglichkeit ab, Objekte mit CSS zu positionieren.

    Ich habe also im Modul A einen Hook, an dem sich die drei inneren Module anhängen. Am Hook angekommen wird nachgeschaut wer so alles Interesse hat an dieser Stelle ausgeführt zu werden und, somit werden die Module AA, AB und AC jetzt angesprochen und deren Output an dieser Stelle hinzugefügt.

    Im ersten Fall überlasse ich es dem Zufall in welcher Reihenfolge die inneren Module intern abgearbeitet werden und habe somit ein XML oder Array mit den Rohdaten, die an die Template Engine weitergegeben werden. Das Template bestimmt dann in welcher Reihenfolge die Daten er Module angezeigt werden.

    Vorteil: Der Designer kann entscheiden wann das Modul angezeigt wird.
    Nachteil: Prioritäten muss man an zwei Stellen Pflegen.

    Im zweiten Fall vergebe ich den inneren Modulen Prioritäten. AA bekommt 10, AB bekommt 20 und AC bekommt 30. Somit werden die Rohdaten schon Daten sortiert ausgegeben und ich kann ziemlich generisch mit einer Schleife über den Inhalt von A gehen und die Module erscheinen in der gewünschten Reihenfolge. Will ich die Reihenfolge ändern, wechsel ich lediglich die Priorität, kommt ein neues Modul hinzu lege ich die Priorität so fest, dass es an die gewünschte Stelle rutscht.

    Vorteil: Man hat eine Zentrale stelle an der die Ausgabeprio festgelegt wird
    Nachteil: Man muss sich eine exerne Verwaltung der Prioritäten überlegen, sonst wirds unübersichtlich.

    Meine Frage: Haltet ihr Lösung 1 oder 2 am elegantesten oder fällt euch spontan noch ein ganz anderer Ansatz ein?

    Vielen Dank schon mal, Grüße
    B3n
Working...
X