- Главная
- Категории
- Настройки
- Темы оформления
- Шаблоны
- Базовые сведения о шаблонах
Базовые сведения о шаблонах
Файлы
Файлы шаблонов располагаются в папке tpl/ внутри одной из трёх подпапок согласно назначению. Большинство файлов и папок здесь нельзя удалить или переименовать, поскольку в этом нет необходимости. Создать, удалить или переименовать можно лишь шаблоны макетов страницы в папке tpl/layouts/, кроме макета по умолчанию default.tpl .
Разновидности шаблонов
Как было упомянуто выше, шаблоны бывают нескольких разновидностей согласно их назначению:
- layouts — макеты страницы
- pages — контент различных типов страниц
- widgets — различные виджеты
Синтаксис
Код шаблонов схож с HTML, но более близок к XHTML. Ниже перечислены ключевые моменты шаблонов в сравнении с HTML:
- Имена HTML тегов и атрибутов должны быть в нижнем регистре. <div> правильно, но <Div> или <DIV> неправильно. Верхний регистр тегов используется для Компонентов, о которых будет сказано далее.
- Все блочные теги должны быть явно закрыты строго в порядке открытия: <div><p>...</p></div> правильно, но <div><p>...</div> или <div>...(конец файла) неправильно.
- Одиночные теги должны иметь "/" перед ">", как в XML. <img src="..." /> и <br/> правильно, но <img src=""> и <br> неправильно.
- Значения атрибутов могут быть как заключены в кавычки или апострофы, так и указаны без оных, но последнее не рекомендуется. Также в качестве значений атрибутов могут использоваться выражения в фигурных скобках (об этом будет сказано далее).
- Булевы атрибуты (например, disabled или checked) могут быть указаны без значения, как это разрешает HTML: <input disabled/>.
- Пробельные символы в тексте в начале и в конце строки удаляются. Пустые строки текста удаляются. Подробнее будет сказано далее.
- Текст вне тегов не может содержать символы < > { } , поскольку они имеют специальное назначение. Для вставки символов < и > используйте соответствующие мнемоники < и >. <p>x < y</p> неправильно. <p>x < y</p> правильно. Для вставки символов { и } можно использовать как мнемоники C; и E; так и выражения со строкой (см далее). Обратите внимание, что вместо вставки JS или CSS кода прямо в страницу лучше использовать внешние файлы.
Обратите внимание: атрибуты, принимающие булев тип (boolean), могут быть указаны следующими способами:
{# здесь атрибут disabled принимает true #}
<input type="text" disabled/>
<input type="text" disabled={true}/>
{# здесь атрибут checked принимает значение false,
что может иметь смысл для свойств Компонентов #}
<input type="checkbox" checked={false}/>
{# здесь атрибут checked принимает значение из внешнего параметра foobar #}
<input type="checkbox" checked={foobar}/>
Комментарии
Комментарии в шаблонах могут содержаться только в тексте, и имеют следующий вид:
{# комментарий #}
{# закомментированный кусок кода
<div>
...
</div>
#}
Вложенные комментарии недопустимы.
Удаление пробелов в тексте
Пробельные символы в тексте в начале и в конце строки удаляются вместе с символами переносов строк. Это позволяет переносить код шаблона для улучшения читабельности, не беспокоясь о засорении вывода лишними пробелами:
<div>
<h1>Заголовок</h1>
<p>
Lorem ipsum dolor sit
amet consectepture adipisicing elit.
</p>
</div>
этот код выведет на страницу:
<div><h1>Заголовок</h1><p>Lorem ipsum dolor sitamet consectepture adipisicing elit.</p></div>
Обратите внимание, что перенесённый текст склеился без пробелов. Чтобы избежать подобного поведения, можно сделать, например, так:
<p>
Lorem ipsum dolor
{} sit amet consectepture.
</p>
<p>
{} {}
</p>
этот код выведет:
<p>Lorem ipsum dolor sit amet consectepture.</p><p> </p>
Вставка выражений
Вычисляемые выражения могут использоваться в качестве значений атрибутов и в тексте. Примеры:
<h1>{ title }</h1>
<a href={ url } title={ title }>...</a>
В большинстве случаев в качестве выражений используется подстановка значений параметров. Подробнее о выражениях будет рассказано отдельно.
Компоненты
Компоненты — это специальные теги, которые при выводе страницы выполняют какие-то действия или выводят на страницу некий код. В коде шаблона компоненты — это такие же теги, как и обычные HTML теги. Компоненты, как и HTML теги, могут принимать атрибуты (свойства) и могут быть блоковыми или одиночными.
Обратите внимание, что имена компонентов чувствительны к регистру. Это значит, что компонент CSS не будет работать при обращении по имени <css/> или <Css/>, и будет работать только как <CSS/>.
Например:
{# подключаем файл css/styles.css к выводу страницы #}
<CSS href="styles.css"/>
{# произвольное меню языковых версий #}
<UH-Languages-Menu>
<a
href={url}
class={ "nav-link ${ active && "active" }"}
>
{label}
</a>
</UH-Languages-Menu>
Подробнее о различных компонентах будет рассказано отдельно.
