Печатать HTML-комментарий при передаче через условный оператор

Я новичок в Template Toolkit, пытаюсь обновить некоторые существующие шаблоны, поэтому я ценю любую полученную помощь.

Я установил условный оператор, который проверяет имя модуля, а затем выводит это имя в виде удаленного HTML-идентификатора (например, «Это заголовок» -> «this_is_a_title»).

Код: <div [% IF Tag.module_name %]id="[% Tag.module_name | dirify %]"[% END %]>

Однако в некоторых случаях введенный заголовок был помещен в HTML-комментарий. Это вне моего контроля, поэтому я хотел бы как-то обойти это. Я хотел бы либо:

  • удалить теги комментариев, оставив сам текст комментария, чтобы его можно было использовать для идентификатора; или же
  • игнорировать заголовки, в которых используются комментарии HTML, и вообще не вставлять атрибут ID

В настоящее время вывод для заголовков с комментариями HTML заканчивается как <div id="">, что некрасиво. Я пытался найти код, который мне нужен, и несколько раз искал решение, но, похоже, не могу его решить. Будет ли это возможно или мне нужно будет принять пустой идентификатор?

ОБНОВЛЕНИЕ: передача дополнительного фильтра для HTML перед фильтром dirify завершилась работой по удалению комментариев HTML и удалению оставшегося текста. Используя [%ATTag.list_name | html | dirify %] помог вывести заголовок в формате от <!--This is a Title--> до this_is_a_title. Я также смог сократить исходный пример кода, приведенный выше, до простого <div id="[% Tag.module_name | html | dirify %]">, который выводит <div id="this_is_a_title"> (или какой-либо другой заголовок, который в итоге получается).


person brianna    schedule 01.04.2013    source источник


Ответы (1)


Это может сделать то, что вам нужно:

[%- SET dirified = Tag.module_name FILTER dirify;
    IF dirified; -%]
    <div id="[% dirified %]">
[%- ELSE -%]
    <div>
[%- END-%]

Без конкретного примера проблемы с комментариями HTML сложно сказать.

person RET    schedule 02.04.2013
comment
Спасибо, @RET. Этот код не работал у меня, но заставил меня попробовать несколько других вещей, о которых я раньше не знал. В итоге получилось пройти фильтр HTML до того, как фильтр Dirify заработал для моих нужд. например [% ATTag.list_name | html | dirify %]. - person brianna; 03.04.2013