Как формировать заголовочный блок HTML-страницы

При верстке шаблона обрамления (layout) неизбежно появляется необходимость оформления блока заголовка (HEAD). Информацию в заголовке можно разделить на два типа:

  • постоянная информация, которая не изменяется на страницах.
  • переменная, которая отличается на разных страницах.

Постоянную можно вписать жестко, а для меняющейся необходимо предусмотреть механизм управления: каждый контроллер должен иметь возможность указать, какие мета-теги отображать для конкретной страницы, какие CSS и JS подключать.

В типовой блок HEAD выглядит следующим образом:

%HEAD{}

Вставка HEAD отрисует уже сформированные мета-теги, файлы подключения стилей (css) js-файлов.

Кроме этого, предусматривается возможность указывать для отдельных страниц свои CSS, скрипты, мета-теги.

Блок HEAD логически состоит из нескольких разнородных блоков. Блоки можно выводить в заголовке одтельно друг от друга. Для этого необходимо во вставке HEAD указать мнемокод соответствующего блока.

// Выведет блоки metas и inline
%HEAD{metas, inline}

// Выведет все блоки КРОМЕ metas и inline
%HEAD{^metas, inline}

Мнемокоды блоков для вывода в HEAD:

  • metas - мета теги: title, description, keywords;
  • inline - Inline-код, который добавляется через метод head_line();
  • inline_js - Inline JS-код. Cюда также входит инициализация TAO_Settings;
  • inline_css - Inline CSS-код;
  • files_css - подключение CSS ресурсов;
  • files_js - подключение JS ресурсов.

Как подключать JS и CSS

Во-первых, если какой-то отдельный шаблон требует для своей работы подключения каких-то особенных JS и CSS, то следует применить следующие методы:

<?php
        $this->use_scripts('jquery/treeview.js');
        $this->use_styles('treeview.css','forum.css');
        // Обратите внимание, что оба данных метода дают возможность указывать неограниченное число параметров.
?>

Т.к. JavaScript желательно подключать после сборки, перед закрывающим тэгом , то реализовать это можно следующим путем: отключить js-файлы в начале и подключить их внизу.

<head>
%HEAD{^files_js,inline_js}
</head>
<body>
// ...
%HEAD{files_js,inline_js}
</body>

Если нужно один конкретный скрипт исключить из head, то можно в начале лейаута (layout) написать

unset($this->agregators['js']['/scripts/scriptname.js']);

А потом внизу вручную его вывести.

Подробнее об управлении css-стилями и js-файлами можно в статье.

Как работать с мета-тегами

Если управление материалами ведется через нодус, то там уже реализован механизм, позволяющий устанавливать и перенастраивать мета-теги. Редактирование производится в поле «Доп.параметры» в виде элементов массива - meta.title, meta.description, meta.keywords или title, description, keywords. По умолчанию, если меты не определены, то будет выводиться title материала.

Для стороннего компонента мета-теги необходимо установить в контроллере через соответствующие переменные.

WS::env()->meta->title = ...
WS::env()->meta->description = ...
WS::env()->meta->keywords = ...

Также надо учитывать, что еще есть меты по умолчанию, которые устанавливаются в разделе «Настройки» в переменной head. В случае, если меты нигде не устанавливались, будут отображены меты по умолчанию.

Метки: Вставки
20.02.2015
Все статьи