Как я могу переопределить WRAPPER в файле шаблона Template Toolkit? - PullRequest
11 голосов
/ 20 февраля 2010

Есть ли способ отключить WRAPPER, который был установлен в new (\% config) , через шаблон или временное переопределение с помощью parse()? Я хочу иметь по умолчанию один WRAPPER (который я буду использовать для 99,9% моих шаблонов), но исключаю несколько.

Я делаю это все через Catalyst::View::TT, так же, как пример из описания конфигурации , за исключением того, что я не хочу, чтобы WRAPPER применялся ко всем моим шаблонам.

Ответы [ 3 ]

8 голосов
/ 03 марта 2010

Отредактируйте оболочку, включив в нее условное выражение:

[% IF no_wrapper OR template.no_wrapper %] [% content %] [% ELSE %]
  top;
    [% content %]
  bottom;
[% END %]

Это позволяет мне отключить обертку либо (1) внутри шаблона, либо (2) из ​​тайника.

  1. [%- META no_wrapper = 1 -%]
  2. $c->stash->{no_wrapper} = 1

META var ...; - это директива, которая делает var доступным через хэш template как template.var

источник: http://wiki.catalystframework.org/wiki/gettingstarted/howtos/template_wrappers

4 голосов
/ 20 февраля 2010

Определите исключения в самом site/wrapper, и, кстати, там уже определены исключения.

[% IF template.name.match('\.(css|js|txt)');
     debug("Passing page through as text: $template.name");
     content;
   ELSE;
     debug("Applying HTML page layout wrappers to $template.name\n");
     content WRAPPER site/html + site/layout;
   END;
-%]
0 голосов
/ 01 сентября 2013

Я столкнулся с той же проблемой и создал более обобщенное решение, которое позволяет динамически переключаться между макетами или вообще не иметь макетов. Смотрите здесь:

Более одного макета / оболочки с Dancer и Template :: Toolkit

...