а если так: index.php PHP: $content = render('main.php',['items'=>$cat]); echo render('content.php', ['title'=>'Мой рендер', 'content'=>$content]); content.php PHP: <title><?php echo $title; ?></title> <div class="content"> this page content <?php echo $content; ?> </div> main.php PHP: <div class="main">this page main <?php foreach($items as $item){ echo render('menu.php', ['item'=>$item]); } ?> то есть я создаю рендер с выводом информации в файле верхнего уровеня. PHP: <div class="menu">this page menu <?php echo $item['link']; ?> </div>
Чтение - обязательное требование. Да, готовый, но я его дал, что показать, какие требования к шаблонизатору, чтоб им нормально можно было пользоваться. В любом случае, всякие меню надо подключать на уровне шаблонов, хотя бы инклюдами. А вообще, нужно сделать систему лейаутов.
Английский изучаю. Ещё раз читаю мануал Plates. Спасибо. Сейчас кто то использует php шаблоны в чистом виде или все используют только шаблонизаторы twig, blade и т.д.? В предыдущем своем посте я выложил свой код, где вывод меню я сделал на уровне шаблона маин. Это подразумевалось? На правильном пути? Планирую разобраться , до уровня чтоб создать свой простой шаблонизатор а затем изучать шаблонизатор с рынка ИТ.
Крупные проекты на фрейморках. У меня всё крупное на Laravel, там blade, естественно. Симфонисты Twig юзают. Смарти - не знаю, жив ли ещё. На небольших проектах мне нравится Plates Ну и конечно, всё чаще фронт в принципе делается не на PHP, а на какаом-нибудь VueJS, React, Angular.
Ну, можно тупо в макете сделать PHP: <?php $menu = require __DIR__.'config_menu.php'; ?> <!DOCTYPE html> После подключения тут же отрендерить в памяти или рендерить прямо на месте вставки меню в шаблоне какого-то родительского блока (шапки сайта) или в собственном шаблоне меню. Вот это меню вроде рендерится прямо в шаблоне сайдбара (проверьте в шаблоне). Подключается во фронте, как часть конфига, а не в макете, но не суть. Главное обычные контроллеры про него ничего не знают. Используют.
P.S. Как ранее писал, можно рендерить меню в отдельном процессе (по крону), а в макете делать PHP: <?php $menu = file_get_contents(...); ?> ... <?= $menu ?> или просто PHP: <?= readfile(...) ?> Только нужно какой-нибудь синхронизатор прикрутить.
не знаю что такое крон что такое синхронизатор пока не знаю --- Добавлено --- пока что я дошел до такого уровня: controler.php PHP: $items = render('main.php', ['items'=>$cat]); $render = render('content.php', ['content'=>$items]); main.php PHP: foreach($items as $item){ echo render('menu.php', ['item'=>$item]); } в файле меню вывожу меню: menu.php PHP: echo $item['link']; echo $item['text'];
http://u75.ru/cron Библиотека, алгоритм, чтобы два процесса не конфликтовали, а работали синхронно при чтении/записи кеша меню (файла с отрендеренным меню). В принципе его можно тупо писать вручную, т.к. меню обычно меняется раз в сто лет. Просто ламеры это делать не должны, а на своих сайтах или чужих администрируемых вами по этому поводу можно не париться и хардкодить меню, как вам удобно. Я уже второй раз у вас вижу рендер меню внутри цикла. ЧЁ шаблон для одного пункта меню что ли?! --- Добавлено --- Обычно цикл прямо в шаблоне меню находится. Вы нашли тот пример, на который я выше указывал?
Всё что мне высылали я перечитывал по нескольку раз. Вывод - надо спуститься ниже и изучить то что я её не знаю. для наглядности сократил. PHP: $items = render('main.php', ['items'=>$cat, 'content_main'=>$content_main, 'x'=$x', 'z'=>$z]);