diff --git a/Modules/Controller/Admin/NavigationTreeSortedMenus.php b/Modules/Controller/Admin/NavigationTreeSortedMenus.php index 8f8324d..0b60660 100644 --- a/Modules/Controller/Admin/NavigationTreeSortedMenus.php +++ b/Modules/Controller/Admin/NavigationTreeSortedMenus.php @@ -4,6 +4,7 @@ namespace D3\SortedMenus\Modules\Controller\Admin; use DOMElement; use DOMXPath; +use OxidEsales\Eshop\Core\Registry; class NavigationTreeSortedMenus extends NavigationTreeSortedMenus_parent { @@ -19,29 +20,11 @@ class NavigationTreeSortedMenus extends NavigationTreeSortedMenus_parent public function d3SortMenus() { - $sorting = [ - // Tabs - [ - 'xpath' => "//OX/*[@id='d3mxd3modules']/*[@id='d3mximporter']/*[@id='d3mxarticleimport']/TAB", - 'order' => ['d3tbclimporter_category', 'd3tbclimporter_selectlist', 'd3tbclimporter_main'] - ], - // mainmenu - [ - 'xpath' => "//OX/*[@id='d3mxd3modules']/MAINMENU", - 'order' => ['d3konfigurator', 'abcdef', 'd3mxordermanager'] - ], - // mainmenu with unvalid item - [ - 'xpath' => "//OX/*[@id='d3mxd4modules']/MAINMENU", - 'order' => ['d3konfigurator', 'abcdef', 'd3mxordermanager'] - ], - // Tabs - [ - 'xpath' => "//OX/*[@id='NAVIGATION_ESHOPADMIN']/*[@id='mxmanageprod']/*[@id='mxcategories']/TAB", - 'order' => ['tbclcategory_pictures'] - ] - // can't sort buttons - ]; + $sorting = Registry::getConfig()->getConfigParam('d3MenuSorting'); + + if (false === is_array($sorting) || false == count($sorting)) { + return; + } foreach ($sorting as $sort) { $this->d3SortList($this->_oInitialDom, $sort['xpath'], $sort['order']); diff --git a/README.md b/README.md index f696f3d..d1f3119 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,51 @@ [![deutsche Version](https://logos.oxidmodule.com/de2_xs.svg)](README.md) [![english version](https://logos.oxidmodule.com/en2_xs.svg)](README.en.md) -# D³ Sorted Menus für OXID eShop +# D³ Sortable Menus für OXID eShop Das Modul bietet die Möglichkeit, die Adminmenüs in eine gewünschte Reihenfolge zubringen. Sortiert werden kann das Seitenmenü auf der linken Seite sowie die Tabs in jedem einzelnen Bereich. +Die Einträge können ausschließlich in der aktuell ausgewählten Ebene verschoben werden. + +## Konfiguration + Die Konfiguration erfolgt der Einfachheit halber direkt in der Konfiguration des Shops (`config.inc.php`). -Die Einträge können ausschließlich in der aktuell ausgewählten Ebene verschoben werden. +Fügen Sie beispielhaft folgende Konfiguration ein: + +```php +$this->d3MenuSorting = [ + // Tabs + [ + 'xpath' => "//OX/*[@id='d3mxd3modules']/*[@id='d3mximporter']/*[@id='d3mxarticleimport']/TAB", + 'order' => ['d3tbclimporter_category', 'd3tbclimporter_selectlist', 'd3tbclimporter_main'] + ], + // mainmenu + [ + 'xpath' => "//OX/*[@id='d3mxd3modules']/MAINMENU", + 'order' => ['d3konfigurator', 'abcdef', 'd3mxordermanager'] + ], + // mainmenu with unvalid item + [ + 'xpath' => "//OX/*[@id='d3mxd4modules']/MAINMENU", + 'order' => ['d3konfigurator', 'abcdef', 'd3mxordermanager'] + ], + // Tabs + [ + 'xpath' => "//OX/*[@id='NAVIGATION_ESHOPADMIN']/*[@id='mxmanageprod']/*[@id='mxcategories']/TAB", + 'order' => ['tbclcategory_pictures'] + ] + // can't sort buttons +]; +``` + +Jeder Eintrage definiert mit der xPath-Angabe eine Menüebene, in der sortiert werden kann. Der xPath kann in der jeweiligen menu.xml ermittelt werden. + +Im order-Eintrag stehen die IDs der enthaltenen Einträge in der richtigen Reihenfolge. Nicht enthaltene Einträge werden in der bisherigen Sortierung automatisch an das Ende der sortierten Liste angehängt. + +Nach dem Ändern der Sortiereinträage muss der tmp-Ordner geleert werden. ## Schnellinstallation