MarxCMS 2.0 Readme

MarxCMS 2.0

Anforderungen

Allgemeines

Einstellungen

Einstellungen sind in der config.inc.php zu finden.

Einstellungsname Empfohlen Beschreibung
CFG_TITLE_ORDER_H1_BEFORE_TITLE true Soll für die Ermittlung des Webseitentitels zuerst <h1> und dann <title> betrachtet werden oder umgekehrt?
CFG_PLACE_METATAGS_ON_TOP true Sollen einzufügende Metatags nach <head> (TOP) or vor </head> (BOTTOM) stattfinden?
CFG_DATE_FORMAT Y-m-d H:i:s \G\M\TO Datumsformat.
CFG_INTERRUPT_AT_BOTTOM_DEFAULT true Ausgaben von Interrupts werden hinter den Content gepackt. (Kann durch Interrupts verändert werden)
CFG_INTERRUPT_DO_CONTINUE true Darf standardgemäß nach einem Interrupt fortgesetzt werden? (Kann durch Interrupts verändert werden)
CFG_EXTENSION .html Dateinamenserweiterung für alle Dateien, die von MarxEngine verarbeitet werden. (Achtung: Siehe auch Eintrag in der .htaccess)
CFG_STRICT_ERROR_REPORTING true Soll Error-Reporting von PHP sehr strikt sein? (Gute Codequalität wird erzwungen)
CFG_UTF8_SITEMAP true Soll die Sitemap (*.txt) in UTF8 verfasst werden?
CFG_ALLOW_DIRECTORY_LISTING true Soll Directory-Listing erlaubt werden oder nicht?
LNG_UNKNOWN_TITLE Unknown Der Titel einer unbekannten Seite.
PASS_CONTENT_STYLE_TAG_INTO_DESIGN true Derzeit keine Unterstützung für externe Stylesheets.
$disallow_dirs array() Enthät Präfixes, die nicht im System zugelassen sind.

Mitgelieferte Lösungen und Beispiele

Processing

Kurz: Der Content wird in das Designsheet eingebettet. Danach kommen alle anderen Ressourcen (Metatags) hinzu. Interrupts werden ausgeführt. Zuerst wird das Designsheet evaluiert Dann am ENDE wird der Rest evaluiert.

Genauer (allerdings trotzdem nicht absolut ausführlich):

  1. Inhalte des Auto-Include werden ausgeführt
  2. (Der Page-Controller wird aufgerufen)
  3. PHP-Variablen zu magischen Variablen werden erstellt
  4. Es wird geprüft, ob die Seite existiert. Eine Errorpage wird ausgegeben.
  5. Search for interrupt meta tags and execute them (backup content)
    1. In Backup: Remove all comments
    2. Evaluieren
  6. Design finden
  7. Menüs finden
  8. Metatags finden
  9. Title erhalten + Tags strippen
  10. Style auslesen (siehe PASS_CONTENT_STYLE_TAG_INTO_DESIGN)
  11. Body extrahieren
  12. Interrupt-Dinge appenden
  13. Designsheet laden und evaluieren
    1. Magic Constants
    2. PHP-Evaluierung
    3. Alle URLs (href, src, etc.) werden auf den neuen Pfad umgewandelt
  14. Insert Content into design
  15. Insert the specific styles
  16. Load and insert meta tags into design
  17. Load and insert menu into design
  18. Remove all comments from output
  19. Replace Magic consts
  20. Löschen des Backups (alle magic constants fertig)
  21. Remove all comments
  22. Evaluation and Output
  23. Call filters and modify contents
  24. Final output

Zusätzlich bereitgestellte Seiten

Dateien

_* Dateien oder Verzeichnisse, die mit "_" beginnen werden nicht in die Sitemap übernommen.
*.html Alle html-Dateien werden von der Marx-Engine geparsed und mit Design, Menüs, Metatags usw. versehen. PHP Code ist erlaubt. Alle anderen Dateien werden nicht durch die MarxEngine verarbeitet.
#design_*.html Designdateien.
Standard: ./#design_default.html wird bei fehlender Metatag-Information automatisch eingebunden. Ist keine solche Datei vorhanden, wird im übergeordneten Verzeichnis gesucht. *empty* erzeugt ein leeres Dummy-Design im HTML 4.01-Standard. Dies entspricht dem Zustand, wenn kein Default-Design verfügbar ist.
(Verzeichnisse) Erhalten von der MarxEngine ein Directory-Listing, sofern keine index.html besteht.
#error_notfound.html Die Seite, die angezeigt wird, wenn eine Seite nicht gefunden wurde. Auch hier wird in übergeordneten Verzeichnissen gesucht. Die Fehlerseiten werden in das Design eingearbeitet.
#autoincludes/ Enthält *.inc.php Dateien, die alle automatisch eingebunden werden.
Das Verzeichnis sollte gesperrt werden.
#filters/ Enthält wie bei den autoincludes ebenfalls .inc.php Dateien mit dem Unterschied dass diese hier vor der Ausgabe aufgerufen werden und die Funktion haben, $content vor der Ausgabe zu Modifizieren (Beispiel: Kommentare entfernen, Formatierungen durchführen, E-Mail-Adressen erkennen und schützen etc.) Die Filter sind ebenfalls gut dafür geeignet, eigene magische Wörter im $content zu ersetzen.
Info: Die Filter werden NACH der PHP-Ausführung ausgeführt.
Das Verzeichnis sollte gesperrt werden.
#interrupt_*.html Ein Interrupt ist in der Lage, den Zugang zu kontrollieren (z.B. Passwort- oder Jugendschutz).. Soll der Zugang blockiert werden, kann die() verwendet werden. Wird die() verwendet, werden magische Schlüsselwörter nicht
übersetzt.. Die Interruptseiten werden NICHT in das Design eingebunden. Soll ein Interrupt in das Design eingebunden werden, muss $content überschrieben und das Script nicht beendet werden (Kommentare werden ein weiteres Mal entfernt). Jedoch sollte die Variable $interrupt_do_continue auf false gesetzt werden, damit nur das aktuelle Interrupt ins Design eingefügt wird und die nachfolgenden Interrupts nicht mehr ausgeführt werden. Soll die Seite komplett überschrieben werden (inkl. Title, Metatags, Design und Menu), muss auch $original_content und der Dateiname $content_file (wegen $LASTMOD$) überschrieben werden.
Tipp: Einlass mit Cookies realisieren. Das Cookie mit JavaScript erstellen, um eine unnötige POST-Anfrage zu verhindern.
Anmerkung: Gibt ein Interrupt etwas aus, wird die Ausgabe am Ende des Contents-Teils ($CONTENT$) angefügt.
Ausnahme: Die Ausgabe wird oben angefügt, wenn $interrupt_output_at_bottom auf false gesetzt wird. Es können $interrupt_outputs_top und $interrupt_outputs_bottom verändert werden, um die Ausgaben individuell zu
konfigurieren (nicht empfohlen!)
Standard: #interrupt_default.html wird bei fehlender Metatag-Information automatisch eingebunden. Es wird in übergeordneten Verzeichnissen gesucht. Eine Metatag-Information überschreibt den Default-Interrupt. *empty* gilt als leerer Interrupt.
#metatags_*.html Standard: #metatags_default.html wird bei fehlender Metatag-Information automatisch eingebunden. Es wird in übergeordneten Verzeichnissen gesucht. *empty* ist möglich, um keine Metatags einzubinden.
Die Metatags, die durch die Contentdatei definiert wurden, werden nach <head> des Designsheets eingefügt. (siehe CFG_PLACE_METATAGS_ON_TOP)
#menu_*.html

