Donnerstag, 9. Februar 2012


Artikel

Juli 2010 | Artikel

MODx: Revolution Fortsetzung, Teil 3

Teil 1   Teil 2   Teil 3   Teil 4   Teil 5   

Perlen im Backend

Eine sehr unscheinbare, aber sehr angenehme Funktionalität bieten die jeweiligen Quickupdates, Abbildung 4.

Ich möchte das gerne anhand eines Anwendungsfalles erklären: Bei einer laufenden Portalentwicklung ist gerade ein Template mit der entsprechenden Maske geöffnet. Dabei ergibt sich eine notwendige Ergänzung in einem verknüpften Chunk-Element. Jetzt einfach im Strukturmenü über das Kontextmenü das Quickupdate aufgerufen und schon öffnet sich ein separater Layer im geöffneten Fenster zur Bearbeitung, wobei die andere Formularmaske geöffnet und so erhalten bleibt.

Überhaupt wurde sehr viel Wert auf die Funktionalität gelegt, per Drap & Drop können die Sortierungen der Artikel/Dokumente geändert oder Verknüpfungen zwischen Template, Chunk und Snippet hergestellt werden, Abbildung 5.

Bei Evolution mussten bzw. müssen die Add-Ons (Snippets, Plug-ins, etc) noch händisch installiert werden, was nun automatisiert über den Package-Manager erledigt wird – ein paar Mausklicks und die gewünschte Erweiterung ist startklar.

Sie fragen sich, ja alles wunderbar, aber wenn ich eine mehrsprachige Seite erstellen muss? Mit MODx alles kein Problem …

Denn ganze ist sehr ansprechend für die heutzutage als Standard vorausgesetzte Mehrsprachigkeit gelöst. Beim Backend-Menüpunkt Lexikon Management (s.h. Abbildung 6) können alle Begriffe und Texte, die im Backend oder aber auch im Frontend so vorkommen, verwaltet und – wie Sie jetzt wahrscheinlich bereits ahnen – jeder Eintrag überall im System mit einer Anweisungslogik [[%language_string_key]] eingebunden werden. So wäre es auch möglich, dass dem Anwender die Berechtigung eingeräumt wird, seine nötigen Sprachbegriffe, wie zum Beispiel "mehr", "zurück" bequem über die Administrationsoberfläche in die jeweilige Sprache zu übersetzen. Die Zeiten von ausgelagerten Dateien à la lang_fr.inc.php sind also vorbei.

Neu im Angebot: Property Sets

Wer kennt es nicht, der Kunde bzw. Anwender würde gerne eine einfache Möglichkeit haben, verschiedene HTML-Fragmente zu definieren und einzubinden. Eine Widgetbox zum Beispiel, ist schon eine richtige Herausforderung und genau hier kommen die Property Sets ins Spiel. Vom Entwickler werden einfach Sets vordefiniert, dabei werden einzelne Felder (z.B. Überschrift, URL, Codec, etc) hinzugefügt. Nun kann der Redakteur einfach per Drap & Drop ein Chunk in seinen Content ziehen und automatisch öffnet sich ein Layer mit der vordefinierten Eingabemaske des Property Sets, in welchem schließlich die Daten befüllt werden.

Content Elements Evolution (Version 1) Revolution (Version 2)
Templates Zuweisung mittels Auswahl Zuweisung mittels Auswahl
Template-Variablen [*templatevar*] [[*templatevar]]
Chunks {{chunk }} [[$chunk]]
Snippets [[snippet]] [[snippet]]
Plug-ins Zuweisung über Events Zuweisung über Events
Module Keine Zuweisung Komponenten, keine Zuweisung
Content Tags
Platzhalter [+placeholder+] [[+placeholder]]
Links [~link~] [[~link]]
Systemeinstellungen [(system_setting)] [[++system_setting]]
Sprache [[%language_string_key]]

Tabelle 1: Die Tag-Syntax

Teil 1   Teil 2   Teil 3   Teil 4   Teil 5   

Kommentare

Gravatar Marc Hinse 06.07.2010
um 12:01 Uhr
Hallo Stefan,

vielen Dank für den ausführlichen Artikel über MODx und damit auch danke für mehr Reichweite dieses Systems!

