Правило 1 - табуляция в 2 пробела.
Используйте 2 пробела для табуляции и Ваш код практически всегда будет помещаться на одном экране без горизонтального скролла. Простой совет, экономящий время на понимание Вашего кода.
// Правильно:
<div class="blog-list">
{foreach $blog_records as $blog_record}
<div class="item">
bla-bla-bla
</div>
{/foreach}
</div>
Правило 2 - имена параметров без кавычек
Задавайте имена параметров без кавычек и делайте это везде, где только возможно!
// Правильно:
{def $home_page = fetch(content, node, hash(node_path, '/home'))}
// Неправильно:
{def $home_page = fetch('content', 'node', hash('node_path', '/home'))}
Правило 3 - длина строки не больше 80 символов
Старайтесь всегда укладываться в этот размер, его олее, чем достаточно. В противном случае. разбивайте шаблоны по функциональным блокам (функциональная декомпозиция). Мы иногда позволяем себе редкие отклонения до 120 символов, но это скорее в виде большого исключения из правил.
Правило 4 - длина шаблона не больше 120 строк
Значение предельное — превышать крайне нежелательно, так как резко снижается читаемость файла, увеличивается максимальная длинна строк из-за обилия вложений. К тому же декомпозиция ведет к лучшему пониманию кода, уменьшению количества повторяющегося кода и благосклонному отношению к вам других разработчиков.
Правило 5 - формализуйте пути для подключаемых шаблонов
В своих проектах мы используем следующее правило:
// Путь для шаблонов, используемого в рамках одной шаблона страницы:
templates/имя_шаблона_страницы/имя_шаблона.tpl
// Путь для повторно используемых шаблонов:
templates/blocks/имя_шаблона.tpl
Правило 6 - разделяйте разные смысловые блоки пустой строкой
Это хорошее правильно, которое работает везде.
// Объявляем коллекцию изображений
{def $images = fetch( content, list, hash(...)}
// Что-то делаем с этими изображениями
{foreach $images as $index => $image}
//code
{/foreach}
// Объявляем коллекцию постов
{def posts = fetch( content, list, hash(...)}
// etc.
Правило 7 - широко используйте "has_content"
Поля классов (особенно изображения и файлы), которые являются необязательными при заполнении, необходимо оборачивать в условие, иначе будет некорректно отображаться информация на странице.
{if $blog_record.data_map.image.has_content}
<img src="{$record.data_map.image.content[blog].full_path|ezroot(no)}"/>
{/if}
Правило 8 - пользуйтесь змеиной нотацией при назначении имен переменным
Мы перепробовали много различных вариантов. Этот оказался наиболее простым и функциональным. Выглядит это вот так:
// Правильно
{def $blog_records = ... }
{def $pagination_params = ... }
// Неправильно
{def $BlogRecords = ... }
{def $paginationParams = ... }
{def $aboutpage = ... }
Конечно же для индексов можно всегда использовать простые имена переменных - i, j, k, l, etc.
Правило 9 - объявление переменной без дальнейшего использования недопустимо
Распространенной ошибкой является объявление без использования ключа массива при использовании foreach (в данном случае это переменная $index). Выглядит это вот так:
Правильно:
{foreach $blog_records as $blog_record}
{node_view_gui node=$blog_record}
{/foreach}
Неправильно:
{foreach $blog_records as $index => $blog_record}
{node_view_gui node=$blog_record}
{/foreach}
Правило 10 - убирайте лишние пробелы при перечислении аргументов функций
При использовании функций аргументы разделяем пробелами после запятой. Перед запятой, после открывающейся и перед закрывающейся скобкой пробелы нежелательны.
Правильно:
{def $all_records_count = fetch(content, list_count, $filter)}
Нежелательно:
{def $all_records_count = fetch( content , list_count , $filter )}
Правило 11 - весь js-код следует выносить в *.js-файлы
И не нужно лениться, ни при каких обстоятельствах. Даже если очень хочется. Допускается объявление в шаблоне переменной, для дальнейшего определения страницы в js-файле:
<script>var contacts_page = true;</script>
Также допускается указание различных метрик, пикселей и авторизаций. Например Я.Метрики, Google Analytics, Facebook Pixel, или авторизация в том же Facebook, как в следующем примере.
Правило 12 - используйте {literal} если хотите оставить блок без изменений
Коды метрик необходимо оборачивать в {literal}.
// Правильно
{literal}
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_GB/sdk.js#xfbml=1&version=v2.5&appId=1061111953919091";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
{/literal}
Комментарии
Оставить комментарий
Для того чтобы оставить комментарий, авторизуйтесь.
Для того чтобы оставить комментарий, заполните поля, приведенные ниже.