Система динамического меню - PullRequest
0 голосов
/ 24 августа 2010

Я работаю над системой динамического меню, поскольку сайт, который я создаю, имеет строгое соглашение об именах.

Например, если у меня есть скрипт с именем AboutUs.php, тогда « О нас » будет пунктом родительского меню. Однако, если у меня есть сценарий с именем Product.Product1.php, тогда « Product » является родительским элементом с « Product1 » в качестве элемента подменю.

Идея состоит в том, чтобы перебрать все скрипты в моей папке веб-интерфейса и создать массив, чтобы элементы ul / li могли отображаться с помощью вложенного foreach

Я просто не могу получить Array и $submenu) в самый раз .. Спасибо!

if ($handle = opendir('frontend/')) {
while(false !== ($sFile = readdir($handle))) {
    if (strrpos($sFile, ".php") === strlen($sFile)-strlen(".php")) {
        $pos1 = strrpos($sFile, ".");
        $menu = substr($sFile, 0, $pos1);
        $pos2 = strrpos($sFile, ".php");
        if ($pos1 == $pos2) { // "." and ".php" where in the pos, skip submenu
            $links[$menu] = 'fontend/'.$sFile;
        } else {
            $submenu = substr($sFile, $pos1, $pos2);
            $links[$menu][$submenu] = 'fontend/'.$sFile;
        }
    }
}

} * * тысяча двадцать-один

Ответы [ 2 ]

2 голосов
/ 24 августа 2010

Мне кажется, вам лучше взорваться от '.' вместо использования strpos и regex.

while(false !== ($sFile = readdir($handle))) {
    if (strrpos($sFile, ".php") === strlen($sFile)-strlen(".php")) {
        $parts = explode('.', $sFile);
        if (count($parts) == 2)
        {
            $urls[$parts[0]] = 'frontend/'.$sFile;
        }
        else if (count($parts) == 3)
        {
            $urls[$parts[0]][$parts[1]] = 'frontend/'.$sFile;
        }
    }
}
1 голос
/ 24 августа 2010

if ($handle = opendir('frontend/')) {
while(false !== ($sFile = readdir($handle))) {
    if (strrpos($sFile, ".php") === strlen($sFile)-strlen(".php")) {
        $posExt = strrpos($sFile, "." );
        $menu = substr($sFile, 0, $pos1);
        $posSub = strrpos($menu, ".");
        if ($posSub === false) { // "." and ".php" where in the pos, skip submenu
            $urls[$menu] = 'fontend/'.$sFile;
        } else {
            $submenu = substr($menu, $posSub, ($posExt-$posSub));
            $urls[$menu][$submenu] = 'fontend/'.$sFile;
        }
    }
}

Не проверял, хотя, но он должен работать.^^

РЕДАКТИРОВАТЬ: Исправлено, но при получении подменю $.Не исключено, что где-то также будет ошибка «off-by-1».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...