| 1 | show_menu2, version 4.9
 | 
  
    | 2 | =======================
 | 
  
    | 3 | Ist ein Code-Snippet für das CMS Website Baker. Es stellt einen kompletten
 | 
  
    | 4 | Ersatz für die eingebaute Menüfuntionalität zur Verfügung. Alle, für die
 | 
  
    | 5 | Erzeugung des Menüs erforderlichen Daten, werden durch eine einzige
 | 
  
    | 6 | Datenbankabfrage erzeugt. Durch umfangreiche Anpassungsmöglichkeiten des
 | 
  
    | 7 | erzeugten HTML-Code können alle möglichen Menüarten (Listen, Breadcrumbs,
 | 
  
    | 8 | Sitemaps, usw.) erzeugt werden.
 | 
  
    | 9 | 
 | 
  
    | 10 | ---
 | 
  
    | 11 | Deutsche Übersetzung von BerndJM. Dies ist eine weitgehend direkte Übersetzung
 | 
  
    | 12 | des englischen Originals. Bei Übersetzungs- oder Interpretationsfehlern, bitte
 | 
  
    | 13 | eine Email an bjm@wwnw.de.
 | 
  
    | 14 | ---
 | 
  
    | 15 | 
 | 
  
    | 16 | 
 | 
  
    | 17 | 
 | 
  
    | 18 | INSTALLATION
 | 
  
    | 19 | ============
 | 
  
    | 20 | 1. Die aktuelle Version von http://code.jellycan.com/show_menu2/ herunterladen.
 | 
  
    | 21 | 2. In das Admin-Backend der Website Baker Installation einlogen.
 | 
  
    | 22 | 3. Erweiterungen -> Module aufrufen.
 | 
  
    | 23 | 4. Wenn bereits eine frühere Version von show_menu2 installiert ist, diese über
 | 
  
    | 24 |    "Modul deinstallieren" auswählen und deinstallieren.
 | 
  
    | 25 | 5. Im Abschnitt "Modul installieren" das im Schritt 1 heruntergeladene zip-File
 | 
  
    | 26 |    auswählen und installieren.
 | 
  
    | 27 | 
 | 
  
    | 28 | 
 | 
  
    | 29 | 
 | 
  
    | 30 | BENUTZUNG VON SHOW_MENU2
 | 
  
    | 31 | ========================
 | 
  
    | 32 | Um show_menu2 zu benutzen muss das verwendete Template an den Stellen
 | 
  
    | 33 | modifiziert werden, an denen das Menü erscheinen soll. Bitte beachten: Wenn alte
 | 
  
    | 34 | Menüaufrufe ersetzt werden, müssen unbedingt auch die entsprechenden neuen
 | 
  
    | 35 | Parameter verwendet werden die show_menu2 benötigt.
 | 
  
    | 36 | 
 | 
  
    | 37 | In den meisten Fällen genügt bereits der Standardaufruf ohne weitere Parameter
 | 
  
    | 38 | von show_menu2. In diesem Fall werden die Vorgabewerte verwendet, dies erzeugt
 | 
  
    | 39 | ein Menü das die aktuelle Seite und die Unterseiten der aktuellen Seite anzeigt:
 | 
  
    | 40 | 
 | 
  
    | 41 |     $sMenu = show_menu2();
 | 
  
    | 42 | 
 | 
  
    | 43 | Bitte beachten: der Aufruf von show_menu2 ist PHP und muss normalerweise in PHP-
 | 
  
    | 44 | Codezeichen eingeschlossen werden (ausser der Aufruf erfolgt bereits innerhalb
 | 
  
    | 45 | von PHP Code):
 | 
  
    | 46 | 
 | 
  
    | 47 |     <?php echo show_menu2(); ?>
 | 
  
    | 48 | 
 | 
  
    | 49 | Dieses Vorgabe Menü erzeugt bereits ein komplettes Menü auf Listenbasis mit
 | 
  
    | 50 | etlichen Klassen, die eine leichte Formatierung mittels CSS ermöglichen. Es wird
 | 
  
    | 51 | z.B. die Klasse "menu-current" zu dem <li> tag des aktuellen Menüpunktes
 | 
  
    | 52 | hinzugefügt. Zusätzlich erhält jeder Menüpunkt der Unterpunkte enthält die
 | 
  
    | 53 | Klasse "menu-expand". Das erlaubt es sehr differenzierte CSS Regeln für die
 | 
  
    | 54 | einzelnen Menüpunkte aufzustellen.
 | 
  
    | 55 | Zum Beispiel:
 | 
  
    | 56 | 
 | 
  
    | 57 |     li.menu-expand  { font-weight: bold; }
 | 
  
    | 58 |     li.menu-current { background: red; }
 | 
  
    | 59 | 
 | 
  
    | 60 | Im Abschnitt "HTML-Ausgabe" findet sich eine detaillierte Beschreibung welche
 | 
  
    | 61 | Klassen welchem Element zugeordnet werden. Durch die Verwendung von
 | 
  
    | 62 | verschiedenen Parametern bei dem show_menu2 Funktionsaufruf lassen sich auch
 | 
  
    | 63 | recht umfangreiche und unterschiedliche Menüstrukturen erzeugen. Um
 | 
  
    | 64 | beispielsweise nur Menüpunkte aus der obersten Ebene der Menüstruktur
 | 
  
    | 65 | darzustellen, könnte man folgenden Aufruf verwenden:
 | 
  
    | 66 | 
 | 
  
    | 67 |     $sMenu = show_menu2(0, SM2_ROOT, SM2_START);
 | 
  
    | 68 | 
 | 
  
    | 69 | Oder um beispielsweise bis zu zwei Unterebenen der aktuellen Seite anzuzeigen:
 | 
  
    | 70 | 
 | 
  
    | 71 |     $sMenu = show_menu2(0, SM2_CURR+1, SM2_CURR+2);
 | 
  
    | 72 | 
 | 
  
    | 73 | Es gibt jede Menge Möglichkeiten, um die unterschiedlichsten Menüstrukturen zu
 | 
  
    | 74 | erzeugen. Zahlreiche Beispiele dazu findet man auf der Demo-Website: http://
 | 
  
    | 75 | code.jellycan.com/sm2test/
 | 
  
    | 76 | 
 | 
  
    | 77 | 
 | 
  
    | 78 | 
 | 
  
    | 79 | HÄUFIGE FRAGEN
 | 
  
    | 80 | ==============
 | 
  
    | 81 | 
 | 
  
    | 82 | Q:  Ich bin kein Programmierer. Gibt es keine einfachere Dokumentation?
 | 
  
    | 83 | A:  Nein, denn dies hier ist bereits die einfache Dokumentation.
 | 
  
    | 84 | 
 | 
  
    | 85 | 
 | 
  
    | 86 | Q:  Wie kann ich ein sogenanntes Drop-Down Menü erstellen?
 | 
  
    | 87 | A:  Dies hat nichts mit show_menu2 zu tun. Um ein Drop-Down Menü zu erzeugen muß
 | 
  
    | 88 |     lediglich der CSS-Code des jeweiligen Templates angepaßt werden. Die nötigen
 | 
  
    | 89 |     Anpassungen findet man z.B. im "allcss2" Template aus dem WB Addon
 | 
  
    | 90 |     Repository -> http://addons.websitebaker.org/
 | 
  
    | 91 | 
 | 
  
    | 92 | 
 | 
  
    | 93 | Q:  Warum verschwindet das Menü nachdem ich in einer mehrsprachigen WB-Site die
 | 
  
    | 94 |     Suchfunktion benutzt habe?
 | 
  
    | 95 | A:  Im verwendeten Template fehlen die notwendigen Zeilen:
 | 
  
    | 96 | 
 | 
  
    | 97 |     1.  Im WB Admin Backend: Optionen -> Erweiterte Optionen anzeigen ->
 | 
  
    | 98 |         Suchoptionen -> Kopfzeile - hier direkt nach dem öffnenden <form> tag
 | 
  
    | 99 |         folgende Zeile einfügen:
 | 
  
    | 100 | 
 | 
  
    | 101 |         <input type="hidden" name="referrer" value="[REFERRER_ID]" />
 | 
  
    | 102 | 
 | 
  
    | 103 |     2.  In der index.php des verwendeten Templates folgende Zeile unmittelbar
 | 
  
    | 104 |         nach dem öffnenden <form> tag der Suche einfügen:
 | 
  
    | 105 | 
 | 
  
    | 106 |         <input type="hidden" name="referrer" value="<?php echo defined('REFERRER_ID')?REFERRER_ID:PAGE_ID;?>" />
 | 
  
    | 107 | 
 | 
  
    | 108 | 
 | 
  
    | 109 | Q:  Mehrsprachig? Das klingt toll. Wie macht man das?
 | 
  
    | 110 | A:  http://www.websitebaker2.org/de/hilfe/designerhandbuch/mehrsprachige-webseiten.php
 | 
  
    | 111 | 
 | 
  
    | 112 | 
 | 
  
    | 113 | Q:  Jedesmal wenn eine Seite aufgerufen wird, erzeugt SM2 folgende Warnmeldung:
 | 
  
    | 114 |     "show_menu2 error: $aOptions is invalid. No flags from group 1 supplied!"
 | 
  
    | 115 | A:  Der Funktion wurden die falschen Werte oder eine falsche Anzahl an
 | 
  
    | 116 |     Werten übergeben.
 | 
  
    | 117 |     Siehe den Abschnitt PARAMETER für die korrekten Flag Werte die dem
 | 
  
    | 118 |     $aOptions Parameter zu übergeben sind.
 | 
  
    | 119 | 
 | 
  
    | 120 | 
 | 
  
    | 121 | Q:  How do I use a different class/picture/color/widget for each entry in a menu?
 | 
  
    | 122 | A:  Use the [page_id] format string in the $aItemOpen string. Create a unique
 | 
  
    | 123 |     class or id for each menu item, then reference that item in your CSS or Javascript
 | 
  
    | 124 |     to do whatever you want.
 | 
  
    | 125 | 
 | 
  
    | 126 |     To add a unique class for each menu item (or similar):
 | 
  
    | 127 | 
 | 
  
    | 128 |         "<li><a href="[url]" target="[target]" class="[class] p[page_id]">[menu_title]</a>"
 | 
  
    | 129 | 
 | 
  
    | 130 |         ... creating menu items like ...
 | 
  
    | 131 | 
 | 
  
    | 132 |         <li><a href="/pages/foo/bar.php" target="_top" class="menu-top p45">Top Menu</a>
 | 
  
    | 133 | 
 | 
  
    | 134 |         Reference this in your CSS like:
 | 
  
    | 135 | 
 | 
  
    | 136 |         a.p45 { color: red; }
 | 
  
    | 137 | 
 | 
  
    | 138 |     To add a unique ID for each menu item (or similar):
 | 
  
    | 139 | 
 | 
  
    | 140 |         "<li><a id="p[page_id]" href="[url]" target="[target]" class="[class]">[menu_title]</a>"
 | 
  
    | 141 | 
 | 
  
    | 142 |         ... creating menu items like ...
 | 
  
    | 143 | 
 | 
  
    | 144 |         <li><a id="p45" href="/pages/foo/bar.php" target="_top" class="menu-top">Top Menu</a>
 | 
  
    | 145 | 
 | 
  
    | 146 |         Reference this in your CSS like:
 | 
  
    | 147 | 
 | 
  
    | 148 |         a#p45 { color: red; }
 | 
  
    | 149 | 
 | 
  
    | 150 |         Note that the ID can only be used if that menu is generated and displayed one time
 | 
  
    | 151 |         only on the page (because HTML ID's must be unique within a page).
 | 
  
    | 152 | 
 | 
  
    | 153 | 
 | 
  
    | 154 | FUNKTION
 | 
  
    | 155 | ========
 | 
  
    | 156 | 
 | 
  
    | 157 | Der komplette Aufruf und die Vorgabe Parameterwerte für show_menu2 sind wie folgt:
 | 
  
    | 158 | 
 | 
  
    | 159 |     show_menu2(
 | 
  
    | 160 |         $aMenu          = 0,
 | 
  
    | 161 |         $aStart         = SM2_ROOT,
 | 
  
    | 162 |         $aMaxLevel      = SM2_CURR+1,
 | 
  
    | 163 |         $aOptions       = SM2_TRIM,
 | 
  
    | 164 |         $aItemOpen      = '[li][a][menu_title]</a>',
 | 
  
    | 165 |         $aItemClose     = '</li>',
 | 
  
    | 166 |         $aMenuOpen      = '[ul]',
 | 
  
    | 167 |         $aMenuClose     = '</ul>',
 | 
  
    | 168 |         $aTopItemOpen   = false,
 | 
  
    | 169 |         $aTopMenuOpen   = false
 | 
  
    | 170 |         )
 | 
  
    | 171 | 
 | 
  
    | 172 | Im Abschnitt "Parameter" findet sich eine detaillierte Beschreibung jedes
 | 
  
    | 173 | einzelnen Parameters.
 | 
  
    | 174 | Jeder Parameter muß absolut korrekt verwendet werden. Folgende Regeln können
 | 
  
    | 175 | dabei helfen:
 | 
  
    | 176 | 
 | 
  
    | 177 |     $aMenu = 0 ist in den meisten Anwendungsfällen der beste Wert.
 | 
  
    | 178 | 
 | 
  
    | 179 |     $aStart muß entweder eine page ID oder ein Wert der mit "SM2_" beginnt sein.
 | 
  
    | 180 | 
 | 
  
    | 181 |     $aMaxLevel kann nur Werte erhalten, die mit "SM2_" beginnen.
 | 
  
    | 182 | 
 | 
  
    | 183 |     $aOptions bis auf einige wenige Spezialfälle sind hier nur Werte die mit
 | 
  
    | 184 |     "SM2_" beginnen zulässig.
 | 
  
    | 185 | 
 | 
  
    | 186 |     Alle weiteren Parameter enthalten die (HTML)Tags die die Ausgabe des Menüs
 | 
  
    | 187 |     steuern.
 | 
  
    | 188 | 
 | 
  
    | 189 |     Ab $aItemOpen kann jedem Parameter der Wert false übergeben werden um den
 | 
  
    | 190 |     jeweiligen Vorgabewert zu erhalten.
 | 
  
    | 191 | 
 | 
  
    | 192 |     Dies kann beispielsweise verwendet werden um eine nummerierte Liste zu
 | 
  
    | 193 |     erzeugen, während für die einzelnen Menüpunkte trotzdem die Vorgabewerte
 | 
  
    | 194 |     Verwendung finden:
 | 
  
    | 195 | 
 | 
  
    | 196 |         show_menu2(0, SM2_ROOT, SM2_ALL, SM2_ALL, false, false, '<ol>', '</ol>');
 | 
  
    | 197 | 
 | 
  
    | 198 | Bitte beachten: bis einschliesslich $aOptions müssen alle Parameter explizit übergeben werden!
 | 
  
    | 199 | 
 | 
  
    | 200 | 
 | 
  
    | 201 | HTML-AUSGABE
 | 
  
    | 202 | ============
 | 
  
    | 203 | Die HTML-Ausgabe hängt wesentlich davon ab, welche Parameter an die Funktion übergeben werden.
 | 
  
    | 204 | Unabhängig davon werden nachfolgende Klassen grundsätzlich für jedes Menü verwendet, wobei
 | 
  
    | 205 | einzelne Menüpunkte, wenn es erforderlich ist, auch mehrere Klassen erhalten können.
 | 
  
    | 206 | 
 | 
  
    | 207 |     KLASSE          ZUORDNUNG
 | 
  
    | 208 |     ------------    -------------------------------------------------------
 | 
  
    | 209 |     menu-top        Nur der erste Menüpunkt.
 | 
  
    | 210 |     menu-parent     Jeder Hauptmenüpunkt.
 | 
  
    | 211 |     menu-current    Nur der Menüpunkt der aktuellen Seite.
 | 
  
    | 212 |     menu-sibling    Alle "Geschwister" der aktuellen Seite.
 | 
  
    | 213 |     menu-child      Jedes Untermenü der aktuellen Seite.
 | 
  
    | 214 |     menu-expand     Jedes Menü das Untermenüs hat.
 | 
  
    | 215 |     menu-first      Der erste Punkt eines jeden Menüs oder Untermenüs.
 | 
  
    | 216 |     menu-last       Der letzte Punkt eines jeden Menüs oder Untermenüs.
 | 
  
    | 217 | 
 | 
  
    | 218 |     Folgende Klassen werden nur hinzugefügt, wenn das SM2_NUMCLASS Flag gesetzt
 | 
  
    | 219 |     ist:
 | 
  
    | 220 | 
 | 
  
    | 221 |     menu-N          Jeder Menüpunkt, wobei das N für die ABSOLUTE Menütiefe,
 | 
  
    | 222 |                     beginnend bei 0, des jeweiligen Menüpunktes steht.
 | 
  
    | 223 |                     Die oberste Ebene ist also immer menu-0, die nächste
 | 
  
    | 224 |                     Ebene menu-1 usw.
 | 
  
    | 225 |     menu-child-N    Jedes Untermenü der aktuellen Seiten, wobei das N für die
 | 
  
    | 226 |                     RELATIVE Tiefe des Untermenüs, beginnend bei 0, steht.
 | 
  
    | 227 | 
 | 
  
    | 228 | Beispiel einer HTML-Ausgabe:
 | 
  
    | 229 | 
 | 
  
    | 230 | <ul class="menu-top menu-0">
 | 
  
    | 231 |   <li class="menu-0 menu-first">  ... </li>
 | 
  
    | 232 |   <li class="menu-0 menu-expand menu-parent">  ...
 | 
  
    | 233 |   <ul class="menu-1">
 | 
  
    | 234 |     <li class="menu-1 menu-expand menu-first">  ...
 | 
  
    | 235 |     <ul class="menu-2">
 | 
  
    | 236 |       <li class="menu-2 menu-first">  ...
 | 
  
    | 237 |       <li class="menu-2 menu-last">  ...
 | 
  
    | 238 |     </ul>
 | 
  
    | 239 |     </li>
 | 
  
    | 240 |     <li class="menu-1 menu-expand menu-parent">  ...
 | 
  
    | 241 |     <ul class="menu-2">
 | 
  
    | 242 |       <li class="menu-2 menu-expand menu-current menu-first">  ...      ** CURRENT PAGE **
 | 
  
    | 243 |       <ul class="menu-3">
 | 
  
    | 244 |         <li class="menu-3 menu-child menu-child-0 menu-first">  ...
 | 
  
    | 245 |         <ul class="menu-4">
 | 
  
    | 246 |           <li class="menu-4 menu-child menu-child-1 menu-first">  ... </li>
 | 
  
    | 247 |           <li class="menu-4 menu-child menu-child-1 menu-last">  ... </li>
 | 
  
    | 248 |         </ul>
 | 
  
    | 249 |         </li>
 | 
  
    | 250 |         <li class="menu-3 menu-child menu-child-0 menu-last">  ... </li>
 | 
  
    | 251 |       </ul>
 | 
  
    | 252 |       </li>
 | 
  
    | 253 |       <li class="menu-2 menu-sibling menu-last">  ... </li>
 | 
  
    | 254 |     </ul>
 | 
  
    | 255 |     </li>
 | 
  
    | 256 |     <li class="menu-1">  ... </li>
 | 
  
    | 257 |     <li class="menu-1 menu-expand menu-last">  ...
 | 
  
    | 258 |     <ul class="menu-2">
 | 
  
    | 259 |       <li class="menu-2 menu-first menu-last">  ... </li>
 | 
  
    | 260 |     </ul>
 | 
  
    | 261 |     </li>
 | 
  
    | 262 |   </ul>
 | 
  
    | 263 |   </li>
 | 
  
    | 264 |   <li class="menu-0 menu-last">  ... </li>
 | 
  
    | 265 | </ul>
 | 
  
    | 266 | 
 | 
  
    | 267 | 
 | 
  
    | 268 | PARAMETER
 | 
  
    | 269 | =========
 | 
  
    | 270 | $aMenu
 | 
  
    | 271 |     Nummer des Menüs. Diese ist nützlich um mehrere Menüs auf einer Seite zu
 | 
  
    | 272 |     verwenden.
 | 
  
    | 273 |     Menü Nummer 0 ist das Vorgabemenü der aktuellen Seite, SM2_ALLMENU gibt alle
 | 
  
    | 274 |     im System verwendeten Menüs zurück.
 | 
  
    | 275 | 
 | 
  
    | 276 | $aStart
 | 
  
    | 277 |     Gibt an, ab welcher Ebene die Erzeugung des Menüs beginnen soll. In den
 | 
  
    | 278 |     meisten Fällen wird dies die oberste Ebene des anzuzeigenden Menüs sein. Es
 | 
  
    | 279 |     kann einer der folgenden Werte verwendet werden:
 | 
  
    | 280 | 
 | 
  
    | 281 |         SM2_ROOT+N  Beginnt N Ebenen unterhalb der obersten Ebene, z.B.:
 | 
  
    | 282 |                     SM2_ROOT      Beginnt auf der obersten Ebene
 | 
  
    | 283 |                     SM2_ROOT+1    Beginnt eine Ebene unterhalb der obersten Ebene
 | 
  
    | 284 |                     SM2_ROOT+2    Beginnt zwei Ebenen unterhalb der obersten Ebene
 | 
  
    | 285 | 
 | 
  
    | 286 |         SM2_CURR+N  Beginnt N Ebenen unterhalb der aktuellen Ebene, z.B.:
 | 
  
    | 287 |                     SM2_CURR      Beginnt auf der aktuellen Ebene. Alle Geschwister
 | 
  
    | 288 |                                   der aktuellen Ebene
 | 
  
    | 289 |                     SM2_CURR+1    Beginnt eine Ebene unterhalb der aktuellen Ebene
 | 
  
    | 290 |                                   mit allen Unterebenen
 | 
  
    | 291 | 
 | 
  
    | 292 |         page_id     Verwendet die Seite mit der angegebenen page id als Elternelement.
 | 
  
    | 293 |                     Alle Untermenüs dieser Seite werden angezeigt.
 | 
  
    | 294 |                     (Die page id kann ermittelt werden, wenn man die Seite im
 | 
  
    | 295 |                     Admin-Backend editiert, sie steht dann in der Adresszeile des
 | 
  
    | 296 |                     Browsers: http://SITE/admin/pages/modify.php?page_id=35
 | 
  
    | 297 | 
 | 
  
    | 298 | $aMaxLevel
 | 
  
    | 299 |     Die maximale Anzahl der Ebenen die angezeigt werden. Die Anzeige
 | 
  
    | 300 |     beginnt ab der in $aStart festgelegten Ebene, bis hin zu der hier
 | 
  
    | 301 |     festgelegten Ebene.
 | 
  
    | 302 | 
 | 
  
    | 303 |         SM2_ALL      Keine Beschränkung, alle Ebenen werden angezeigt
 | 
  
    | 304 | 
 | 
  
    | 305 |         SM2_CURR+N   Zeigt immer die aktuelle Seite + N Ebenen.
 | 
  
    | 306 |                      SM2_CURR      Aktuelle Ebene (keine Unterebene)
 | 
  
    | 307 |                      SM2_CURR+3    Alle übergeordneten + aktuelle + 3 Unterebenen
 | 
  
    | 308 | 
 | 
  
    | 309 |         SM2_START+N  Beginnt immer auf der Startebene + N Ebenen.
 | 
  
    | 310 |                      Die Ebenen werden unabhängig davon angezeigt,egal
 | 
  
    | 311 |                      auf welcher Ebene sich die aktuelle Seite befindet.
 | 
  
    | 312 |                      SM2_START     Eine einzelne Ebene ab der Startebene.
 | 
  
    | 313 |                      SM2_START+1   Startebene + eine Ebene darunter.
 | 
  
    | 314 | 
 | 
  
    | 315 |         SM2_MAX+N    Zeigt höchstens N Ebenen ab der Startebene.
 | 
  
    | 316 |                      Ebenen unterhalb der aktuellen Ebene werden nicht angezeigt.
 | 
  
    | 317 |                      SM2_MAX       Nur die Startebene (gleiche Wirkung wie SM2_START)
 | 
  
    | 318 |                      SM2_MAX+1     Die Startebene und eine Ebene darunter.
 | 
  
    | 319 | 
 | 
  
    | 320 | $aOptions
 | 
  
    | 321 |     Spezielle Flags für verschiedene Menügenerierungs Optionen. Sie können mittels
 | 
  
    | 322 |     einer ODER Verknüpfung (|) miteinander kombiniert werden. Um beispielsweise
 | 
  
    | 323 |     sowohl TRIM als auch PRETTY zu definieren, verwendet man: (SM2_TRIM | SM2_PRETTY).
 | 
  
    | 324 | 
 | 
  
    | 325 |     GROUP 1
 | 
  
    | 326 |     -------
 | 
  
    | 327 |     Aus dieser Gruppe muss stets genau ein Flag angegeben werden. Diese Flags
 | 
  
    | 328 |     bestimmen auf welche Weise die Geschwisterelemente im Menübaum in der
 | 
  
    | 329 |     Ausgabe unterdrückt werden.
 | 
  
    | 330 | 
 | 
  
    | 331 |     SM2_ALL         Zeigt alle Zweige des Menübaums
 | 
  
    | 332 |                         A-1 -> B-1
 | 
  
    | 333 |                             -> B-2 -> C-1
 | 
  
    | 334 |                                    -> C-2 (CURRENT)
 | 
  
    | 335 |                                           -> D-1
 | 
  
    | 336 |                                           -> D-2
 | 
  
    | 337 |                                    -> C-3
 | 
  
    | 338 |                         A-2 -> B-3
 | 
  
    | 339 |                             -> B-4
 | 
  
    | 340 | 
 | 
  
    | 341 |     SM2_TRIM        Zeigt alle Geschwistermenüs der Seite im aktuellen Pfad.
 | 
  
    | 342 |                     Alle Untermenüs von Elemnten die sich nicht im Pfad befinden
 | 
  
    | 343 |                     werden entfernt.
 | 
  
    | 344 |                         A-1 -> B-1
 | 
  
    | 345 |                             -> B-2 -> C-1
 | 
  
    | 346 |                                    -> C-2 (CURRENT)
 | 
  
    | 347 |                                           -> D-1
 | 
  
    | 348 |                                           -> D-2
 | 
  
    | 349 |                                    -> C-3
 | 
  
    | 350 |                         A-2
 | 
  
    | 351 | 
 | 
  
    | 352 |     SM2_CRUMB       Zeigt den Breadcrumb Pfad des Menüs an, also den aktuellen
 | 
  
    | 353 |                     Menüpunkt sowie alle Menüpunkte die dorthin führen.
 | 
  
    | 354 |                         A-1 -> B-2 -> C-2 (CURRENT)
 | 
  
    | 355 | 
 | 
  
    | 356 |     SM2_SIBLING     Wie SM2_TRIM, es werden aber nur Geschwistermenüs der aktuellen
 | 
  
    | 357 |                     Seite angezeigt. Alle anderen Punkte werden unterdrückt.
 | 
  
    | 358 |                         A-1 -> B-2 -> C-1
 | 
  
    | 359 |                                    -> C-2 (CURRENT)
 | 
  
    | 360 |                                           -> D-1
 | 
  
    | 361 |                                           -> D-2
 | 
  
    | 362 |                                    -> C-3
 | 
  
    | 363 | 
 | 
  
    | 364 |     GROUP 2
 | 
  
    | 365 |     -------
 | 
  
    | 366 |     Diese Flags sind optional, sie können in beliebiger Anzahl kombiniert werden.
 | 
  
    | 367 | 
 | 
  
    | 368 |     SM2_NUMCLASS    Fügt die nummerierten Menüklassen "menu-N" und
 | 
  
    | 369 |                     "menu-child-N hinzu.
 | 
  
    | 370 | 
 | 
  
    | 371 |     SM2_ALLINFO     Lädt alle Felder aus der Seitentabelle der Datenbank.
 | 
  
    | 372 |                     Dies verursacht einen ziemlich hohen Speicherverbauch und sollte
 | 
  
    | 373 |                     deshalb nur mit Bedacht verwendet werden.
 | 
  
    | 374 |                     Dadurch werden z.B. die Keywords, die Seitenbeschreibung sowie
 | 
  
    | 375 |                     all die anderen Informationen verfügbar, die normalerweise nicht
 | 
  
    | 376 |                     geladen werden.
 | 
  
    | 377 |                     Bitte beachten: dieses Flag muss beim ERSTEN Aufruf von schow_menu2
 | 
  
    | 378 |                     für die jeweilige Menü ID verwendet werden, oder in Verbindung
 | 
  
    | 379 |                     mit SM2_NOCACHE, sonst zeigt es keine Wirkung.
 | 
  
    | 380 | 
 | 
  
    | 381 |     SM2_NOCACHE     Die aus der Datenbank gelesenen Daten werden bei erneutem Aufruf von
 | 
  
    | 382 |                     show_menu2 nicht wiederverwendet sondern erneut aus der Datenbank
 | 
  
    | 383 |                     gelesen.
 | 
  
    | 384 | 
 | 
  
    | 385 |     SM2_PRETTY      Bringt die HTML-Ausgabe des Menüs mittels Leerzeichen und
 | 
  
    | 386 |                     Zeilenumbrüchen in eine gut lesbare Form. Das ist besonders
 | 
  
    | 387 |                     nützlich beim Debuggen der Menüausgabe.
 | 
  
    | 388 | 
 | 
  
    | 389 |     SM2_NOBUFFER    Gibt den HTML-Code direkt aus und speichert ihn nicht zwischen.
 | 
  
    | 390 | 
 | 
  
    | 391 |     SM2_CURRTREE    Schliesst alle anderen Toplevelmenüs von der Betrachtung aus.
 | 
  
    | 392 |                     Es werden nur Menüpunkte des aktuellen Menüzweiges dargestellt.
 | 
  
    | 393 |                     Dieses Flag kann bei Bedarf mit jedem Flag aus der Gruppe 1
 | 
  
    | 394 |                     kombiniert werden.
 | 
  
    | 395 | 
 | 
  
    | 396 |     SM2_ESCAPE      Wendet htmlspecialchars auf den Menüstring an.
 | 
  
    | 397 |                     Dies kann bei älteren Websitebaker Installationen erforderlich
 | 
  
    | 398 |                     sein um eine valide HTML Ausgabe zu erzeugen.
 | 
  
    | 399 | 
 | 
  
    | 400 |     SM2_SHOWHIDDEN  Hidden pages are usually hidden all of the time, including
 | 
  
    | 401 |                     when they are active (i.e. current page or a parent page).
 | 
  
    | 402 |                     Use private pages for time when you want pages to be
 | 
  
    | 403 |                     hidden except when active. However for compatibility with
 | 
  
    | 404 |                     release 4.8, supply this flag to enable hidden pages to
 | 
  
    | 405 |                     become visible when they are active.
 | 
  
    | 406 | 
 | 
  
    | 407 |     SM2_XHTML_STRICT	Stellt die XHTML-Kompatibilität der Links sicher indem
 | 
  
    | 408 | 					in per [a] oder [ac] formatierten Links die Targetangabe
 | 
  
    | 409 | 					entfernt und das Argument title="[page_titel]" eingefügt
 | 
  
    | 410 | 					wird. Bei manuell zusammengestellten Links ist der Designer
 | 
  
    | 411 | 					selbst für die XHTML-Konformität zuständig.
 | 
  
    | 412 | 
 | 
  
    | 413 | 	SM2_NO_TITLE	Unterdrückt die Ausgabe des Inhaltes des Title-Attributes
 | 
  
    | 414 | 					bei [a] oder [ac] formatierten links. Im XHTML-Strikt Modus
 | 
  
    | 415 |                     wird 'title' mit einen   ausgegeben.
 | 
  
    | 416 | 
 | 
  
    | 417 |     Für diesen Parameter gibt es auch einen erweiterten Modus, bei dem die Optionen
 | 
  
    | 418 |     als assoziatives Array übergeben werden. Näheres dazu im Abschnitt ERWEITERTE
 | 
  
    | 419 |     OPTIONEN. Für die meisten Anwendungsfälle wird dies jedoch NICHT benötigt.
 | 
  
    | 420 | 
 | 
  
    | 421 | $aItemOpen
 | 
  
    | 422 |     Dies legt den Formatstring fest, mit dem jeder einzelne Menüeintrag begonnen
 | 
  
    | 423 |     wird. Für den allerersten Menüeintrag kann mittels $aTopItemOpen ein anderer
 | 
  
    | 424 |     Formatstring definiert werden.
 | 
  
    | 425 |     Wenn dieser Parameter auf false gesetzt wird, wird der Vorgabe Formatstring
 | 
  
    | 426 |     '[li][a][menu_title]</a>' verwendet um die Kompatibilität zur Website Baker
 | 
  
    | 427 |     Standardfunktion show_menu() zu gewährleisten.
 | 
  
    | 428 |     Da die Formatierung mittels CSS-Klassen oftmals einfacher ist, wenn sie auf den
 | 
  
    | 429 |     <a> tag angewendet werden, empfiehlt es sich hier folgenden Formatstring zu
 | 
  
    | 430 |     verwenden: '<li>[ac][menu_title]</a>'.
 | 
  
    | 431 | 
 | 
  
    | 432 |     Dieser Parameter kann auch als Instanz eine Formatierungklasse für das Menü
 | 
  
    | 433 |     verwendet werden. Die nähere Beschreibung dazu findet sich im Abschnitt FORMATTER.
 | 
  
    | 434 |     Wenn hier ein Formatter angegeben wird, werden alle Argumente
 | 
  
    | 435 |     nach $aItemOpen ignoriert.
 | 
  
    | 436 | 
 | 
  
    | 437 | $aItemClose
 | 
  
    | 438 |     Dieser String schließt jeden Menüpunkt ab.
 | 
  
    | 439 |     Bitte beachten: dies ist kein Formatstring und es werden keine Schlüsselworte
 | 
  
    | 440 |     ersetzt!
 | 
  
    | 441 |     Wenn dieser Parameter auf false gesetzt ist, wird die Vorgabe '</li>' verwendet.
 | 
  
    | 442 | 
 | 
  
    | 443 | $aMenuOpen
 | 
  
    | 444 |     Mit diesem Formatstring wird eine Liste von Menüeinträgen geöffnet. Für das erste
 | 
  
    | 445 |     Menü kann mittels $aTopMenuOpen ein davon abweichender Formatstring definiert
 | 
  
    | 446 |     werden.
 | 
  
    | 447 |     Wenn dieser Parameter auf false gesetzt ist wird der Vorgabewert '[ul]'
 | 
  
    | 448 |     verwendet.
 | 
  
    | 449 | 
 | 
  
    | 450 | $aMenuClose
 | 
  
    | 451 |     Dieser String schließt jedes Menü ab.
 | 
  
    | 452 |     Bitte beachten: dies ist kein Formatstring und es werden keine Schlüsselworte
 | 
  
    | 453 |     ersetzt!
 | 
  
    | 454 |     Wenn dieser Parameter auf false gesetzt ist, wird die Vorgabe '</ul>' verwendet.
 | 
  
    | 455 | 
 | 
  
    | 456 | $aTopItemOpen
 | 
  
    | 457 |     Der Formatstring für den allerersten Menüpunkt. Wenn dieser Parameter auf false
 | 
  
    | 458 |     gesetzt wird, wird der selbe Formatstring wie bei $aItemOpen verwendet.
 | 
  
    | 459 | 
 | 
  
    | 460 | $aTopMenuOpen
 | 
  
    | 461 |     Der Formatstring für das erste Menü. Wenn dieser Parameter auf false
 | 
  
    | 462 |     gesetzt wird, wird der selbe Formatstring wie bei $aMenuOpen verwendet.
 | 
  
    | 463 | 
 | 
  
    | 464 | 
 | 
  
    | 465 | 
 | 
  
    | 466 | ERWEITERTE OPTIONEN
 | 
  
    | 467 | ===================
 | 
  
    | 468 | Der Parameter $aOptions kann auf zweierlei Arten verwendet werden. Zum einen, wie oben
 | 
  
    | 469 | im Abschnitt PARAMETER beschrieben, diese Art sollte für die allermeisten
 | 
  
    | 470 | Anwendungsfälle ausreichen. Um allerdings in speziellen Fällen die Sonderoptionen
 | 
  
    | 471 | ansprechen zu können, müssen die erforderlichen Werte als assoziatives Array
 | 
  
    | 472 | bereitgestellt werden.
 | 
  
    | 473 | Bitte beachten: Die SM2_* Flags sind auch hierbei erforderlich und müßen als 'flags'
 | 
  
    | 474 | übergeben werden.
 | 
  
    | 475 | 
 | 
  
    | 476 |     'flags'     **ZWINGEND ERFORDELICH** Dies sind die Flags die oben im Abschnitt
 | 
  
    | 477 |                 PARAMETER unter $aOptions beschrieben wurden.
 | 
  
    | 478 | 
 | 
  
    | 479 |     'notrim'    Hiermit wird eine Anzahl von Ebenen festegelegt, die relativ bezogen
 | 
  
    | 480 |                 auf die in $aStart festgelegte Menüebene, immer angezeigt werden. Dies
 | 
  
    | 481 |                 bewirkt, daß für diese Ebenen das SM2_TRIM Flag ignoriert wird.
 | 
  
    | 482 | 
 | 
  
    | 483 | Um dieses Array zu verwenden, empfiehlt es sich es erst anzulegen und dann den
 | 
  
    | 484 | $aOptions parameter mit dem angelegten Array zu beliefern:
 | 
  
    | 485 | 
 | 
  
    | 486 |     $options = array('flags' => (SM2_TRIM|...), 'notrim' => 1);
 | 
  
    | 487 |     $sMenu = show_menu2(0, SM2_ROOT, SM2_CURR+1, $options);
 | 
  
    | 488 | 
 | 
  
    | 489 | 
 | 
  
    | 490 | 
 | 
  
    | 491 | FORMAT STRINGS
 | 
  
    | 492 | ==============
 | 
  
    | 493 | Die folgenden Tags können in den Formatstrings für $aItemOpen und $aMenuOpen
 | 
  
    | 494 | verwendet werden und sollen durch den entsprechenden Text ersetzt werden.
 | 
  
    | 495 | 
 | 
  
    | 496 | [a]             <a> tag ohne Klasse:   '<a href="[url]" target="[target]">'
 | 
  
    | 497 | [ac]            <a> tag mit Klasse:    '<a href="[url]" target="[target]" class="[class]">'
 | 
  
    | 498 | [li]            <li> tag mit Klasse:   '<li class="[class]">'
 | 
  
    | 499 | [ul]            <ul> tag mit Klasse:   '<ul class="[class]">'
 | 
  
    | 500 | [class]         Liste der Klassen für diese Seite
 | 
  
    | 501 | [menu_title]    Text des Menütitel
 | 
  
    | 502 |                 (HTML entity escaped ausser das SM2_NOESCAPE Flag ist gesetzt)
 | 
  
    | 503 | [menu_icon_0]	die URL zu einer Bilddatei mit normal - Darstellung (ab WB2.8.4)
 | 
  
    | 504 | [menu_icon_1]	die URL zu einer Bilddatei mit active/hover - Darstellung (ab WB2.8.4)
 | 
  
    | 505 | [page_title]    text des Seitentitel
 | 
  
    | 506 |                 (HTML entity escaped ausser das SM2_NOESCAPE Flag ist gesetzt)
 | 
  
    | 507 | [page_icon]		die URL zu einer seitenbezogenen Bilddatei (ab WB2.8.4)
 | 
  
    | 508 | [tooltip]       Tooltip-Text, der normal im title-Attribut der Links ausgegeben wird (ab WB2.8.4)
 | 
  
    | 509 | [url]           die URL der Seiten für den <a> tag
 | 
  
    | 510 | [target]        das Seitenziel für den <a> tag
 | 
  
    | 511 | [page_id]       die Page ID des aktuellen Menüpunktes.
 | 
  
    | 512 | [parent]        die Page ID des übergeordneten Menüpunktes.
 | 
  
    | 513 | [level]         die Seitenebene,
 | 
  
    | 514 |                 dies ist die gleiche Zahl die im "menu-N" CSS tag verwendet wird.
 | 
  
    | 515 | [sib]           Anzahl der Geschwister des aktuellen Menüpunktes.
 | 
  
    | 516 | [sibCount]      Anzahl aller Geschwister in diesem Menü.
 | 
  
    | 517 | [if]            Bedingung (Details hierzu im Abschnitt "Bedingte Formatierung')
 | 
  
    | 518 | 
 | 
  
    | 519 | Folgende tags sind NUR verfügbar, wenn das SM2_ALLINFO Flag gesetzt ist.
 | 
  
    | 520 | 
 | 
  
    | 521 | [description]   Seitenbeschreibung
 | 
  
    | 522 | [keywords]      Schlüsselworte der Seite
 | 
  
    | 523 | 
 | 
  
    | 524 | 
 | 
  
    | 525 | 
 | 
  
    | 526 | BEDINGTE FORMATIERUNG
 | 
  
    | 527 | =====================
 | 
  
    | 528 | Die Anweisung für eine bedingte Formatierung kann eine der folgenden Formen haben:
 | 
  
    | 529 | 
 | 
  
    | 530 |     [if(A){B}]
 | 
  
    | 531 |     [if(A){B}else{C}]
 | 
  
    | 532 | 
 | 
  
    | 533 |     A   Die Bedingung. Details dazu, siehe unten.
 | 
  
    | 534 | 
 | 
  
    | 535 |     B   Der Ausdruck der verwendet wird, wenn die Bedingung erfüllt ist.
 | 
  
    | 536 |         Dies kann ein beliebiger String sein, der jedoch nicht das Zeichen '}'
 | 
  
    | 537 |         enthalten darf. Er kann jeden beliebigen Formatstring aus dem Abschnitt
 | 
  
    | 538 |         'Format Strings' enthalten, jedoch keinen weiteren Bedingungstest (da das
 | 
  
    | 539 |         Zeichen '}' nicht erlaubt ist).
 | 
  
    | 540 | 
 | 
  
    | 541 |     C   Der Ausdruck der verwendet wird, wenn die Bedingung nicht erfüllt ist.
 | 
  
    | 542 |         Dies kann ein beliebiger String sein, der jedoch nicht das Zeichen '}'
 | 
  
    | 543 |         enthalten darf. Er kann jeden beliebigen Formatstring aus dem Abschnitt
 | 
  
    | 544 |         'Format Strings' enthalten, jedoch keinen weiteren Bedingungstest (da das
 | 
  
    | 545 |         Zeichen '}' nicht erlaubt ist).
 | 
  
    | 546 | 
 | 
  
    | 547 | Die Bedingung ist eine Kombination von einem oder mehreren boolschen Vergleichen.
 | 
  
    | 548 | Wenn mehr als ein Vergleich erforderlich ist, so muss dieser mit den anderen Vergleichen
 | 
  
    | 549 | mittels || (boolsches oder - OR) oder && (boolsches und - AND) verknüpft werden.
 | 
  
    | 550 | 
 | 
  
    | 551 | Ein einzelner Vergleich besteht aus dem linken Operanden, dem Operator und dem rechten
 | 
  
    | 552 | Operanden.
 | 
  
    | 553 | z.B. X == Y  - hierbei ist X der linke Operand, == der Operator und Y der rechte Operand.
 | 
  
    | 554 | 
 | 
  
    | 555 |     Linker Operand. Muss eines der folgende Schlüsselworte sein:
 | 
  
    | 556 |         class       Überprüfung ob diese Klasse existiert. Es sind nur die
 | 
  
    | 557 |                     "==" and "!=" Operatoren erlaubt. In diesem Fall haben die Operatoren
 | 
  
    | 558 |                     die Bedeutung von "enthält" bzw. "enthält nicht" an Stelle von
 | 
  
    | 559 |                     "ist gleich" bzw. "ist nicht gleich"
 | 
  
    | 560 |         level       Überprüfung der Seitenebene.
 | 
  
    | 561 |         sib         Überprüfung der Geschwisteranzahl der aktuellen Seite.
 | 
  
    | 562 |         sibCount    Überprüfung der Geamtanzahl der Geschwister im aktuellen Menü.
 | 
  
    | 563 |         id          Überprüfung der page id.
 | 
  
    | 564 | 		target		Überprüfung der Target-Angabe
 | 
  
    | 565 | 
 | 
  
    | 566 |     Operator. Muss einer der folgenden sein:
 | 
  
    | 567 |         <           Kleiner als
 | 
  
    | 568 |         <=          Kleiner oder gleich als
 | 
  
    | 569 |         ==          Gleich
 | 
  
    | 570 |         !=          Nicht gleich
 | 
  
    | 571 |         >=          Grössr oder gleich als
 | 
  
    | 572 |         >           Grösser als
 | 
  
    | 573 | 
 | 
  
    | 574 |     Rechter Operand. Die Art dieses Operanden hängt von dem, für den linken Operanden
 | 
  
    | 575 |                      verwendeten Schlüsselwort ab.
 | 
  
    | 576 |         class       einer der "menu-*" Klassennamen wie sie im Abschnitt "Ausgabe"
 | 
  
    | 577 |                     spezifiziert sind.
 | 
  
    | 578 |         level       Überprüfung der Seitenebene gegen folgende Werte:
 | 
  
    | 579 |                         <number>  die absolute Seitenebene
 | 
  
    | 580 |                         root      die oberste Seitenebene
 | 
  
    | 581 |                         granny    die Seitenebene über der übergeordneten Seitenebene
 | 
  
    | 582 |                         parent    die übergeordnete Seitenebene
 | 
  
    | 583 |                         current   die aktuelle Seitenebene
 | 
  
    | 584 |                         child     die untergeornete Seitenebene
 | 
  
    | 585 |         id          Überprüfung der page id gegen folgende Werte:
 | 
  
    | 586 |                         <number>  die absolute page id
 | 
  
    | 587 |                         parent    die übergeordnete page id
 | 
  
    | 588 |                         current   die aktuelle page id
 | 
  
    | 589 |         sib         Eine positive Integerzahl, oder "sibCount" um die Anzahl der
 | 
  
    | 590 |                     Geschwister in diesem Menü zu überprüfen
 | 
  
    | 591 |         sibCount    Eine positive Integerzahl
 | 
  
    | 592 | 		target		Ein String, der eine mögliche Targetangabe darstellt
 | 
  
    | 593 | 
 | 
  
    | 594 | Folgende Beispiele ergeben "wahr" und der Ausdruck {exp} wird ausgeführt, wenn zutrifft:
 | 
  
    | 595 | 
 | 
  
    | 596 |     [if(class==menu-expand){exp}]   hat ein Untermenü
 | 
  
    | 597 |     [if(class==menu-first){exp}]    ist der erste Eintrag in einem Menü
 | 
  
    | 598 |     [if(class!=menu-first){exp}]    ist NICHT der erste Eintrag in einem Menü
 | 
  
    | 599 |     [if(class==menu-last){exp}]     ist der letzte Eintrag in einem Menü
 | 
  
    | 600 |     [if(level==0){exp}]             befindet sich auf der obersten Ebene
 | 
  
    | 601 |     [if(level>0){exp}]              befindet sich NICHT auf der obersten Ebene
 | 
  
    | 602 |     [if(sib==2){exp}]               ist der zweite Eintrag in einem Menü
 | 
  
    | 603 |     [if(sibCount>1){exp}]           ist in einem Menü mit mehr als einem Eintrag
 | 
  
    | 604 |     [if(sibCount!=2){exp}]          ist in einem Menü, das nicht genau 2 Einträge hat
 | 
  
    | 605 |     [if(level>parent){exp}]         ist in einem Geschwistermenü oder dem Untermenü eines
 | 
  
    | 606 |                                     Geschwistermenüs
 | 
  
    | 607 |     [if(id==parent){exp}]           ist der übergeordnete Punkt der aktuellen id
 | 
  
    | 608 | 	[if(target==_self){exp}]		im Target-Attribut ist der String '_self' enthalten
 | 
  
    | 609 | 
 | 
  
    | 610 | Wenn eine sonst-Klausel (else) hinzugefügt wird, so wird diese in allen anderen Fällen
 | 
  
    | 611 | ausgeführt.
 | 
  
    | 612 | Zum Beispiel wird "foo" immer dann ausgeführt, wenn die if Überprüfung falsch ergibt, also:
 | 
  
    | 613 | 
 | 
  
    | 614 |     [if(sib==2){exp}else{foo}]      ist NICHT der zweite Eintrag im Menü
 | 
  
    | 615 |     [if(sibCount>2){exp}else{foo}]  ist NICHT in einem Menü mit mehr als zwei Einträgen
 | 
  
    | 616 | 
 | 
  
    | 617 | Bei mehrfach Vergleichen wird der Ausdruck "exp" nur ausgeführt, wenn:
 | 
  
    | 618 | 
 | 
  
    | 619 |     [if(sib == 1 || sib > 3){exp}]  ist der erste Eintrag ODER ist der vierte oder höhere
 | 
  
    | 620 |     Eintrag im Menü
 | 
  
    | 621 | 
 | 
  
    | 622 |     [if(id == current && class == menu-expand){exp}  ist der aktuelle Eintrag UND hat
 | 
  
    | 623 |     Untermenüs
 | 
  
    | 624 | 
 | 
  
    | 625 | Bitte beachten:
 | 
  
    | 626 | Alle Überprüfungen werden in der Reihenfolge ausgeführt, in der sie notiert sind, denn:
 | 
  
    | 627 | * es findet keine Überprüfung auf evtl. Schleifen statt (alle Überprüfungen werden immer ausgeführt)
 | 
  
    | 628 | * Überprüfungen werden nicht gruppiert (eine Klammerung von Überprüfungen wird nicht unterstützt)
 | 
  
    | 629 | * sowohl || als auch && haben die gleiche Wertigkeit
 | 
  
    | 630 | 
 | 
  
    | 631 | 
 | 
  
    | 632 | 
 | 
  
    | 633 | FORMATTER
 | 
  
    | 634 | =========
 | 
  
    | 635 | Achtung: dies ist ein fortgeschrittenes und äusserst selten benötigtes Feature!
 | 
  
    | 636 | 
 | 
  
    | 637 | Mit umfangreichen Kenntnissen in der PHP Programmierung ist es möglich den vordefinierten
 | 
  
    | 638 | Formatierer von show_menu2 mit einem eigenen zu ersetzen.
 | 
  
    | 639 | In der include.php von show_menu2 sieht man wie der Formatierer geschreiben werden muss.
 | 
  
    | 640 | Die API, die verwendet werden muss, sieht wie folgt aus:
 | 
  
    | 641 | 
 | 
  
    | 642 | (Anmerkung des Übersetzers: Kommentare sind nicht übersetzt, wer sich so weit vorwagt, sollte
 | 
  
    | 643 | damit keine Probleme haben ;-)
 | 
  
    | 644 | 
 | 
  
    | 645 | class SM2_Formatter
 | 
  
    | 646 | {
 | 
  
    | 647 |     // called once before any menu is processed to allow object initialization
 | 
  
    | 648 |     function initialize() { }
 | 
  
    | 649 | 
 | 
  
    | 650 |     // called to open the menu list
 | 
  
    | 651 |     function startList($aPage, $aUrl) { }
 | 
  
    | 652 | 
 | 
  
    | 653 |     // called to open the menu item
 | 
  
    | 654 |     function startItem($aPage, $aUrl, $aCurrSib, $aSibCount) { }
 | 
  
    | 655 | 
 | 
  
    | 656 |     // called to close the menu item
 | 
  
    | 657 |     function finishItem() { }
 | 
  
    | 658 | 
 | 
  
    | 659 |     // called to close the menu list
 | 
  
    | 660 |     function finishList() { }
 | 
  
    | 661 | 
 | 
  
    | 662 |     // called once after all menu has been processed to allow object finalization
 | 
  
    | 663 |     function finalize() { }
 | 
  
    | 664 | 
 | 
  
    | 665 |     // called once after finalize() if the SM2_NOOUTPUT flag is used
 | 
  
    | 666 |     function getOutput() { }
 | 
  
    | 667 | };
 |