Es kann auf $reqfile zugegriffen werden, wenn festgestellt werden soll, welche Seite gerade aufgerufen ist (auch mit ausgeschalteten Register-Globals).
Standard: #menu_default.html wird bei fehlender Metatag-Information automatisch eingebunden. Es wird in übergeordneten Verzeichnissen gesucht. *empty* ist möglich, um keine Metatags einzubinden.
Bei mehreren Menüs im Design ist auch #menu_default2.html etc. möglich.

Magic Constants

Magische Wörter in Content-, Menü- oder Designdateien sowie Metatags:

$SUBn$
n=1..n
Relativ zu unserer System-URL können wir einzelne Teile der URL anzeigen. Es wird ein Slash angehängt.
z.B. www.example.com/marx/a/b/c/ . $SUB1$ wird zu a/
$SEGn$
n=0..n
$SEGn$ := /$SYSTEM_REL_URI$$SUB1$..$SUBn$
Sehr gut geeignet für Logo-Grafiken, die auf die Hauptseite zurückführen.
$TITLE$ Titel der Seite. $TITLE$ wird bestimmt durch die Contentdatei. <h1> wird vor <title> ausgewertet. (siehe CFG_TITLE_ORDER_H1_BEFORE_TITLE)
$LASTMOD$ Änderungsdatum der jeweiligen Contentdatei (*)
$CONTENT$ Einfügeposition für den Content (*)
$MENU$ Einfügeposition des Menüs (definiert durch die Contentdatei) (*)
$SOFTWARE$ Fügt den Namen und die Version von MarxEngine hinzu
$CURYEAR$ Das aktuelle Jahr (vierstellig)
$EML_DOMAIN$ The current domain for email addresses (example.com).
$DOMAIN$ The current domain.
$SYSTEM_URI$ The system's root URI.
$SYSTEM_REL_URI$ The system's relative URI. (nothing instead of '/' at the beginning)
$SYSTEM_URI$ Definiert als $DOMAIN$$SYSTEM_REL_URI$
$CUR_DIR_URI$ The current directory URI.
$RELDIR$ The current directory RELATIVE to the engine-base.(nothing instead of '/' at the beginning)
$CUR_DIR_URI$ Definiert als $SYSTEM_URI$$RELDIR$

(*) = nicht in Metatags erlaubt

Beispiel-Metatags in Content-Dateien (nicht in Designdateien):

Achtung! Existiert ein Metatag doppelt, so wird nur das erste Vorkommen ausgewertet und es erfolg keine Warnung. Ein Metatag, der mehrere Angaben erlaubt (z.B. menu, interrupt oder metatags) erlaubt die Angabe mehrerer Dateien mit einem Strichpunkt (";") getrennt.

Ideen für die zukünftigen Versionen / TODOs

Limitations

Changelog

2.0.6 (2010-08-30)

Magic Constants sind nun möglich in Menüs und Metatags (RemoveComments+MagicConstants 2 Schritte nach hinten geschoben)

2.0.5 (2010-08-30)

Url-Iterator weiter verbessert.

2.0.4 (2010-08-30)

Url-Iterator weiter verbessert.
Readme enthält nun keine unescaped Magic-Constants mehr und ist HTML-Kodiert.

2.0.3 (2010-08-29)

CSS-Basis wird nun besser geparsed.
Mail-Filter verbessert.

2.0.2

Kleinere Änderungen

2.0.1

Kleinere Änderungen

2.0.0 (2010-08-07)

Das komplette System wurde überarbeitet. Die größte Änderung ist, dass nun zugehörige Dateien wie Menü's Designs im selben Verzeichnis wie der Content liegen und dass Content und Ressourcen nun gemischt sind.

1.x

Die Versionsgeschichte der ursprünglichen Version wurde nicht dokumentiert.

Herausgeber

Daniel Marschall