Я тут немножко подумал, почитал повнимательнее инструкции и решил сделать несколько иначе.
Итак в файле шаблона можно определять дополнительные поля для редактирования и последующего вывода их значений следующим образом
Code: Select all
<head>
<title>{title}</title>
<meta name="description" content="{description}" />
<meta name="keywords" content="{$keywords|default:'empty'}" />
<meta name="robots" content="{$keywords|default:'noindex,nofollow'}" />
{metadata}
{stylesheet}
{cms_selflink dir="start" rellink=1}
{cms_selflink dir="prev" rellink=1}
{cms_selflink dir="next" rellink=1}
{content block="Ключевики" oneline="true" wysiwyg="false" assign=keywords}
{content block="Роботы" oneline="true" wysiwyg="false" assign=robots}
</head>
assign позволяет прописать теги в переменную Смарти (и как следствие использовать инструкции Смарти для ее обработки!!!).
Помещая определения {content block="Ключевики"} в HEAD мы добиваемся того что они работают только в режиме редактирования.
Мы можем задать блоку наше родное русское название и именно оно будет отображаться в админке.
И как я уже говорил можно задействовать Смарти для обработки переменной, в моем случае если переменные не заданы (или их невозможно задать, например для страницы 404) то подставляется дефолтное значение.
В моем случае сгенерированный хеад для страницы 404 такой:
Code: Select all
<head>
<title>404 Error</title>
<meta name="description" content="404 Error" />
<meta name="keywords" content="empty" />
<meta name="robots" content="noindex,nofollow" />
.................
</head>
Еще я поизвращался над шаблоном и параллельно познал мощь {get_template_vars}. В результате сваял такой вывод контента:
Code: Select all
{get_template_vars}
{if $friendly_position == 1 or $content_id == -1} <!-- проверяем страницу по умолчанию и страницу 404 -->
{content} <!-- да это она, нафиг там комменты и заголовки h1, у меня на главной новости списком -->
{elseif $friendly_position < 3} <!--позиция не 1 не -1 а 2 с дитями, это мои статьи значит -->
<div class='prinbutton'><!-- выводим кнопку печати -->
<a href='{cms_module module='printing' onlyurl="true"}'><img src='images/phpwebtpl/print.png' alt='Печать'></a>
</div>
<h1>{title}</h1><div class="articledate">{modified_date format="%H.%d.%Y"}</div><!-- заголовок и дату в контейнер чтобы перемещать ее например вправо -->
{content}
<div class="articlesfooter"><!-- выводим допполя для контента, я зарядил туда комменты -->
{cms_module module='comments' emailfield=1 websitefield=1 localedateformat='%H.%d.%Y' lang='ru_RU'}
</div>
{else}<!--предыдущие условия не выполнены делаем обычный вывод -->
<h1>{title}</h1>
{content}
{/if}
Полезность такого вывода очевидна, т.к. мы не выводим на страницах где это не нужно комменты и кнопки печати, на некоторых ненужен заголовок h1 а можно добавить еще инструкций и выводить еще чего то.
Вы скажете что это можно сделать непосредственно в контенте, но представьте что кому то надо поставить кнопку печати на 1000 статьях которые все дети на папе Статьи. Автоматизация - это хорошо.