A menü

A keretrendszer egy az aktuális modultól és kiválasztott nyelvtől függő, legfeljebb három szintű menüt generál.

A menü felépítése

A fájlok csatolási sorrendje

A menüt felépítő állományok az include/menu könyvtár alatt helyezkednek el. elsőként a include/menu/base.php töltődik be. Ennek feladata, hogy a többi állományt kiválassza és betöltse. Elsőként az include/menu/$policy/$lang/base.php, ennek hiányában az include/menu/$policy/_DEFAULT_LANG/base.php kerül betöltésre. A következő lépés a include/menu/$policy/$lang/module-*.php állományok csatolása. Az utolsó lépés az egyedi menü beállítások beolvasása.

Az oldal megjelenítésekor a skin/$skin/base/html/base.phtml állomány mayor_menu() függvénye írja ki a menü-t a $MENU tömb alapján. A tömben benne van az egész menürendszer, de a függvény nem feltétlenül építi rakja ki az összes menüpontot, a „classic” skin például az almenűket csak az aktuális $page, $sub és $f szerint rakja ki.

A menü tárolására szolgáló adatszerkezet - a $MENU tömb

Egy menüpont (item, tétel) felépítése

  • txt - a megjelenő szöveg
  • [url]
    1. ha nincs: a $MENU alapján kiolvasható PSF-re mutat
    2. ha &-tel kezdődik: az lőzőhöz fúzzük
    3. ha http-vel kezdődik: a megadott URL-t vesszük egy az egyben (sessionID, lang, skin stb nélkül)
    4. egyéb esetben: az adott linket használjuk átadva a fontos paramétereket (sessionID, policy, lang, skin)
  • [get] - az utolsó esetben az átadandó paraméterek listája (pl. sessionID, lang, skin)

A $MENU tömb felépítése

    $MENU = array(
        $page1 => array(                        // Az első szinten a modulok menüpontjai
            array('txt1'[,'url1']),
            [array('txt2'[,'url2']), ...]
        ),
        [$page2 => array( ... ), ...]
        $item1 => array(                        // Az elsp szinten nem modulhoz tartozó tételek
            array('txt1'[,'url1']),
            [array('txt2'[,'url2']), ...]
        ),
        [$item2 => array( ... ), ...]
        'modules' => array(                     // 'modules'-en belul csak page-ek vannak
            $page1 => array(
                'sub' => array(                 // 'sub'-on belül csak sub-ok vannak
                    $sub1 => array(
                        $f1 => array(
                            array('txt1'[,'url1']),
                            [array('txt2'[,'url2']), ...]
                        ),
                        [$f2 => array(
                            array('txt1'[,'url1']),
                            [array('txt2'[,'url2']), ...]
                        ), ...]
                    ),
                    [$sub2 => arrray( ... ), ...]
                ),
                [$f1 => array(
                    array('txt1'[,'url1']),
                    [array('txt2'[,'url2']), ...]
                ), ...]
            ),
            [$page2 => array( ... ), ...]
        )
    )

Kirajzolva:

  $M[$page1][0] | $M[$page1][1] ... | $M[$page2][0] | ... | $M[$item1][0] | $M[$item1][1] ...
  $M['modules'][$page][$f1][0] | $M['modules'][$page][$f1][1] ... | $M['modules'][$page][$f2][0] | ...
  $M['modules'][$page]['sub'][$sub][$f1][0] ... $M['modules'][$page]['sub'][$sub][$f2][0]

Például:

    $MENU['modules']['login'] = array(
        'sub' => array(
            'sub1' => array(
                'f11' => array(
                    array('txt' => 'Kakukk'),
                    array('txt' => 'Tojás', 'url'=>'http://')
                )
            ),
            'sub2' => array(
                'f21' => array(
                    array('txt' => 'Cica'),
                )
            )
        ),
        'login' => array(
            array('txt' => 'Szülői bejelentkezés','url' => '&toPolicy=parent'),
            array('txt' => 'Bejelentkezés','url' => '&toPolicy=private'),
        )
    );
base/menue.txt · Utolsó módosítás: 2019/05/28 19:52 (külső szerkesztés)
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0