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.


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

Другие вопросы по тегам