всем привет. Правильно ли я реализовала функцию, которая бы на созданных страницах отображала название раздела в теге <h1> или возможно реализовать данную задачу другим более корректным способом? PHP: $menu = [ ['title' => "О нас", 'path' => "/route/about/", 'sort' => 2], ['title' => "Главная", 'path' => "/", 'sort' => 1], ['title' => "Новости о нашем проекте", 'path' => "/route/news/", 'sort' => 4], ['title' => "Каталог выполненных проектов", 'path' => "/route/catalog/", 'sort' => 5], ['title' => "Контакты", 'path' => "/route/contacts/", 'sort' => 3] ]; $sort = array_column($menu, 'sort'); array_multisort($sort, SORT_NUMERIC, SORT_ASC, $menu); $menu = "<ul>"; foreach ($menu as $menu_item) { $menu .= "<li> <a href=\"{$menu_item['path']}\"> {$menu_item['title']} </a> </li>"; } $menu .= "</ul>"; echo $menu;
Весь нюанс вот в этих палочках / . Если вязаться жестко к path, и пользователь например перейдет по такой ссылке /route/news. Что будет? Лучше все таки <h1></h1> тащить не из массива предназначенного для href. А из того что вы будете показывать на этой странице. То есть из БД. Но это мое мнение ,все делают по разному. Можно и из этого массива со всякими проверками, но это наверно гемор.
@Artur_hopf, да, все верно ты говоришь. Меню в общем нужно отделять от сущностей, на которые ссылаются пункты меню. Построение меню в частном случае еще можно завязать на сущности, но не наоборот. Про h1 я один нифига не понял? В коде же ничего такого нет. P.S. Сортировка меню выглядит забавно. Почему бы не использовать исходный порядок (без всяких доп. полей вроде 'sort')? --- Добавлено --- P.P.S. Вот коллега особо не парился: https://gency.ru/comment/114 – захардкодил меню в конфиге и готово --- Добавлено --- Сами сущности в БД (там sql-файл прилагается к статье).
Использовать этот массив для роутинга, извлечения отдельных тайтлов однозначно гемор. Нужен обход в цикле. Меню по моей ссылке в этом принципиально отличается от меню ТСа.
В вашем коде этого вообще нет. 1. Роутинг и выборка основного контента из БД. 2. Подстановка выбранных данных в шаблоны и вывод. Если нужна готовая основа, могу записать в тестеры этого движка за символическую плату и при условии, что вы сможете показать, что вам не нужно разжевывать элементарные вещи (пока я этого не увидел). Там все просто: 1) PHP: <h1><?= $page['name'] ?></h1> <?= $page['content'] ?> 2) PHP: <!DOCTYPE html> <html> <head> <title><?= $page['name'] ?> | Site</title> </head> <body> <?= $page['content'] ?> </body> </html> Источник (1 выводится на месте контента в 2, как показано там же в демке). Сами данные в БД (MySQL), о чем я уже писал в первом посте.
P.S. Если нужна именно адресная ветка /route/, без проблем создается (см. последний коммент там же). Трэйлинг слеши тоже можно использовать без особых проблем. P.P.S. Вот недавно показывал, как создать коллекцию users и шаблон для нее: https://php.ru/forum/posts/626249/ (коллекцию route создаете точно так же).