Project

General

Profile

1
// $Id: README_DE 827 2008-04-14 18:54:58Z doc $
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

    
478

    
(3-3/7)