eZ Publish: 12 правил оформления кода в шаблонах

eZ Publish: 12 правил оформления кода в шаблонах

Правило 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}

Комментарии

Оставить комментарий

Теги:

В России:

Дорогой сердцу Hadrout (Гэдрут) в России. Проекты, клиенты, мысли и эмоции нашей команды.

В Америке:

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