PHP Latte - несколько блоков с одинаковым именем
Я новичок в движке шаблонов латте и возился с ним несколько дней. Я нашел много хороших и полезных вещей, которые сделают мои проекты проще и чище. Но есть одна вещь, которую я не нашел или не упустил из виду, как с этим справиться.
Представим, что на моих сайтах есть этот базовый шаблон макета:
Теперь мой вопрос таков: как я могу использовать один или несколько блоков "aside" в моем шаблоне, которые определены как "block". Лучшим решением могло бы быть что-то вроде: "block aside[]", и я обрабатываю его внутри основного шаблона каким-то образом с помощью цикла. Есть ли какой-нибудь полезный способ сделать это? Я не хочу использовать его с такими переменными, как навигация, потому что содержимое определяется в шаблоне.
спасибо за идеи и поздравления, Мекка
1 ответ
Ну, вы могли бы сделать что-то вроде злоупотребления именами динамических блоков :
{var $maxAside = 10}
{for $i = 0; $i < $maxAside; $i++}
{ifset aside-$i}
{include "aside-$i"}
{else}
{breakIf true}
{/ifset}
{/for}
и определите блоки вроде
{block "aside-{++$i}"}…{/block}
но я бы не рекомендовал это, потому что это просто добавляет бессмысленной сложности.
Либо большинство s будут одинаковыми, и тогда вы могли бы просто использовать один
aside
блок для них:
{block aside}
<section>
<p>here is f.e. a sidebar</p>
</section>
<section>
<p>this is some adverticement</p>
</section>
{/block}
Или вы захотите как-то их различать (например, стилизовать их по-разному), а затем назначить им классы, после чего вы можете просто использовать разные блоки:
<aside class="sidebar" n:ifset="sidebar">{include sidebar}</aside>
<aside class="advertisement" n:ifset="advertisement">{include advertisement}</aside>
Если вы не сопоставляете их с помощью
:nth-child
Селектор CSS. Но это хрупко, потому что теперь вам нужно будет сопоставить порядок с тем, который определен в CSS.
Проблема становится интересной только тогда, когда у вас есть иерархия страниц, в которой страницы наследуются отдельно от страниц в родительских слоях. Но тогда все же лучше использовать наследование шаблонов .