Ich würde eigentlich eher einen anderen Ansatz wählen, und zwar weil er sich für beliebig andere Projekte einsetzen lässt und keine zusaätzliche Tabelle benötigt und kein Extra-Verwaltungssystem.
Die Idee dahinter ist, dass jeder Datensatz einen Artikel darstellt, und einzelne Felder dieses Artikels sind dann etwa CMS_HEAD, oder CMS_HTMLHEAD oder auch CMS_IMG, etc. Entsprechen muss man Vorlagen und Module für die Verwaltung der Datensätze und deren Ausgabe erstellen.
1. Du erstellst ein Layout, das nur den Inhalt CMS_CONTAINER[1] enthält, vorzüglich mit dem Namen CONFIG
2. Du erstellst mit HTML eine Tabelle folgeden Schemas und speicherst sie als OUTPUT eines neuen Moduls, etwa CONFIG_USERS:
- - - - - - - - - - - - - - - -
| Name | XXX
- - - - - - - - - - - - - - - -
| Vorname | YYY
...
3. Dort wo jetzt ein XXX steht, schreibst du im HTML-Code:
<?PHP echo "CMS_HTMLHEAD[1]" ?>
..dort wo Y steht:
<?PHP echo "CMS_HTMLHEAD[2]" ?>
und so weiter...
Wichtig ist, das das CMS_HTMLHEAD zwischen zwei "" steht, da das CMS_HTML im Editiermodus
\" enthält.
4. Nun erstellst du eine Template mit dem Layout CONFIG und setzt für Container 1 das Modul CONFIG_USERS.
Damit hast du die Eingabemaske erstellt. Nun kannst du für jeden Benutzer einen Artikel mit der Template CONFIG_USERS erstellen und so via Contenido die Felder einfach editieren und verwalten.
5. Ich würde jetzt eine neue Hauptkatgorie mit dem Namen 'Datenquellen' erstellen, und darunter etwa eine Kategorie 'Persondendatenbank'. Dieser Kategorie ordnest du als Standardlayout einfach CONFIG_USERS zu.
6. Damit die Artikel schneller gefunden werden würde ich noch das Modul CONFIG_USERS am Schluss folgendermassen ergänzen:
Code: Alles auswählen
<?PHP
if ($edit) {
$str = "CMS_HTMLHEAD[1] / CMS_HTMLHEAD[2] / ...";
// Filter alles ev. vorhandene HTML raus
$str = preg_replace('/<([^<^>]*)>/si','',$str);
$sql = "UPDATE
".$cfg['tab']['art_lang']."
SET
title = '$str';
WHERE
idart = $idart
;
;";
$db->query($sql);
}
?>
Das ändert den Artikeltitel etwa in "Müller / Fritz / München", so dass die Daten leichter gefunden werden
Weiter zur Ausgabe der Daten:
7. Nun erstellst du ein weiteres Modul, etwa USERS_AUSGABE, und eine neue Template, wo du dem entsprechenden Container eben dieses neue Modul, USERS_AUSGABE, zuordnest.
8. Nun kommt die komfortable
Contenido-API zum Einsatz, mit der du einfach alle Artikel der Datenquellen Kategorie ausliest und z.B. in einen Array speicherst. Diesen kannst du anschliessnd auch nach Bundesland, etc ordnen. Irgendwo must du noch eine Template speichern, so könnte das in etwa aussehen (Ist ein Modul, das ich zu ähnlichen Zwecken verwende, musst es nur noch etwas abändern):
Code: Alles auswählen
<?PHP
$catStart = 25;
$tpl['format'] =
'
<p>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<table width="100%" border="0" cellspacing="0" cellpadding="1">
<tr>
<td><strong><font color="#333333" size="2" face="Verdana, Arial, Helvetica, sans-serif">[FUNCTION]</font></strong></td>
</tr>
<tr>
<td><font color="#666666" size="2" face="Verdana, Arial, Helvetica, sans-serif">[NAME]</font></td>
</tr>
<tr>
<td><font color="#666666" size="2" face="Verdana, Arial, Helvetica, sans-serif">[ADDRESS]</font></td>
</tr>
<tr>
<td><font color="#666666" size="2" face="Verdana, Arial, Helvetica, sans-serif">[CITY]</font></td>
</tr>
<tr>
<td><font color="#666666" size="2" face="Verdana, Arial, Helvetica, sans-serif">[PHONE]</font></td>
</tr>
</table>
</td>
</tr>
<tr>
<td bgcolor="#666666"><img src="images/spacer.gif" width="1" height="1"></td>
</tr>
</table>
</p>
';
$artikel_param=array
(
'idcat'=>$catStart,
'client'=>$client,
'lang'=>$lang,
'start'=>false,
'order'=>"title",
'direction'=>"asc"
);
$artikel = new ArticleCollection($artikel_param);
while ($k_art=$artikel->nextArticle()) {
$k_str=$tpl['format'];
$k_str=preg_replace('/\[FUNCTION\]/si',$k_art->GetContent('htmlhead',1),$k_str);
$k_str=preg_replace('/\[NAME\]/si',$k_art->GetContent('htmlhead',2),$k_str);
$k_str=preg_replace('/\[ADDRESS\]/si',$k_art->GetContent('htmlhead',3),$k_str);
$k_str=preg_replace('/\[CITY\]/si',$k_art->GetContent('htmlhead',4),$k_str);
$k_str=preg_replace('/\[PHONE\]/si',$k_art->GetContent('htmlhead',5),$k_str);
$k_str=preg_replace('/\[EMAIL\]/si',$k_art->GetContent('head',6),$k_str);
$k_str=preg_replace('/\[EMAIL_ENC\]/si',eml_encode($k_art->GetContent('head',6)),$k_str);
echo $k_str;
}
?>
Wie gesagt, diese Methode hat folgende Vorteile:
- Kann sehr schnell zu anderen Zwecken, etwa auch zu einem Gästebuch umgeschrieben werden
- Keine externe Verwaltung nötig, da jeder Datensatz einen Artikel darstellt und so einfach per Contenido editiert, gelöscht und verwaltet werden kann.
- Es ist leicht, nachher einen Redaktor einzuweisen, da dieser sowieso schon an Contenido gewöhnt ist (oder zumindest sein sollte).
Die Nachteile:
- Du solltest PHP und SQL ziemlich gut kennen, und natürlich Contenido
- Beim ersten Mal ist es etwas aufwändig, nacher dafür umso schneller.
Ich verwende diese Methode schon zu mehreren Zwecken, unter anderem für ein Gästebuch, ein Kontakteverzeichnis, ein Linkverzeichnis, eine Bildergalerie (noch in Entwicklung) und bin sehr zufrieden damit.