jester wrote:
auch der guten Dokumentation von CMSms überrascht
Danke für die Blumen

- ich bin mit dem aktuellen Zustand der Doku alles andere als zufrieden. Es gibt noch zu viele Lücken, um die "komplexe Einfachheit" zu verstehen.
Das Zusammenspiel der einzelnen Templates und Styles sowie Modulen und Tags zu begreifen ist nicht leicht.
Unter anderem ein Punkt, der mir noch fehlt.
Jetzt habe ich aber statt zwei Elementen (HTML-Seite und dazugehöriges Stylesheet) noch ein drittes Element - den Menümanager.
Jain. Der Einfachheit halber zitiere ich hier mal meine Doku von
http://demo.cmsmadesimple.de/index.php? ... ue-manager:
Mit der Muster-Installation werden bereits drei Templates mitgeliefert. Diese sind für die meisten Webseiten ausreichend, da das Menü einfach nur eine Liste ist, die mittels CSS gestaltet wird.
Der Menümanager ist zwar für die Generierung der Menüs erforderlich, aber im Normalfall kannst du ihn genau so schnell wieder vergessen. Du musst dir nur die CSS-Klassen/IDs aus den MenuManager-Templates entnehmen.
Bei meinen Projekten fange ich im Normalfall immer mit den mitgelieferten Templates/Stylesheets an. Die sind vielfach getestet und können auch mit den verschiedenen Browser umgehen (erforderliche Hacks etc.). Ich muss das Rad also nicht noch einmal erfinden ...
wird also über das CSS-Icon mit einem oder mehreren (! das war mir auch nicht sofort klar, dass das geht!) Stylesheets verknüpft.
Noch eine der Lücken, die ich meinte ...
Ein Menü erhalte ich über die Zeile {cms_module module="menumanager" template='name des menutemplates das ich verwenden will'}
Aktuell kannst du auch {menu template='name des menutemplates das ich verwenden will'} verwenden.
Weil ich aber kein Programmierer bin, finde ich die Menütemplates (z.B. simplemenu.tpl) extrem schwer lesbar und verständlich.
Das ist Smarty, die Template-Engine von CMSms - guckst du hier
http://smarty.php.net/
Was fängt wo an und hört wo auf? Vor allem - welche Klassen und Elemente-Namen werden verwendet und was meinen sie genau?
Ich bin zwar auch kein Programmierer, aber ich versuchs einfach mal

. Bleiben wir einfach mal bei dem MenuManager-Template simple_navigation.tpl:
Code: Select all
{* CSS classes used in this template:
.activeparent - The top level parent when a child is the active/current page
li.active0n h3 - n is the depth/level of the node. To style the active page for each level separately. The active page is not clickable.
.clearfix - Used for the unclickable h3 to use the entire width of the li, just like the anchors. See the Tools stylesheet in the default CMSMS installation.
li.sectionheader h3 - To style section header
li.separator - To style the ruler for the separator *}
Zu Beginn eines jeden MenuManager-Templates werden die verwendeten CSS-Klassen aufgeführt:
.activeparent - Klasse für die Gestaltung des übergeordneten Menü-Eintrags der aktuellen Seite (so vorhanden)
li.active0n h3 - n bezeichnet die Ebene des Menü-Eintrags. Damit kann die aktive Seite jeder Ebene separat gestaltet werden. Der Menü-Eintrag der aktiven Seite ist nicht klickbar.
.clearfix - Wird verwendet, damit die unklickbaren h3 die gleiche Breite haben wie die restlichen Listen-/Menü-Einträge. Die Klasse wird im Stylesheet Tools festgelegt.
li.sectionheader h3 - Klasse für die Gestaltung des Inhaltstyps SectionHeader
li.separator - Klasse für die Gestaltung des Inhaltstyps Separator
Enthält das Menü aktive Einträge? Falls ja, Öffnung einer
Code: Select all
{foreach from=$nodelist item=node}
Schleife für die Abfrage aller Menü-Einträge
Code: Select all
{if $node->depth > $node->prevdepth}
{repeat string="<ul>" times=$node->depth-$node->prevdepth}
Hat der aktuelle Menü-Eintrag untergeordnete Seiten?
Falls ja, Eröffnung einer weiteren
Code: Select all
{elseif $node->depth < $node->prevdepth}
{repeat string="</li></ul>" times=$node->prevdepth-$node->depth}
Falls nein, Schließung der
Code: Select all
</li>
{elseif $node->index > 0}</li>
{/if}
Wenn noch weitere Menü-Einträge vorhanden sind, wird nur der Listen-Eintrag geschlossen.
Code: Select all
{if $node->current == true}
<li class="currentpage"><h3><dfn>Current page is {$node->hierarchy}: </dfn>{$node->menutext}</h3>
Formatierung des aktuellen Menü-Eintrags
Code: Select all
{elseif $node->parent == true}
<li class="activeparent"><a class="activeparent" href="{$node->url}"{if $node->accesskey != ''} accesskey="{$node->accesskey}"{/if}{if $node->tabindex != ''} tabindex="{$node->tabindex}"{/if}{if $node->titleattribute != ''} title="{$node->titleattribute}"{/if}><dfn>{$node->hierarchy}: </dfn>{$node->menutext}</a>
Formatierung des übergeordneten Eintrags des aktuellen Menü-Eintrages
Code: Select all
{elseif $node->type == 'sectionheader'}
<li class="sectionheader">{$node->menutext}
Formatierung für den Inhaltstyp "SectionHeader"
Code: Select all
{elseif $node->type == 'separator'}
<li class="separator" style="list-style-type: none;"> <hr />
Formatierung für den Inhaltstyp "Separator"
Code: Select all
{else}
<li><a href="{$node->url}"{if $node->accesskey != ''} accesskey="{$node->accesskey}"{/if}{if $node->tabindex != ''} tabindex="{$node->tabindex}"{/if}{if $node->titleattribute != ''} title="{$node->titleattribute}"{/if}{if $node->target != ''} target="{$node->target}"{/if}><dfn>{$node->hierarchy}: </dfn>{$node->menutext}</a>
{/if}
Formatierung aller anderen Menü-Einträge
Code: Select all
{/foreach}
{repeat string="</li></ul>" times=$node->depth-1}</li>
</ul>
{/if}
Abschluss der Abfrage-Schleife und Schließung aller geöffneten
Die genaue Bedeutung der Bezeichner($node->url usw.) findest du in der Hilfe des MenuManagers.
Hier finde ich die Dokumentation, auch wenn die Templates kommentiert sind, nicht mehr so leicht verständlich. Und das finde ich eben leider auch nicht in der Demo-Installation erklärt.
Wie gesagt, eines von vielen Projekten, die ich noch in der Schublade habe

...