1 |
827
|
doc
|
// $Id$
|
2 |
|
|
|
3 |
|
|
show_menu2, version 4.5
|
4 |
|
|
=======================
|
5 |
|
|
Ist ein Code-Snippet f?r das CMS Website Baker. Es stellt einen kompletten Ersatz f?r die eingebaute Men?funtionalit?t zur Verf?gung. Alle f?r die Erzeugung des Men?s erforderlichen Daten werden durch eine einzige Datenbankabfrage erzeugt. Durch umfangreiche Anpassungsm?glichkeiten des erzeugten HTML-Code k?nnen alle m?glichen Men?arten (Listen, Breadcrumbs, Sitemaps, usw.) erzeugt werden.
|
6 |
|
|
|
7 |
|
|
---
|
8 |
|
|
Deutsche ?bersetzung von BerndJM. Dies ist eine weitgehend direkte ?bersetzung des englischen Originals. Bei ?bersetzungs- oder Interpretationsfehlern, bitte eine Email an bjm@wwnw.de.
|
9 |
|
|
---
|
10 |
|
|
|
11 |
|
|
INSTALLATION
|
12 |
|
|
============
|
13 |
|
|
1. Die aktuelle Version von http://code.jellycan.com/show_menu2/ herunterladen.
|
14 |
|
|
2. In das Admin-Backend der Website Baker Installation einlogen.
|
15 |
|
|
3. Erweiterungen -> Module aufrufen.
|
16 |
|
|
4. Wenn bereits eine fr?here Version von show_menu2 installiert ist, diese ?ber "Modul deinstallieren" ausw?hlen und deinstallieren.
|
17 |
|
|
5. Im Abschnitt "Modul installieren" das im Schritt 1 heruntergeladene zip-File ausw?hlen und installieren.
|
18 |
|
|
|
19 |
|
|
|
20 |
|
|
BENUTZUNG VON SHOW_MENU2
|
21 |
|
|
========================
|
22 |
|
|
Um show_menu2 zu benutzen muss das verwendete Template an den Stellen modifiziert werden, an denen das Men? erscheinen soll. Bitte beachten: Wenn alte Men?aufrufe ersetzt werden, m?ssen unbedingt auch die entsprechenden neuen Parameter verwendet werden die show_menu2 ben?tigt.
|
23 |
|
|
|
24 |
|
|
In den meisten F?llen gen?gt bereits der Standardaufruf ohne weitere Parameter von show_menu2. In diesem Fall werden die Vorgabewerte verwendet, dies erzeugt ein Men? das die aktuelle Seite und die Unterseiten der aktuellen Seite anzeigt:
|
25 |
|
|
|
26 |
|
|
show_menu2();
|
27 |
|
|
|
28 |
|
|
Bitte beachten: der Aufruf von show_menu2 ist PHP und muss normalerweise in PHP-Codezeichen eingeschlossen werden (ausser der Aufruf erfolgt bereits innerhalb von PHP Code):
|
29 |
|
|
|
30 |
|
|
<?php show_menu2(); ?>
|
31 |
|
|
|
32 |
|
|
Dieses Vorgabe Men? erzeugt bereits ein komplettes Men? auf Listenbasis mit etlichen Klassen, die eine leichte Formatierung mittels CSS erm?glichen. Es wird z.B. die Klasse "menu-current" zu dem <li> Tag des aktuellen Men?punktes hinzugef?gt, zus?tzlich erh?lt jeder Men?punkt der Unterpunkte enth?lt die Klasse "menu-expand". Dies erlaubt es sehr differenzierte CSS Regeln f?r die einzelnen Men?punkte aufzustellen.
|
33 |
|
|
Zum Beispiel:
|
34 |
|
|
|
35 |
|
|
li.menu-expand { font-weight: bold; }
|
36 |
|
|
li.menu-current { background: red; }
|
37 |
|
|
|
38 |
|
|
Im Abschnitt "HTML-Ausgabe" findet sich eine detaillierte Beschreibung welche Klassen welchem Element zugeordnet werden. Durch die Verwendung von verschiedenen Parametern bei dem show_menu2 Funktionsaufruf lassen sich auch recht umfangreiche und unterschiedliche Men?strukturen erzeugen. Um beispielsweise nur Men?punkte aus der obersten Ebene der Men?struktur darzustellen, k?nnte man folgenden Aufruf verwenden:
|
39 |
|
|
|
40 |
|
|
show_menu2(0, SM2_ROOT, SM2_START);
|
41 |
|
|
|
42 |
|
|
Oder um beispielsweise bis zu zwei Unterebenen der aktuellen Seite anzuzeigen:
|
43 |
|
|
|
44 |
|
|
show_menu2(0, SM2_CURR+1, SM2_CURR+2);
|
45 |
|
|
|
46 |
|
|
Es gibt jede Menge M?glichkeiten, um die unterschiedlichten Men?strukturen zu erzeugen, zahlreiche Beispiele dazu findet man auf der Demo-Website: http://code.jellycan.com/sm2test/
|
47 |
|
|
|
48 |
|
|
|
49 |
|
|
FUNKTION
|
50 |
|
|
========
|
51 |
|
|
Der komplette Aufruf und die Vorgabe Parameterwerte f?r show_menu2 sind wie folgt:
|
52 |
|
|
|
53 |
|
|
show_menu2(
|
54 |
|
|
$aMenu = 0,
|
55 |
|
|
$aStart = SM2_ROOT,
|
56 |
|
|
$aMaxLevel = SM2_CURR+1,
|
57 |
|
|
$aFlags = SM2_TRIM,
|
58 |
|
|
$aItemOpen = '[li][a][menu_title]</a>',
|
59 |
|
|
$aItemClose = '</li>',
|
60 |
|
|
$aMenuOpen = '[ul]',
|
61 |
|
|
$aMenuClose = '</ul>',
|
62 |
|
|
$aTopItemOpen = false,
|
63 |
|
|
$aTopMenuOpen = false
|
64 |
|
|
)
|
65 |
|
|
|
66 |
|
|
Im Abschnitt "Parameter" findet sich eine detaillierte Beschreibung jedes einzelnen Parameters.
|
67 |
|
|
Ab $aItemOpen kann jedem Parameter der Wert false ?bergeben werden um den jeweiligen Vorgabewert zu erhalten.
|
68 |
|
|
Dies kann beispielsweise verwendet werden um eine nummerierte Liste zu erzeugen, w?hrend f?r die einzelnen Men?punkte trotzdem die Vorgabewerte Verwendung finden:
|
69 |
|
|
|
70 |
|
|
show_menu2(0, SM2_ROOT, SM2_ALL, SM2_ALL, false, false, '<ol>', '</ol>');
|
71 |
|
|
|
72 |
|
|
Bitte beachten: bis einschliessich $aFlags m?ssen alle Parameter explizit ?bergeben werden!
|
73 |
|
|
|
74 |
|
|
|
75 |
|
|
HTML-AUSGABE
|
76 |
|
|
============
|
77 |
|
|
Die HTML-Ausgabe h?ngt wesentlich davon ab, welche Parameter an die Funktion ?bergeben werden. Unabh?ngig davon werden nachfolgende Klassen grunds?tzlich f?r jedes Men? verwendet, wobei einzelne Men?punkte, wenn erforderlich, auch mehrere Klassen erhalten k?nnen.
|
78 |
|
|
|
79 |
|
|
KLAssE ZUORDNUNG
|
80 |
|
|
------------ -------------------------------------------------------
|
81 |
|
|
menu-top Nur der erste Men?punkt
|
82 |
|
|
menu-parent Jeder Hauptmen?punkt.
|
83 |
|
|
menu-current Nur der Men?punkt der aktuellen Seite.
|
84 |
|
|
menu-sibling Alle "Geschwister" der aktuellen Seite.
|
85 |
|
|
menu-child Jedes Untermen? der aktuellen Seite.
|
86 |
|
|
menu-expand Jedes Men? das Untermen?s hat.
|
87 |
|
|
menu-first Der erste Punkt eines jeden Men?s oder Untermen?s.
|
88 |
|
|
menu-last Der letzte Punkt eines jeden Men?s oder Untermen?s.
|
89 |
|
|
|
90 |
|
|
Folgende Klassen werden nur hinzugef?gt, wenn das SM2_NUMCLAss flag gesetzt ist:
|
91 |
|
|
|
92 |
|
|
menu-N Jeder Men?punkt, wobei das N f?r die ABSOLUTE Men?tiefe,
|
93 |
|
|
beginnend bei 0, des jeweiligen Men?punktes steht.
|
94 |
|
|
Die oberste Ebene ist also immer menu-0, die n?chste
|
95 |
|
|
Ebene menu-1 usw.
|
96 |
|
|
menu-child-N Jedes Untermen? der aktuellen Seiten, wobei das N f?r die
|
97 |
|
|
RELATIVE Tiefe des Untermen?s, beginnend bei 0, steht.
|
98 |
|
|
|
99 |
|
|
Beispiel einer HTML-Ausgabe:
|
100 |
|
|
|
101 |
|
|
<ul class="menu-top menu-0">
|
102 |
|
|
<li class="menu-0 menu-first"> ... </li>
|
103 |
|
|
<li class="menu-0 menu-expand menu-parent"> ...
|
104 |
|
|
<ul class="menu-1">
|
105 |
|
|
<li class="menu-1 menu-expand menu-first"> ...
|
106 |
|
|
<ul class="menu-2">
|
107 |
|
|
<li class="menu-2 menu-first"> ...
|
108 |
|
|
<li class="menu-2 menu-last"> ...
|
109 |
|
|
</ul>
|
110 |
|
|
</li>
|
111 |
|
|
<li class="menu-1 menu-expand menu-parent"> ...
|
112 |
|
|
<ul class="menu-2">
|
113 |
|
|
<li class="menu-2 menu-expand menu-current menu-first"> ... ** CURRENT PAGE **
|
114 |
|
|
<ul class="menu-3">
|
115 |
|
|
<li class="menu-3 menu-child menu-child-0 menu-first"> ...
|
116 |
|
|
<ul class="menu-4">
|
117 |
|
|
<li class="menu-4 menu-child menu-child-1 menu-first"> ... </li>
|
118 |
|
|
<li class="menu-4 menu-child menu-child-1 menu-last"> ... </li>
|
119 |
|
|
</ul>
|
120 |
|
|
</li>
|
121 |
|
|
<li class="menu-3 menu-child menu-child-0 menu-last"> ... </li>
|
122 |
|
|
</ul>
|
123 |
|
|
</li>
|
124 |
|
|
<li class="menu-2 menu-sibling menu-last"> ... </li>
|
125 |
|
|
</ul>
|
126 |
|
|
</li>
|
127 |
|
|
<li class="menu-1"> ... </li>
|
128 |
|
|
<li class="menu-1 menu-expand menu-last"> ...
|
129 |
|
|
<ul class="menu-2">
|
130 |
|
|
<li class="menu-2 menu-first menu-last"> ... </li>
|
131 |
|
|
</ul>
|
132 |
|
|
</li>
|
133 |
|
|
</ul>
|
134 |
|
|
</li>
|
135 |
|
|
<li class="menu-0 menu-last"> ... </li>
|
136 |
|
|
</ul>
|
137 |
|
|
|
138 |
|
|
|
139 |
|
|
PARAMETER
|
140 |
|
|
=========
|
141 |
|
|
$aMenu
|
142 |
|
|
Nummer des Men?s. Dies ist n?tzlich um mehrere Men?s auf einer Seite zu verwenden.
|
143 |
|
|
Men? Nummer 0 ist das Vorgabemen? der aktuellen Seite, SM2_ALLMENU gibt alle
|
144 |
|
|
im System verwendeten Men?s zur?ck.
|
145 |
|
|
|
146 |
|
|
$aStart
|
147 |
|
|
Gibt an, ab welcher Ebene die Erzeugung des Men?s beginnen soll. In den meisten
|
148 |
|
|
F?llen wird dies die oberste Ebene des anzuzeigenden Men?s sein. Es kann einer
|
149 |
|
|
der folgenden Werte verwendet werden:
|
150 |
|
|
|
151 |
|
|
SM2_ROOT+N Beginnt N Ebenen unterhalb der obersten Ebene, z.B.:
|
152 |
|
|
SM2_ROOT Beginnt auf der obersten Ebene
|
153 |
|
|
SM2_ROOT+1 Beginnt eine Ebene unterhalbe der obersten Ebene
|
154 |
|
|
SM2_ROOT+2 Beginnt zwei Ebenen unterhalbe der obersten Ebene
|
155 |
|
|
|
156 |
|
|
SM2_CURR+N Beginnt N Ebenen unterhalb der aktuellen Ebene, z.B.:
|
157 |
|
|
SM2_CURR Beginnt auf der aktuellen Ebene. Alle Geschwister
|
158 |
|
|
der aktuellen Ebene
|
159 |
|
|
SM2_CURR+1 Beginnt eine Ebene unterhalb der aktuellen Ebene
|
160 |
|
|
mit allen Unterebenen
|
161 |
|
|
|
162 |
|
|
page_id Verwendet die Seite mit der angegebenen page id als Elternelement.
|
163 |
|
|
Alle Untermen?s dieser Seite werden angezeigt. (Die page id kann
|
164 |
|
|
ermittelt werden, wenn man die Seite im Admin-Backend editiert,
|
165 |
|
|
sie steht dann in der Adresszeile des Browsers:
|
166 |
|
|
http://SITE/admin/pages/modify.php?page_id=35
|
167 |
|
|
|
168 |
|
|
$aMaxLevel
|
169 |
|
|
Die maximale Anzahl der Ebenen die angezeigt werden, die Anzeige
|
170 |
|
|
beginnt ab der in $aStart festgelegten Ebene bis hin zu der hier
|
171 |
|
|
festgelegten Ebene.
|
172 |
|
|
|
173 |
|
|
SM2_ALL Keine Beschr?nkung, alle Ebenen werden angezeigt
|
174 |
|
|
|
175 |
|
|
SM2_CURR+N Zeigt immer die aktuelle Seite + N Ebenen.
|
176 |
|
|
SM2_CURR Aktuelle Ebene (keine Unterebene)
|
177 |
|
|
SM2_CURR+3 Alle ?bergeordneten + aktuelle + 3 Unterebenen
|
178 |
|
|
|
179 |
|
|
SM2_START+N Beginnt immer auf der Startebene + N Ebenen.
|
180 |
|
|
Die Ebenen werden unabh?ngig davon angezeigt
|
181 |
|
|
auf welcher Ebene sich die aktuelle Seite befindet.
|
182 |
|
|
SM2_START Eine einzelne Ebene ab der Startebene
|
183 |
|
|
SM2_START+1 Startebene + eine Ebene darunter
|
184 |
|
|
|
185 |
|
|
SM2_MAX+N Zeigt h?chstens N Ebenen ab der Startebene.
|
186 |
|
|
Ebenen unterhalb der aktuellen Ebene werden nicht angezeigt.
|
187 |
|
|
SM2_MAX Starting level only (same as SM2_START)
|
188 |
|
|
SM2_MAX+1 Maximum of starting level and 1 level.
|
189 |
|
|
|
190 |
|
|
$aFlags
|
191 |
|
|
Spezielle Flags f?r verschiedene Men?generierungs Optionen. Sie k?nnen mittels
|
192 |
|
|
einer ODER Verkn?pfung (|) miteinander kombiniert werden. Um beispielsweise
|
193 |
|
|
sowohl TRIM als auch PRETTY zu definieren, verwendet man: SM2_TRIM|SM2_PRETTY.
|
194 |
|
|
|
195 |
|
|
GROUP 1
|
196 |
|
|
-------
|
197 |
|
|
Aus dieser Gruppe muss stets genau ein Flag angegeben werden. Diese Flags
|
198 |
|
|
bestimmen auf welche Weise die Geschwisterelemente im Men?baum in der
|
199 |
|
|
Ausgabe unterdr?ckt werden.
|
200 |
|
|
|
201 |
|
|
SM2_ALL Zeigt alle Zweige des Men?baums
|
202 |
|
|
A-1 -> B-1
|
203 |
|
|
-> B-2 -> C-1
|
204 |
|
|
-> C-2 (CURRENT)
|
205 |
|
|
-> D-1
|
206 |
|
|
-> D-2
|
207 |
|
|
-> C-3
|
208 |
|
|
A-2 -> B-3
|
209 |
|
|
-> B-4
|
210 |
|
|
|
211 |
|
|
SM2_TRIM Zeigt alle Geschwistermen?s der Seite im aktuellen Pfad.
|
212 |
|
|
Alle Untermen?s von Elemnten die sich nicht im Pfad befinden
|
213 |
|
|
werden entfernt.
|
214 |
|
|
A-1 -> B-1
|
215 |
|
|
-> B-2 -> C-1
|
216 |
|
|
-> C-2 (CURRENT)
|
217 |
|
|
-> D-1
|
218 |
|
|
-> D-2
|
219 |
|
|
-> C-3
|
220 |
|
|
A-2
|
221 |
|
|
|
222 |
|
|
SM2_CRUMB Zeigt den Breadcrumb Pfad des Men?s an, also den aktuellen
|
223 |
|
|
Men?punkt sowie alle Men?punkte die dorthin f?hren.
|
224 |
|
|
A-1 -> B-2 -> C-2 (CURRENT)
|
225 |
|
|
|
226 |
|
|
SM2_SIBLING Wie SM2_TRIM, es werden aber nur Geschwistermen?s der aktuellen
|
227 |
|
|
Seite angezeigt. Alle anderen Punkte werden unterdr?ckt.
|
228 |
|
|
A-1 -> B-2 -> C-1
|
229 |
|
|
-> C-2 (CURRENT)
|
230 |
|
|
-> D-1
|
231 |
|
|
-> D-2
|
232 |
|
|
-> C-3
|
233 |
|
|
|
234 |
|
|
GROUP 2
|
235 |
|
|
-------
|
236 |
|
|
Diese Flags sind optional, sie k?nnen in beliebiger Anzahl kombiniert werden.
|
237 |
|
|
|
238 |
|
|
SM2_NUMCLAss F?gt die nummerierten Men?klassen "menu-N" und
|
239 |
|
|
"menu-child-N hinzu.
|
240 |
|
|
|
241 |
|
|
SM2_ALLINFO L?dt alle Felder aus der Seitentabelle der Datenbank.
|
242 |
|
|
Dies verursacht einen ziemlich hohen Speicherverbauch und sollte
|
243 |
|
|
deshalb nur mit Bedacht verwendet werden.
|
244 |
|
|
Dadurch werden z.B. die Keywords, die Seitenbeschreibung sowie
|
245 |
|
|
all die anderen Informationen verf?gbar, die normalerweise nicht
|
246 |
|
|
geladen werden.
|
247 |
|
|
Bitte beachten: dieses Flag muss beim ERSTEN Aufruf von schow_menu2
|
248 |
|
|
f?r die jeweilige Men? ID verwendet werden, oder in Verbindung
|
249 |
|
|
mit SM2_NOCACHE, sonst zeigt es keine Wirkung.
|
250 |
|
|
|
251 |
|
|
SM2_NOCACHE Die aus der Datenbank gelesenen Daten werden bei erneutem Aufruf von
|
252 |
|
|
show_menu2 nicht wiederverwendet sondern erneut aus der Datenbank gelesen.
|
253 |
|
|
|
254 |
|
|
SM2_PRETTY Bringt die HTML-Ausgabe des Men?s mittels Leerzeichen und
|
255 |
|
|
Zeilenumbr?chen in eine gut lesbare Form. Dies ist besonders n?tzlich
|
256 |
|
|
beim Debuggen der Men?ausgabe.
|
257 |
|
|
|
258 |
|
|
SM2_BUFFER Gibt den HTML-Code nicht direkt aus, sondern speichert ihn intern
|
259 |
|
|
zwischen und gibt ihn al kompletten String aus.
|
260 |
|
|
|
261 |
|
|
SM2_CURRTREE Schliesst alle anderen Toplevelmen?s von der Betrachtung aus.
|
262 |
|
|
Es werden nur Men?punkte des aktuellen Men?zweiges dargestellt.
|
263 |
|
|
Dieses Flag kann bei Bedarf mit jedem flag aus der Gruppe 1
|
264 |
|
|
kombiniert werden.
|
265 |
|
|
|
266 |
|
|
SM2_ESCAPE Wendet htmlspecialchars auf den Men?string an.
|
267 |
|
|
Dies kann bei ?lteren Websitebaker Installationen erforderlich
|
268 |
|
|
sein um eine valide HTML Ausgabe zu erzeugen.
|
269 |
|
|
|
270 |
|
|
SM2_NOESCAPE Dies ist das Standarverhalten und existiert nur aus Gr?nden der
|
271 |
|
|
Abw?rtskompatibilt?t.
|
272 |
|
|
|
273 |
|
|
$aItemOpen
|
274 |
|
|
Dies legt den Formatstring fest, mit dem jeder einzelne Men?eintrag begonnen
|
275 |
|
|
wird. F?r den allerersten Men?eintrag kann mittels $aTopItemOpen ein anderer
|
276 |
|
|
Formatstring definiert werden.
|
277 |
|
|
Wenn dieser Parameter auf false gesetzt wird, wird der Vorgabe Formatstring
|
278 |
|
|
'[li][a][menu_title]</a>' verwendet um die Kompatibilt?t zur Website Baker
|
279 |
|
|
Standardfunktion show_menu() zu gew?hrleiten.
|
280 |
|
|
Da die Formatierung mittels CSS-Klassen oftmals einfacher ist, wenn sie auf den
|
281 |
|
|
<a> Tag angewendet werden, empfiehlt es sich hier folgenden Formatstring zu
|
282 |
|
|
verwenden: '<li>[ac][menu_title]</a>'.
|
283 |
|
|
|
284 |
|
|
Dieser Parameter kann auch als Instanz eine Formatierungklasse f?r das Men?
|
285 |
|
|
verwendet werden. Im Abschnitt "Formatter" findet sich dazu eine detailierte
|
286 |
|
|
Beschreibung. Wenn hier ein Formatter angegeben wird, werden alle Argumente
|
287 |
|
|
nach $aItenOpen ignoriert.
|
288 |
|
|
|
289 |
|
|
$aItemClose
|
290 |
|
|
Dieser String schliesst jeden Men?punkt ab.
|
291 |
|
|
Bitte beachten: dies ist kein Formatstring und es werden keine Schl?sselworte
|
292 |
|
|
ersetzt!
|
293 |
|
|
Wenn dieser Parameter auf false gesetzt ist, wird die Vorgabe '</li>' verwendet.
|
294 |
|
|
|
295 |
|
|
$aMenuOpen
|
296 |
|
|
Mit diesem Formatstring wird eine Liste von Men?eintr?gen ge?ffnet. F?r das erste
|
297 |
|
|
Men? kann mittels $aTopMenuOpen ein davon abweichender Formatstring definiert
|
298 |
|
|
werden.
|
299 |
|
|
Wenn dieser Parameter auf false gesetzt ist wird der Vorgabewert '[ul]'
|
300 |
|
|
verwendet.
|
301 |
|
|
|
302 |
|
|
$aMenuClose
|
303 |
|
|
Dieser String schliesst jedes Men? ab.
|
304 |
|
|
Bitte beachten: dies ist kein Formatstring und es werden keine Schl?sselworte
|
305 |
|
|
ersetzt!
|
306 |
|
|
Wenn dieser Parameter auf false gesetzt ist, wird die Vorgabe '</ul>' verwendet.
|
307 |
|
|
|
308 |
|
|
$aTopItemOpen
|
309 |
|
|
Der Formatstring f?r den allerersten Men?punkt. Wenn dieser Parameter auf false
|
310 |
|
|
gesetzt wird, wird der selbe Formatstring wie bei $aItemOpen verwendet.
|
311 |
|
|
|
312 |
|
|
$aTopMenuOpen
|
313 |
|
|
Der Formatstring f?r das erste Men?. Wenn dieser Parameter auf false
|
314 |
|
|
gesetzt wird, wird der selbe Formatstring wie bei $aMenuOpen verwendet.
|
315 |
|
|
|
316 |
|
|
|
317 |
|
|
FORMAT STRINGS
|
318 |
|
|
==============
|
319 |
|
|
Die folgenden Tags k?nnen in den Formatstrings f?r $aItemOpen und $aMenuOpen
|
320 |
|
|
verwendet werden und werden durch den entsprechenden Text ersetzt.
|
321 |
|
|
|
322 |
|
|
[a] <a> tag ohne Klasse: '<a href="[url]" target="[target]">'
|
323 |
|
|
[ac] <a> tag mit Klasse: '<a href="[url]" target="[target]" class="[class]">'
|
324 |
|
|
[li] <li> tag mit Klasse: '<li class="[class]">'
|
325 |
|
|
[ul] <ul> tag mit Klasse: '<ul class="[class]">'
|
326 |
|
|
[class] Liste der Klassen f?r diese Seite
|
327 |
|
|
[menu_title] Text des Men?titel (HTML entity escaped ausser das SM2_NOESCAPE Flag ist gesetzt)
|
328 |
|
|
[page_title] text des Seitentitel (HTML entity escaped ausser das SM2_NOESCAPE Flag ist gesetzt)
|
329 |
|
|
[url] die URL der Seiten f?r den <a> tag
|
330 |
|
|
[target] das Seitenziel f?r den <a> tag
|
331 |
|
|
[page_id] die Page ID des aktuellen Men?punktes
|
332 |
|
|
[parent] die Page ID des ?bergeorneten Men?punktes
|
333 |
|
|
[level] die Seitenebene, dies ist die gleiche Zahl die im "menu-N" CSS tag verwendet wird.
|
334 |
|
|
[sib] Anzahl der Geschwister des aktuellen Men?punktes
|
335 |
|
|
[sibCount] Anzahl aller Geschwister in diesem Men?
|
336 |
|
|
[if] Bedingung (Details hierzu im Abschnitt "Bedingte Formatierung')
|
337 |
|
|
|
338 |
|
|
Folgende tags sind nur verf?gbar, wenn das SM2_ALLINFO flag gesetzt ist.
|
339 |
|
|
|
340 |
|
|
[description] Seitenbeschreibung
|
341 |
|
|
[keywords] Schl?sselworte der Seite
|
342 |
|
|
|
343 |
|
|
|
344 |
|
|
BEDINGTE FORMATIERUNG
|
345 |
|
|
=====================
|
346 |
|
|
Die Anweisung f?r eine bedingte Formatierung kann eine der folgenden Formen haben:
|
347 |
|
|
|
348 |
|
|
[if(A){B}]
|
349 |
|
|
[if(A){B}else{C}]
|
350 |
|
|
|
351 |
|
|
A Die Bedingung. Details dazu, siehe unten.
|
352 |
|
|
|
353 |
|
|
B Der Ausdruck der verwendet wird, wenn die Bedingung erf?llt ist.
|
354 |
|
|
Dies kann ein beliebiger String sein, der jedoch nicht das Zeichen '}'
|
355 |
|
|
enthalten darf. Er kann jeden beliebigen Formatstring aus dem Abschnitt
|
356 |
|
|
'Format Strings' enthalten, jedoch keinen weiteren Bedingungstest (da das
|
357 |
|
|
Zeichen '}' nicht erlaubt ist).
|
358 |
|
|
|
359 |
|
|
C Der Ausdruck der verwendet wird, wenn die Bedingung nicht erf?llt ist.
|
360 |
|
|
Dies kann ein beliebiger String sein, der jedoch nicht das zeichen '}'
|
361 |
|
|
enthalten darf. Er kann jeden beliebigen Formatstring aus dem Abschnitt
|
362 |
|
|
'Format Strings' enthalten, jedoch keinen weiteren Bedingungstest (da das
|
363 |
|
|
Zeichen '}' nicht erlaubt ist).
|
364 |
|
|
|
365 |
|
|
Die Bedingung ist eine Kombination von einem oder mehreren boolschen Vergleichen.
|
366 |
|
|
Wenn mehr als ein Vergleich erforderlich ist, so muss dieser mit den anderen Vergleichen
|
367 |
|
|
mittels || (boolsches oder - OR) oder && (boolsches und - AND) vern?pft werden.
|
368 |
|
|
|
369 |
|
|
Ein einzelner Vergleich besteht aus dem linken Operanden, dem Operator und dem rechten Operanden.
|
370 |
|
|
z.B. X == Y - hierbei ist X der linke Operand, == der Operator und Y der rechte Operand.
|
371 |
|
|
|
372 |
|
|
Linker Operand. Muss eines der folgende Schl?sselworte sein:
|
373 |
|
|
class ?berpr?fung ob diese Klasse existiert. Es sind nur die
|
374 |
|
|
"==" and "!=" Operatoren erlaubt. In diesem Fall haben die Operatoren
|
375 |
|
|
die Bedeutung von "enth?lt" bzw. "enth?lt nicht" an Stelle von
|
376 |
|
|
"ist gleich" bzw. "ist nicht gleich"
|
377 |
|
|
level ?berpr?fung der Seitenebene.
|
378 |
|
|
sib ?berpr?fung der Geschwisteranzahl der aktuellen Seite.
|
379 |
|
|
sibCount ?berpr?fung der Geamtanzahl der Geschwister im aktuellen Men?.
|
380 |
|
|
id ?berpr?fung der page id.
|
381 |
|
|
|
382 |
|
|
Operator. Muss einer der folgenden sein:
|
383 |
|
|
< Kleiner als
|
384 |
|
|
<= Kleiner oder gleich als
|
385 |
|
|
== Gleich
|
386 |
|
|
!= Nicht gleich
|
387 |
|
|
>= Gr?ssr oder gleich als
|
388 |
|
|
> gr?sser als
|
389 |
|
|
|
390 |
|
|
Rechter Operand. Die Art dieses Operanden h?ngt von dem, f?r den linken Operanden
|
391 |
|
|
verwendeten Schl?sselwort ab.
|
392 |
|
|
class einer der "menu-*" Klassennamen wie sie im Abschnitt "Ausgabe"
|
393 |
|
|
spezifiziert sind.
|
394 |
|
|
level ?berpr?fung der Seitenebene gegen folgende Werte:
|
395 |
|
|
<number> die absolute Seitenebene
|
396 |
|
|
root die oberste Seitenebene
|
397 |
|
|
granny die Seitenebene ?ber der ?bergeordneten Seitenebene
|
398 |
|
|
parent die ?bergeordnete Seitenebene
|
399 |
|
|
current die aktuelle Seitenebene
|
400 |
|
|
child die untergeornete Seitenebene
|
401 |
|
|
id ?berpr?fung der page id gegen folgende Werte:
|
402 |
|
|
<number> die absolute page id
|
403 |
|
|
parent die ?bergeordnete page id
|
404 |
|
|
current die aktuelle page id
|
405 |
|
|
sib Eine positive Integerzahl, oder "sibCount" um die Anzahl der
|
406 |
|
|
Geschwister in diesem Men? zu ?berpr?fen
|
407 |
|
|
sibCount Eine positive Integerzahl
|
408 |
|
|
|
409 |
|
|
Folgende Beispiele ergeben "wahr" und der Ausdruck {exp} wird ausgef?hrt, wenn zutrifft:
|
410 |
|
|
|
411 |
|
|
[if(class==menu-expand){exp}] hat ein Untermen?
|
412 |
|
|
[if(class==menu-first){exp}] ist der erste Eintrag in einem Men?
|
413 |
|
|
[if(class!=menu-first){exp}] ist NICHT der erste Eintrag in einem Men?
|
414 |
|
|
[if(class==menu-last){exp}] ist der letzte Eintrag in einem Men?
|
415 |
|
|
[if(level==0){exp}] befindet sich auf der obersten Ebene
|
416 |
|
|
[if(level>0){exp}] befindet sich NICHT auf der obersten Ebene
|
417 |
|
|
[if(sib==2){exp}] ist der zweite Eintrag in einem Men?
|
418 |
|
|
[if(sibCount>1){exp}] ist in einem Men? mit mehr als einem Eintrag
|
419 |
|
|
[if(sibCount!=2){exp}] ist in einem Men?, das nicht genau 2 Eintr?ge hat
|
420 |
|
|
[if(level>parent){exp}] ist ine eine Geschwistermen? oder dem Untermen? eines Geschwistermen?s
|
421 |
|
|
[if(id==parent){exp}] ist der ?bergeordnete Punkt der aktuellen id
|
422 |
|
|
|
423 |
|
|
Wenn eine sonst-Klausel (else) hinzugef?gt wird, so wird diese in allen anderen F?llen ausgef?hrt.
|
424 |
|
|
Zum Beispiel wird "foo" immer dann ausgef?hrt, wenn die if ?berpr?fung falsch ergibt, also:
|
425 |
|
|
|
426 |
|
|
[if(sib==2){exp}else{foo}] ist NICHT der zweite Eintrag im Men?
|
427 |
|
|
[if(sibCount>2){exp}else{foo}] ist NICHT in einem Men? mit mehr als zwei Eintr?gen
|
428 |
|
|
|
429 |
|
|
Bei mehrfach Vergleichen wird der Ausdruck "exp" nur ausgef?hrt, wenn:
|
430 |
|
|
|
431 |
|
|
[if(sib == 1 || sib > 3){exp}] ist der erste Eintrag ODER ist der vierte oder h?here Eintrag im Men?
|
432 |
|
|
|
433 |
|
|
[if(id == current && class == menu-expand){exp} ist der aktuelle Eintrag UND hat Untermen?s
|
434 |
|
|
|
435 |
|
|
Bitte beachten:
|
436 |
|
|
Alle ?berpr?fungen werden in der Reihenfolge ausgef?hrt, in der sie notiert sind, denn:
|
437 |
|
|
* es findet keine ?berpr?fung auf evtl. Schleifen statt (alle ?berpr?fungen werden immer ausgef?hrt)
|
438 |
|
|
* ?berpr?fungen werden nicht gruppiert (eine Klammerung von ?berpr?fungen wird nicht unterst?tzt)
|
439 |
|
|
* sowohl || als auch && haben die gleiche Wertigkeit
|
440 |
|
|
|
441 |
|
|
FORMATTER
|
442 |
|
|
=========
|
443 |
|
|
Achtung: dies ist ein fortgeschrittenes und ?usserst selten ben?tigtes Feature!
|
444 |
|
|
|
445 |
|
|
Mit umfangreichen Kenntnissen in der PHP Programmierung ist es m?glich den vordefinierten
|
446 |
|
|
Formatierer von show_menu2 mit einem eigenen zu ersetzen.
|
447 |
|
|
In der include.php von show_menu2 sieht man wie der Formatierer geschreiben werden muss.
|
448 |
|
|
Die API die verwendet werden muss sieht wie folgt aus:
|
449 |
|
|
|
450 |
|
|
(Anmerkung des ?bersetzers: Kommentare nicht ?bersetzt, wer sich so weit vorwagt, sollte
|
451 |
|
|
damit keine Probleme haben ;-)
|
452 |
|
|
|
453 |
|
|
class SM2_Formatter
|
454 |
|
|
{
|
455 |
|
|
// called once before any menu is processed to allow object initialization
|
456 |
|
|
function initialize() { }
|
457 |
|
|
|
458 |
|
|
// called to open the menu list
|
459 |
|
|
function startList($aPage, $aUrl) { }
|
460 |
|
|
|
461 |
|
|
// called to open the menu item
|
462 |
|
|
function startItem($aPage, $aUrl, $aCurrSib, $aSibCount) { }
|
463 |
|
|
|
464 |
|
|
// called to close the menu item
|
465 |
|
|
function finishItem() { }
|
466 |
|
|
|
467 |
|
|
// called to close the menu list
|
468 |
|
|
function finishList() { }
|
469 |
|
|
|
470 |
|
|
// called once after all menu has been processed to allow object finalization
|
471 |
|
|
function finalize() { }
|
472 |
|
|
|
473 |
|
|
// called once after finalize() if the SM2_NOOUTPUT flag is used
|
474 |
|
|
function getOutput() { }
|
475 |
|
|
};
|
476 |
|
|
|
477 |
|
|
|