Weitere Menülinks in einem AddOn

Problemstellung

Funktionen, verschiedenen Listen und Formulare sollen auf mehrere Unterseiten verteilt werden. Wie kann man weitere Menülinks eines Addon erstellen und dabei weitere Unterseiten einbinden und verlinken?

Lösung

Definition Menülinks

Über die Datei config.inc.php können weitere Menülinks des Addons definiert werden.

Menüpunkt: array('subpage-wert', 'Menulink-Name')

if($REX["REDAXO"]){

$REX['ADDON']['testaddon']['SUBPAGES'] = array(
array('', $I18N_X100->msg('nav1')),
array('nav2', $I18N_X100->msg('nav2')),
array('nav3', $I18N_X100->msg('nav3')),
array('nav4', $I18N_X100->msg('nav4'))
);

}

In diesem Beispiel wird der Link über eine Sprachdatei/Objekt definiert.
Hierzu muss in der config.inc.php des Addons auf die Sprachdatei verwiesen werden:

$mypage = "testaddon";
$I18N_X100 = new i18n($REX['LANG'],$REX['INCLUDE_PATH']."/addons/$mypage/lang");

Die Sprachdatei de_de.lang muss im Verzeichnis “lang” des Addons vorhanden sein.
Die enthaltenen Definitionen können danach in allen Dateien des Addons verwendet werden.

Inhalt de_de.lang

titel = Testaddon
nav1 = Einstellungen
nav2 = Daten-Liste 1
nav3 = Daten-Liste 2

Addon-Unterseiten einbinden

Über die Datei pages/index.inc.php des Addons können Unterseiten für jeden Menülink eingebunden werden.

<?php

// Parameter über rex_request
$subpage = rex_request('subpage', 'string');

//redaxo navigation einbinden
include $REX['INCLUDE_PATH'].'/layout/top.php';

//titel und tab-navigation menülinks ausgeben
rex_title($I18N_X100->msg('titel'), $REX['ADDON']['testaddon']['SUBPAGES']);


//unterseiten nach wert subpage einbinden
if ($subpage == ''){
include $REX['INCLUDE_PATH'].'/addons/'.$mypage.'/pages/liste.inc.php';
}elseif ($subpage == 'nav2'){
include $REX['INCLUDE_PATH'].'/addons/'.$mypage.'/pages/liste1.inc.php';
}elseif ($subpage == 'nav3'){
include $REX['INCLUDE_PATH'].'/addons/'.$mypage.'/pages/liste2.inc.php';
}elseif ($subpage == 'nav4'){
include $REX['INCLUDE_PATH'].'/addons/'.$mypage.'/pages/liste3.inc.php';
}

// redaxo footer ausgeben
include $REX['INCLUDE_PATH'].'/layout/bottom.php';

?>

Die Menülinks können auch als Links unter dem Titel des Addons ausgegeben werden. (2ter Parameter rex_title)

rex_title($I18N_X100->msg('titel'), $REX['ADDON']['testaddon']['SUBPAGES']);