|
|
|
|
|
|
|
|
das
ultimative Installationsmanual |
Besonders das /asgard/
- Administrations - Interface verwirrte mich zutiefst, und
ich brauchte einige Zeit um die Genialität von Midgard
zu durchblicken. Aber zum Glück gibt es ja die (viel
bessere) /admin/ - Seite
und die ist gleich viel übersichtlicher...
Die Standard-Login-Daten nach einer Neuinstallation sind:
User: |
admin |
Password: |
password |
Als allererstes sollten wir das Passwort des Administrators
ändern, eine gute Möglichkeit die "Group Administration"
auszuprobieren.
Dort gibt es unter "All persons" (auf den orangenen
Pfeil klicken) einen Benutzer der " Administrator, Midgard"
heisst. *click*
Dort auf "User account" gehen und ein neues Passwort
eintragen. Fertig!
Auf der Hauptseite gibt es fünf Hauptkathegorien:
Content Administration
Content contribution and modification |
Unter dieser Rubrik kann man ein Verzeichniss der Artikel
bearbeiten. Name dieser Pfade sind dabei "Topics",
ihr Inhalt "Articles". Jeder Topic hat eine
eindeutige ID auf der Midgard-Funktionen wie mgd_list_topic_articles_all(id)
arbeiten können um die entsprechenden Articles abzuarbeiten.
Wo und wann was von einem Artikel angezeigt wird entscheidet
jedoch die Implementierung in einer Page oder einem Style. |
|
Host Administration
Midgard host and directory management |
Hier
kommen wir über die Administration der unterschiedlichen
Hosts zum Page Admin. Hier gibt es wieder eine Verzeichnisstruktur.
Diesmal haben die Namen der "Verzeichnisse"
direkt etwas mit der URL zu tun. Wenn also z.B. der Host
"http://localhost:80/example/" heisst, und die
konkrete Page darunter im Verzeichniss "about"
heisst, dann wird diese Seite und Ihr Style angesprochen
wenn jemand "http://localhost:80/example/about/"
benutzt.
Was aber, wenn einzelne, unterschiedliche Seiten aufgerufen
werden?
Die erfragte Seite wird als erstes Argument an die Page
weitergeleitet, will jemand beispielsweise "http://localhost:80/example/about/hallo.html"
dann wird die Page "about" im Host "example"
aufgerufen mit folgenden Parametern:
$argc <= 1
$argv[0] <= "hallo"
daraus kann die Page dann entsprechenden Inhalt "zusammenzimmern". |
|
Layout Administration
Layout and style management |
Hier können Styles administriert werden. Ein Style
ist ein Gebilde, das sich ggf. aus mehreren Unterstyles
zusammensetzt und irgendwo den Inhalt in Form der obig
besprochenen Page einsetzt. Ansonsten besteht so ein Style
(wie auch schon die Page) nur aus HTML und PHP-Befehlen.
In Wirklichkeit wird nämlich beim Aufruf einer Seite
anhand der zugeordneten Page nur erst einmal der dieser
zugeordneten Style herausgefunden, und von diesem der
"ROOT" ausgeführt. Beim Abwickeln dieses
Styles fügt dieser dann den Content - die Page -
ein. Ein Style kann zudem Elemente definieren die die
Page dann nutzen kann um so das Design vom Inhalt zu trennen.
"Abgeleitete" Sub-Styles haben die nette Fähigkeit
alle Styleelemente die sie nicht selber definieren von
Ihrem Super-Style zu übernehmen. |
|
Group Administration
Group and person management |
Hier kann man die Benutzer administrieren. Während
ich in Nadmin Möglichkeiten gefunden habe Benutzern
spezielle Rechte zu vergeben ist mir das unter "normalem"
Midgard bisher nicht aufgefallen. Benutzer können
Gruppen zugeordnet werden. |
|
Snippets Administration
Snippetdirs and Snippets management |
Snippets haben Ihr eigenes Verzeichniss. Sie sind kleine
ausgelagerte Codeteilchen, die Styles oder Pages über
midgard-Funktionen hinzuladen können um so selbst
ein bisserl Platz zu sparen und das Ganze übersichtlicher
zu gestalten. |
|
Die einzelnen Style oder Page-Elemente können neben auf
der HTML-Ebene ein paar besondere Konstrukte enthalten:
<[name]> |
Der Style oder das Pageelement mit dem namen "name"
wird an dieser Stelle eingefügt. |
&(variablename); |
Der Inhalt der PHP-Variable "variablenname"
wird hier eingefügt. Also etwa gleich der Anweisung
<? echo $variablenname ?> (man bemerke das fehlende
$). |
&(object.field); |
Das gleiche mit $object->field . |
&(variable:modifier); |
Ähnliches. Jedoch wirkt ein Modifier auf die Art
der Ausgabe.
Die genaue Art der Modifier steht im Manual.
|
Wenn nun ein Browser eine Anfrage macht dann vergleicht mod_midgard
den Request mit der host-Table in der Midgard-Datenbank. Wenn
es einen Treffer gab, dann läuft Midgard die URL entlang
und sammelt dabei Page-Elemente und speichert sie in einem Apache
name-value Array. Neue, gleichnamige Elemente einer tieferen
Hierarchie überschreiben dabei die alten Elemente. Dies
passiert solange bis die richtige Page gefunden wurde. Von dieser
Seite wird dann der Style genommen und dort umgekehrt Elemente
bis zum ROOT gesammelt, wobei Elemente die schon vorhanden sind
(auch gleichnamige Page-Elemente) bestehen bleiben - und die
neueren verworfen werden. Diese Daten übernimmt dann die
Midgard-PHP-Extension und die midgard-root.php. Die Midgard-PHP-Extension
fügt die Seiten über das <[name]>
Konstrukt und andere oben genannte Konstrukte zusammen, und
übergibt dem PHP-Interpreter die resultierende Seite zur
Ausführung.
Leider weiss ich nicht ob Midgard cached, oder diesen Prozess
für jede Seite neu macht.
Um ein bischen mit den Möglichkeiten zu spielen können
wir in der Host-Administration einen neuen Host erzeugen.
Ich nenne ihn mal "beispiel".
Unter dem Layout-Admin gibt es nun einen neuen Style, den
"Default Style for <dein_Host>/beispiel"
Dort ändere ich den ROOT-Style infolgendes:
<html> <head> <title><[title]></title>
</head> <body> <table width="100%">
<tr height="200"><td height="200">
<[menu]> </td></tr><tr><td>
<(content)> </td></tr> </table>
</body> </html> |
(content) und [title] sind vordefinierte Namen, während
wir [menu] selbst definieren müssen.
Also füge ich ein neues Styleelement namens "menu"
ein:
<b>This | should | be | a | Menue</b> |
Die Seite benötigt noch eine Page, also über den Host-Admin
in den Page-Admin die ROOT-Page des Hosts /beispiel verändern:
Dies ist der Inhalt der Page |
Das Ergebniss sieht dann ungefähr so aus:
Im einzelnen stehen die Midgard-Funktionen im Midgard-Manual,
aber um den Einstieg zu vereinfachen hier ein paar Beispiele:
Eine Liste mit den drei obersten Topics, deren zusammenfassender
"Obertopic" die Nummer $topic_topic_id hat zusammenfassend
mit Abstract darstellen, und unter <der_aktuelle_host>/articles/<id>.html
zum Link anbieten:
<? /// Holt alle Artikel
$article = mgd_list_topic_articles_all($topic_topic_id);?>
<!-- Get only 3 newest --> <? /// fetch
selektiert den nächsten Artikel in der Liste
if ($article) for ($i = 0; $i < 3 && $article->fetch();
$i++) { ?>
<p><b><a href="&(mgdroot);/articles/&(article.id);.html">&(article.title);</a></b>
<? if ($article->abstract) { ?><br>&(article.abstract);<br><?
} ?> </p><? } ?> |
Nun in der Page "articles" auf die id reagieren und
den content des entsprechenden Articles darstellen:
<?
if ($argc == 1) $id = $argv[0];
if ($id && !mgd_is_article_in_topic_tree(9, $id))
$id = 0;
if ($id) $article = mgd_get_article($id);
if ($article) {
?> <h1>&(article.title);</h1>
<? if ($article->abstract) { ?> <p>&(article.abstract);</p>
<? } <!-- Ausgabe des Artikelinhalts in HTML-form
:h --> &(article.content:h); <? } else
{ ?><h1>Artikel nicht gefunden</h1><?
} ?>
|
So, und nun viel Spass mit Midgard!
|
|
|
|
|
|