Skip to content

Doc neues_adminmenu

KoernerWS edited this page Sep 2, 2011 · 4 revisions

Neues Adminmenü

Die Menüstruktur wird jetzt durch XML-Dateien verwaltet. Die einzelnen Überschriften (wie z.B. Statistik) und deren Unterpunkte (z.B. Besucher) werden in der Datei ''include/admin/inc/menu/admin.xml'' spezifiziert. Die XML-Datei hat dabei die folgende Form:

<list title="Boxen">
    <modul>
            <title>PicOfX</title>
            <url>admin.php?picofx</url>
    </modul>
    <modul>
        <title>Partner</title>
        <url>admin.php?archiv-partners</url>
    </modul>
</list>

<list></list> umschließt jeweils eine Liste von Einträgen, das Attribut title ist die Überschrift. Eine Liste enthält eine Reihe von Modulen, in diesem Beispiel das Modul "PicOfX" und das Modul "Partner". Module werden spezifiziert, indem man wie oben gezeigt den Titel und die URL dieses Moduls angibt. Weitere Beispiele findest du in der admin.xml.

Es ist auch möglich, für das Modul das globale Menü (admin.xml) zu überschreiben.

Überschreiben der globalen admin.xml

Adminmodule können die Standardnavigation des Adminmenüs überschreiben. Die Box (include/boxes/admin/adminsubmenu.php) geht dabei nach folgendem Prinzip vor:

  • Der Query-String wird sortiert. Heißt die aufgerufene Seite zum Beispiel admin.php?menu-blub-bla, enthält das sortierte array folgende elemente:
    • ["menu-blub-bla"], ["menu-blub"] und ["menu"].
  • Für jedes dieser Elemente[i] in diesem Array wird wie folgt vorgegangen:
    • durchsuche include/admin/inc/menu nach einer datei mit Namen Elemente[i], wobei - durch _ ersetzt wird + ".php"
    • durchsuche include/admin/inc/menu nach einer datei mit Namen Elemente[i], wobei - durch _ ersetzt wird + ".xml"
    • wenn es solche Dateien gibt, werden sie ins Menü geladen (PHP vor XML)
  • Wenn keine Datei gefunden wurde, wird als Fallback die include/admin/inc/menu/admin.xml genutzt

Beispiel: statisches Submenü

Zum Beispiel wird diese Datei geladen, wenn der Querystring "user" enthält (also include/admin/inc/menu/user.xml)

<?xml version="1.0" encoding="ISO-8859-1" ?>

<menu>
    <list title="Sonstiges">
        <modul>
            <title>Neuer Nutzer</title>
            <url>admin.php?user-new</url>
        </modul>
    </list>
</menu>

Beispiel: dynamisches Submenü

Hier wird das ganze über eine entsprechend benannte PHP-Datei geladen. Es muss das Template include/admin/templates/adminsubmenu verwendet werden. Ein Beispiel (include/admin/inc/menu/menu.php -> Adminmenü Punkt "Navigation"

<?php
defined( 'main' ) or die( 'no direct access' );

$tpl = new tpl( 'adminsubmenu', 1 );

$tpl->set_out( 'headline', 'Men&uuml; ausw&auml;hlen', 0 );
$tpl->out( 1 );

for ( $i = 1; $i <= $allgAr[ 'menu_anz' ]; $i++ ) {
    $tpl->set_ar_out( Array(
         'url' => 'admin.php?menu-' . $i,
        'title' => 'Menü ' . $i 
    ), 2 );
}

$tpl->out( 3 );
?>

Beispiel: kein Submenü anzeigen

Dies geht mit php und xml Dateien gleichermaßen, für xml muss man dem menu-Tag lediglich die Eigenschaft hide="true" geben.

Für PHP dieses Beispiel:

<?php
defined( 'main' ) or die( 'no direct access' );

$tpl = new tpl( 'adminsubmenu', 1 );
$tpl->out( 4 );
?>