Ein paar Anmerkungen zum Artikel:

1. MODx Revo wird MODx Evo nicht "ablösen". Beide Zweige werden weiter parallel gepflegt. Das Hauptaugenmerk liegt dabei in Zukunft natürlich auf Revo. Dennoch wird Evo weiterhin mit Updates und Bugfixes versorgt, das Core Team hat das ganz deutlich herausgestellt. Nicht dass Leute, die Evo benutzen, Angst davor haben, updaten zu MÜSSEN. Das Gegenteil ist der Fall. Evo wird weiterhin das System der Wahl sein, wenn es eher um kleinere Websites geht, bei denen es nicht auf die vorteile von Revo ankommt.

2. Die "must have" Addons auf Seite 4 sind allesamt für MODx Evo. Wayfinder ist auch für Revo erhältlich und wird auch weiterentwickelt. Ditto hingegen ist "depraced". Es existiert zwar eine Revo-Version, die jedoch nicht sonderlich performant ist. Ditto ist generell ein ziemliches Schwergewicht, mit dem sich zwar so gut wie alles anstellen lassen kann, aber eben desöfteren auf Kosten der Performance. In diese Presche springt das Snippet "getResources", das zwar (noch) nicht alle Features von Ditto aufweist, aber deutlich schlanker arbeitet.

Ähnliches gilt für:
eForm -> formIt
phx/If -> Im Core (also Standardparser) eingebaut
Document Manager: Gibt es imho noch nichts vergleichbares. Wobei die Sortierfunktion im Baum direkt funktioniert.

3. Mehrsprachigkeit
Hmmm, das stimmt so nicht ganz. Die Lexicon-Geschichte sorgt für das Übersetzen von einzelnen Strings. Diese werden in der Regel von Backend-Komponenten, Snippets etc verwendet und bei der Installation einer Erweiterung gleich mitinstalliert (bzw. falls nicht vorhanden, selbst übersetzt). Dies ist aber noch keine Frontend-Mehrsprachigkeit im herkömmlichen Sinne. Wie man sich diese einrichtet, bleibt einem selbst überlassen. In der Regel pflegt man einfach mehrere Bäume für die Sprachen, wobei man für die Zuordnung der einzelnen Sprachversionen noch Hand anlegen muss. Für Evo gibt es eine Erweiterung "YAMS", mit der in den Dokumenten selbst die andersprachigen Inhalte eingepflegt werden können. Nachteil: Eine echte 1:1-Übersetzung aller Inhalte ist schon fast ein Muss. Auf der Roadmap steht aber sowohl Versionierung (auch das fehlt bisher) als auch Internationalisierung im Frontend.

Die Community ist zwar eher klein, aber sehr fein. Von in manch anderen Foren üblicher Anfeindung und Arroganz ist hier zum Glück nichts zu spüren. Liegt wohl auch daran, dass es eben kein System für Leute ist, die überhaupt keine Ahnung von HTML+CSS haben. Ein Zusammenklicken des Systems ist kaum möglich, ohne nicht auch selbst zu definieren was man will. Und das ist das Schöne daran.

Danke nochmal für den Artikel!
Gruß Marc Hinse (aka MadeMyDay)
#zitieren
Gravatar Stefan 06.07.2010
um 17:41 Uhr
Hallo Marc,

macht man für MODx gerne und vielen Dank für deinen Input ...

@1: "Ablöse" ist vielleicht unglücklich ausgedrückt, aber so gemeint wie du es beschreibst. Wobei künftig hoffentlich nur mehr Revo verwendet wird ;-)

@2: Stimmt natürlich, war nicht so einfach zwischen Evo und Revo zu switchen … sind meines Erachtens trotzdem die besten Beispiele :-)

@3: Aus meiner Sicht schon, denn sobald sich mehrsprachige Seiten (sogar auf mehrere Arten) einrichten lasssen, ist ja die Möglichkeit gegeben und mit einer fixen Funktion oä. würden sich nicht mehr verschiedene Varianten (über Baumstruktur oder Templatevariablen) abbilden lassen.

@4: Bei Revolution wäre es, meines Erachtens, schon möglich ohne „HTML+CSS“ Kenntnisse eine Seite zusammenzuklicken (mit vorhandenen freien Templates über den Packagemanager), es wird natürlich nicht soweit gehen wie bei Wordpress.


Schöne Grüße,
Stefan
#zitieren
Gravatar Phoenix 15.07.2010
um 08:13 Uhr
Hallo

sehr schöner Artikel! Ich hatte auch einmal Kontakt mit ModX, allerdings war mir das Publizieren von verschiedenen Inhaltssituationen einfach zu kompliziert.
Ein Beispiel wäre:
Ich habe auf einer Seite oben Text, dann folgt ein Downloadblock mit 3-4 PDFs, danach kommt wieder einfacher Text und abschließend eine Galerie oder ein individuelles Kontaktformular.

Solche Situationen konnte ich nicht mit Modx lösen, sollte es aber machbar sein, wäre es schön wenn es auch noch genannt wird, denn meist scheiden Systeme bei einer Auswahl schon aus, da die Art und Weise Inhalte zu publizieren einfach zu schwer ist.

Danke ;)
#zitieren
Gravatar Marc 15.07.2010
um 08:46 Uhr
@Phoenix: So etwas lässt sich auf verschiedene Weise erzeugen. Es gibt das durchaus mächtige Instrument der Template Variablen (TVs) sowie die HTML-Fragmente namens Chunks. Diese lassen sich gegenseit referenzieren und einbinden. Also Könntest Du entweder mittels TV sagen, welche Elemente Du auf der Seite haben willst (Einfache Checkboxen zum Beispiel für Galerie, Formular etc.) oder diese direkt per Chunks im Contentfeld einbinden. Eine völlig flexible und sortierbare Inhaltsverwaltung (im Sinne von jetzt ein Formularblock, jetzt ein Textabsatz, dann wieder ein Formular) gibt es allerdings nicht. In der deutschen Community haben wir so etwas in der Mache (bloX/Xedit) inklusive Frontend-Editing, ist aber noch nicht so ganz fertig. #zitieren
Gravatar Sebastian 30.07.2010
um 19:34 Uhr

Phoenix:
Hallo

sehr schöner Artikel! Ich hatte auch einmal Kontakt mit ModX, allerdings war mir das Publizieren von verschiedenen Inhaltssituationen einfach zu kompliziert.

Ein Beispiel wäre:

Ich habe auf einer Seite oben Text, dann folgt ein Downloadblock mit 3-4 PDFs, danach kommt wieder einfacher Text und abschließend eine Galerie oder ein individuelles Kontaktformular.



Solche Situationen konnte ich nicht mit Modx lösen, sollte es aber machbar sein, wäre es schön wenn es auch noch genannt wird, denn meist scheiden Systeme bei einer Auswahl schon aus, da die Art und Weise Inhalte zu publizieren einfach zu schwer ist.



Danke ;)


Das tolle an MODx ist, dass du viele auf viele Wege lösen kannst. Z. B. könntest du die PDFs und die Galerie auch direkt im Dokument per Snippet (PHP-Schnipsel) aufrufen.
Dafür gibt es Snippets, die Dokumente zum Download anbieten - der Pfad zum Dokument könnte beispielsweise über die Parameter geliefert werden - und für Galerien gibt es ein paar Snippets. Es gibt welche, die sich automatisch aus einem Datei-Ordner generieren, und welche bei denen du über das Front-End Bilder einpflegen lassen kannst.

Insgesamt kannst du das ganze sicher sowohl über das Backend als auch über das Frontend lösen.

Ich habe bisher nur mit Evo(lution) produktiv gearbeitet, in Revo(lution) nur reingeschnuppert. Aber was bei Evo geht, geht bei Revo auch und eher einfacher (soweit ich das bisher beurteilen kann). Bei Revo kann es allerdings sein, dass noch ein paar Erweiterungen "fehlen" die Sachen flott lösbar machen - die werden aber wohl bald alle kommen - jetzt stürzen sich alle auf Revolution.

Insgesamt gilt bei sowas: Einfach mal im Forum fragen - in der Regel kommen innerhalb weniger Stunden oder weniger Tage Antworten, die in der Qualität zwischen Tipps, Links zu anderen Beiträgen und kompletten Lösungen variieren.

MODx rockt!
#zitieren