Управление сайтом (Website UI)

Содержание

1. Базовые понятия
2. Компоненты страниц (Page components)
2.1. Использование компонентов страниц на сайте
2.2. Работа с компонентами страниц в панели администрирования
2.3. Обзор компонентов страниц demo-сайта
3. Блоки (Blocks)
3.1. Общая информация о блоках
3.2. Использование блоков на страницах сайта
3.3. Параметры конфигурации и шаблоны блоков
3.4. Блоки списков и пагинация
3.5. Краткий обзор существующих блоков
4. Реклама и Рекламные места (Advertising & Advertising locations)
4.1. Использование рекламных мест на сайте
4.2. Работа с рекламой в панели администрирования
5. Страницы (Pages)
5.1. Общая информация о страницах
5.2. Работа со страницами в панели администрирования
5.3. Краткий обзор существующих страниц
6. Кэширование
6.1. Кэширование первого уровня (кэширование блоков)
6.2. Кэширование второго уровня (кэширование страниц)
6.3. Важные аспекты кэширования
6.4. Статистика производительности
7. Другие аспекты работы с сайтом
7.1. JavaScript файлы
7.2. Системные email сообщения
7.3. Таблицы стилей CSS
7.4. Информация в сессии пользователя
7.5. Подключение кастомного функционала к движку

1. Базовые понятия

Kernel Video Sharing предоставляет движок с огромным спектром возможностей по созданию и настройке страниц сайта. Основные достоинства движка перечислены ниже:

Движок Kernel Video Sharing использует 4 сущности для построения сайта:

Структура страницы сайта
Структура страницы сайта.

Для того, чтобы наглядно представить себе все основные сущности сайта, рассмотрим скриншот выше. Все что отображается на скриншоте - это отдельная страница, которая доступна по отдельному адресу. В самом верху страницы находится шапка. Шапка - это компонент страницы, поскольку она не несет в себе никакой логики, только выводит верхнюю часть HTML кода страницы. В шапке вставлено рекламное место, в котором отображается один баннер. Если к этому рекламному месту привязать несколько баннеров, то они будут ротироваться. Ниже шапки отображается блок списка видео (list_videos), который выводит 9 последних просмотренных видео. Чем отличается блок от компонента страницы очевидно - блок обращается в базу данных для того, чтобы вывести некоторую информацию, а компонент страницы просто отображает HTML код. Справа от блока списка видео отображается компонент страницы с формой поиска видео и под ним блок облака тэгов (tags_cloud).

В качестве другого примера рассмотрим страницу Community, на которой мы хотим отобразить такую информацию:

Код шаблона страницы будет иметь приблизительно такой вид:

{{* Устанавливаем значение переменной page_title, которая используется в компоненте страницы header_general *}}
{{assign var=page_title value="Community"}}

{{* Включаем компонент страницы header_general, который отображает шапку страницы *}}
{{include file="header_general.tpl"}}

<div id="data">
    <div id="wide_col">
        {{* Включаем блок list_videos для отображения 3 премиум видео *}}
        {{insert name="getBlock" block_id="list_videos" block_name="Recommended premium videos"}}

        {{* Включаем блок list_members для отображения 20 последних пользователей *}}
        {{insert name="getBlock" block_id="list_members" block_name="Latest members"}}

        {{* Включаем блок list_albums для отображения 10 последних фотоальбомов *}}
        {{insert name="getBlock" block_id="list_albums" block_name="Latest albums"}}

        {{* Включаем блок list_albums для отображения 10 популярных фотоальбомов *}}
        {{insert name="getBlock" block_id="list_albums" block_name="Most popular albums"}}
    </div>
    <div id="side_col">
        {{* Включаем блок list_members для отображения 3 активных пользователей *}}
        {{insert name="getBlock" block_id="list_members" block_name="Active members"}}
    </div>
</div>

{{* Включаем компонент страницы footer_general, который отображает нижнюю часть страницы *}}
{{include file="footer_general.tpl"}}

Кроме непосредственного включения блоков в шаблоне страницы необходимо также настроить их параметры для данной страницы (например, блоку list_videos указать, что нужно выводить только 3 видео и обязательно премиум и т.д.) и при необходимости шаблоны блоков для данной страницы (логику отображения данных). Это будет детально рассмотрено в следующих разделах.

2. Компоненты страниц (Page components)

2.1. Использование компонентов страниц на сайте

Компоненты страниц представляют собой используемые во многих местах элементы и компоненты верстки сайта. Поскольку страниц сайта может быть очень много и большинство из них будет иметь схожие элементы дизайна (например, шапка, блок поиска, и др.), то для простоты и удобства использования такие элементы дизайна рекомендуется выносить в компоненты страниц, которые затем использовать в нужных местах.

Компоненты страниц могут использоваться в любых местах, где ожидается шаблон Smarty (в шаблонах страниц, шаблонах блоков и даже в шаблонах самих компонентов). Для включения компонента используется стандартная директива Smarty:

{{include file="%PAGE_COMPONENT_EXTERNAL_ID%.tpl"}}

В данном примере токен %PAGE_COMPONENT_EXTERNAL_ID% должен быть заменен на идентификатор (external ID) требуемого компонента, например header_general:

{{include file="header_general.tpl"}}

Во время обработки страницы данная директива будет заменена движком Smarty на содержимое шаблона указанного компонента. Это позволяет использовать любые переменные в шаблоне компонента страницы, значения которых могут быть установлены в месте непосредственного использования компонента. Для примера, рассмотрим шапку сайта, которая содержит информацию о названии страницы. Шапка не может содержать конкретное название страницы, поскольку она используется на разных страницах сайта с разными названиями. Поэтому вместо конкреного названия следует использовать переменную (например, page_title), значение которой будет устанавливаться в шаблоне конкретной страницы непосредственно перед включением компонента шапки на страницу. Код шаблона компонента шапки может выглядеть так:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <!-- Выводим значение переменной page_title в названии страницы -->
    <title>{{$page_title}} - My Tube Site</title>
</head>
<body>

Для того, чтобы при отображении страницы переменная page_title заменилась на нужное значение, необходимо присвоить ей это значение перед включением компонента. Это может быть сделано таким образом (страница со списком премиум видео):

{{* Устанавливаем значение переменной page_title *}}
{{assign var=page_title value="Premium Videos"}}

{{* Включаем компонент страницы header_general, который отображает шапку страницы *}}
{{include file="header_general.tpl"}}

....

2.2. Работа с компонентами страниц в панели администрирования

Файлы компонентов страниц хранятся в папке /template на сервере. Для создания компонентов php должен иметь права на создание файлов в данной папке. Для редактирования какого либо компонента php должен иметь права на редактирование файла шаблона данного компонента.

Список компонентов (Page components list) находится в разделе UI сайта (Website UI) панели администрирования. Список содержит следующие столбцы:

При добавлении / редактировании компоненты страниц поддерживают следующие поля:

Во время работы с содержимым страниц и блоков вы можете включать даже несуществующие компоненты страниц (через директиву Smarty {{include ...}}). В этом случае необходимый компонент будет создан автоматически с пустым шаблоном. Все что вам нужно будет сделать - это просто задать для него шаблон позже.

2.3. Обзор компонентов страниц demo-сайта

Данная таблица содержит краткое описание и предназначение компонентов страниц, которые используются на demo-сайте Kernel Video Sharing. Часть из приведенных ниже компонентов доступна только для владельцев полной версии.

Имя файла Описание
header_general.tpl Шапка сайта, поддерживает следующие внешние переменные:
- page_title - название страницы.
- page_description - описание страницы. Если переменная не задана, то выводится базовое описание (необходимо изменить его).
- page_keywords - тэги страницы. Если переменная не задана, то выводятся базовые тэги (необходимо изменить их).
footer_general.tpl Нижняя часть сайта.
list_albums_block_common.tpl Отображение списка фотоальбомов на основных страницах сайта. Используется в шаблонах блока list_albums. Поддерживает такие внешние переменные:
- list_albums_title - название списка.
- list_albums_show_all_link - ссылка на страницу просмотра всех фотоальбомов, если данный список отображает только часть из них без пагинации.
- list_albums_show_rating - одно из значений [1,2,3,4], показывает текущую сортировку по рейтингу [сегодня, неделя, месяц, все время].
- list_albums_show_popularity - одно из значений [1,2,3,4], показывает текущую сортировку по популярности [сегодня, неделя, месяц, все время].
list_albums_block_internal.tpl Отображение списка фотоальбомов на личных страницах сайта с возможностью опций удаления и редактирования. Используется в шаблонах блока list_albums. Поддерживает внешнюю переменную list_albums_title - название списка.
list_members_block_common.tpl Отображение списка пользователей на основных страницах сайта. Используется в шаблонах блока list_members. Поддерживает такие внешние переменные:
- list_members_title - название списка.
- list_members_show_all_link - ссылка на страницу просмотра всех пользователей, если данный список отображает только часть из них без пагинации.
list_members_events_block_common.tpl Отображение списка событий пользователей на основных страницах сайта. Используется в шаблонах блока list_members_events. Поддерживает такие внешние переменные:
- list_members_events_title - название списка.
- list_members_events_show_all_link - ссылка на страницу просмотра всех событий, если данный список отображает только часть из них без пагинации.
list_members_blog_block_common.tpl Отображение списка сообщений блога пользователя на основных страницах сайта. Используется в шаблонах блока list_members_blog. Поддерживает такие внешние переменные:
- list_members_blog_title - название списка.
- list_members_blog_show_all_link - ссылка на страницу просмотра всех сообщений блога, если данный список отображает только часть из них без пагинации.
- list_members_blog_disable_edit - устанавливается в 1, если шаблон не должен предоставлять возможность редактирования.
list_videos_block_common.tpl Отображение списка видео на основных страницах сайта. Используется в шаблонах блока list_videos. Поддерживает такие внешние переменные:
- list_videos_title - название списка.
- list_videos_show_all_link - ссылка на страницу просмотра всех видео, если данный список отображает только часть из них без пагинации.
- list_videos_show_rating - одно из значений [1,2,3,4], показывает текущую сортировку по рейтингу [сегодня, неделя, месяц, все время].
- list_videos_show_popularity - одно из значений [1,2,3,4], показывает текущую сортировку по популярности [сегодня, неделя, месяц, все время].
- list_videos_show_sorting - одно из значений [1,2,3,4], показывает текущую сортировку по разным показателям [дата появления, рейтинг, популярность, длительность].
- list_videos_show_sorting_link - используется совместно с list_videos_show_sorting для указания части сгенеренных ссылок сортировки.
list_videos_block_internal.tpl Отображение списка видео на личных страницах сайта с возможностью опций удаления и редактирования. Используется в шаблонах блока list_videos. Поддерживает внешнюю переменную list_videos_title - название списка.
member_menu.tpl Меню со ссылками на различные внутренние страницы сайта для зарегистрированных пользователей.
pagination_block_common.tpl Отображение пагинации для любого блока листинга. Используется в шаблонах блока pagination и шаблонах любых блоков списка.
pagination_block_ajax.tpl Отображение аяксовой пагинации для любого блока листинга. Используется в шаблонах блока pagination и шаблонах любых блоков списка.
search_albums_block.tpl Форма поиска по фотоальбомам.
search_members_block.tpl Форма поиска по пользователям.
search_videos_block.tpl Форма поиска по видео.
side_advertising.tpl Блок боковой рекламы для демонстрации.
tags_cloud_block_albums.tpl Отображение облака тэгов по фотоальбомам. Используется в шаблонах блока tags_cloud.
tags_cloud_block_common.tpl Отображение облака тэгов по видео. Используется в шаблонах блока tags_cloud.

3. Блоки (Blocks)

3.1. Общая информация о блоках

Блоки являются основными логическими модулями страниц. В отличие от компонентов страниц блоки предоставляют логику выборки / сохранения данных, а также большой спектр параметров конфигурации данной логики. Функциональность движка позволяет в любой момент времени изменить логику работы сайта путем изменения значений параметров блоков, а также добавления новых блоков на страницы и написания своих собственных блоков.

Список всех блоков и полную информацию о них с примерами использования можно посмотреть на странице Список блоков (Page blocks list) в разделе UI сайта (Website UI) панели администрирования. Список содержит следующие столбцы:

При открытии подробных данных о блоке можно получить информацию по использованию блока, список и описание всех параметров блока, а также различные примеры конфигурации блока.

Блоки могут быть условно классифицированы по нескольким признакам. Например, по типу отображаемого контента блоки можно разделить на:

По уровню доступа блоки условно могут быть разделены на следующие группы:

Большинство блоков использует глобальное хранилище данных на странице для сохранения туда некоторых результатов своей работы, чтобы они могли быть использованы на странице (снаружи блока). В шаблоне каждой страницы доступна глобальная переменная storage, которая может использоваться для доступа к результатам блока (например, блок video_view помещает в глобальное хранилище некоторую информацию о видео, которое он отображает, например, название, описание, тэги и др.

3.2. Использование блоков на страницах сайта

Для включение блока на странице необходимо использовать следующий синтаксис в коде шаблона страницы:

{{insert name="getBlock" block_id="%BLOCK_ID%" block_name="%UNIQUE_BLOCK_NAME%"}}

В данном примере токен %BLOCK_ID% должен быть заменен на идентификатор блока (block ID) требуемого блока, например, list_videos, а токен %UNIQUE_BLOCK_NAME% на любое уникальное имя блока для данной страницы:

{{insert name="getBlock" block_id="list_videos" block_name="Most Popular Videos"}}

Вы можете включать любое количество блоков любых типов на одной странице:

{{* Первый блок list_videos *}}
{{insert name="getBlock" block_id="list_videos" block_name="Most Popular Videos"}}

{{* Еще один блок list_videos *}}
{{insert name="getBlock" block_id="list_videos" block_name="Top Rated Videos"}}

{{* Третий блок list_videos *}}
{{insert name="getBlock" block_id="list_videos" block_name="Premium Videos"}}

{{* Список трейдеров *}}
{{insert name="getBlock" block_id="top_referers" block_name="Traders Text Links"}}

...

При простом включении блока на странице он будет вызываться и отображать результат непосредственно в том месте шаблона страницы, где вы его вставили. В некоторых случаях необходимо заставить блок выполниться в начале страницы, например, для того, чтобы показать данные из блока в заголовке страницы (title, description, keywords). Этого можно добиться, используя дополнительный параметр assign директивы {{insert ...}}. При использовании этого параметра результат выполнения блока будет не отображаться в текущем месте шаблона страницы, а помещаться в переменную, указанную в значении параметра assign. Этот результат выполнения можно будет вывести в любом месте страницы, используя стандартный вывод Smarty:

{{* Вызов блока просмотра видео в самом начале страницы и присвоение результата в переменную video_view_result *}}
{{insert name="getBlock" block_id="video_view" block_name="View Video" assign="video_view_result"}}

{{* Дальше идет много всего *}}
...

{{* Теперь нужно вывести результат блока просмотра видео *}}
{{$video_view_result|smarty:nodefaults}}

...

Этого достаточно, чтобы показать название видео в заголовке страницы, т.к. после отработки блока можно использовать его глобальное хранилище (storage):

{{* Вызов блока просмотра видео в самом начале страницы и присвоение результата в переменную video_view_result *}}
{{insert name="getBlock" block_id="video_view" block_name="View Video" assign="video_view_result"}}

{{* Присваиваем переменной page_title название видео доступное в глобальном хранилище *}}
{{assign var=page_title value=$storage.video_view_video_view.title}}

{{* Включаем компонент шапки, который отобразит значение из переменной page_title *}}
{{include file="header_general.tpl"}}

{{* Теперь нужно вывести результат блока просмотра видео *}}
{{$video_view_result|smarty:nodefaults}}

...

Как видно из примера, каждый блок использует глобальное хранилище данных под своим уникальным ключем (в примере это $storage.video_view_video_view). Нет никакого смысла понимать механизм формирования этих ключей, поскольку панель администрирования выводит эти ключи для каждого блока в таблице блоков данной страницы сайта. При необходимости использовать глобальное хранилище - ключ можно скопировать из таблицы.

Для удаления блока со страницы достаточно удалить из кода шаблона страницы директиву, которая его вставляет. При этом файлы блока на самом деле удаляться не будут. Это сделано для того, чтобы можно было быстро восстановить блок на странице в случае его ошибочного удаления. Если вы вставите снова директиву включения блока с такими же параметрами (имеются ввиду параметры директивы block_id и block_name) - блок будет восстановлен со всеми деталями его конфигурации. Если вы все же хотите финально удалить файлы блока (мы рекомендуем это делать, если вы проверили что блок удален корректно) - то откройте Список страниц (Pages list) в разделе UI сайта (Website UI). Вы увидите, что в боковом меню появится новая опция Подчистить файлы (Cleanup files), рядом с которой также показано количество файлов для очистки. Зайдите на эту опцию и удалите неиспользуемые файлы блоков.

Важно! После удаления файлов блоков (файл шаблона и файл конфигурации) на странице Подчистить файлы (Cleanup files) - восстановить детали удаленного блока будет невозможно. В случае необходимости восстановления вам придется заново создать и настроить блок на странице.

3.3. Параметры конфигурации и шаблоны блоков

Параметры конфигурации блока определяют его поведение на странице. Большинство блоков поддерживают большое кол-во параметров конфигурации (кроме разве что самых простых блоков). Шаблон блока предназначен для отображения данных, подготовленных блоком, либо наоборот, подготавливает данные для бизнес логики блока (это скорее относится к блокам, которые отображают различные формы для заполнения). Важно понимать, что разные блоки на странице (даже блоки одного типа) могут иметь координально разные параметры и шаблоны. Таким образом, параметры блока и его шаблон определяют логику поведения и отображения конкретного блока на конкретной странице.

При включении блока на странице он инициалируется параметрами и шаблоном, которые настроены по умолчанию. В подавляющем большинстве случаев это не то, что нужно, поэтому для изменения параметров блока и его шаблона следует зайти на страницу редактирования выбранного блока на выбранной странице. Сделать это можно либо с общего списка Cтраниц сайта (Pages list) - там для каждой страницы отображаются блоки со ссылками на их редактирование, либо с редактора отдельно взятой страницы, где отображается список включенных на странице блоков.

Страница редактирования блока поддерживает следующие поля:

Среди разнообразных параметров стоит выделить так называемые var-параметры, которые используются во многих блоках, например, var_from - для пагинации, var_video_dir - для отображения видео и т.д. Данные параметры ссылаются на названия HTTP параметров, которые следует использовать блоку на данной странице для своей работы. Рассмотрим пример с блоком просмотра видео video_view. Для того чтобы отобразить информацию о каком-либо видео блоку необходимо знать идентификатор этого видео. Видео может быть идентифицировано 2-мя способами: по числовому идентификатору и директории. Предположим, что мы хотим отобразить видео по директории (как обычно делается). Для этого блоку необходимо знать, в каком HTTP параметре передается директория видео для отображения, за что отвечает параметр блока var_video_dir, который указывает где искать значение директории. Это значит, что если для данного параметра установлено значение dir, то ссылка на страницу с текущим блоком должна содержать значение директории видео в HTTP параметре dir, т.е. /page_id.php?dir=video_directory_value. Аналогичное правило справедливо для всех var-параметров.

К счастью, в подавляющем большинстве случаев значение соответсвующего var-параметра можно оставить как оно предлагается по умолчанию. Вам необходимо только учитывать, что для корректного поведения блока на странице ссылка на эту страницу должна содержать необходимые блоку значения var-параметров. Если на вашем сайте используется mod_rewrite для ссылок (что скорее всего), то правила mod_rewrite должны также учитывать необходимые блоку var-параметры.

var-параметры являются одним из ключевых звеньев движка Kernel Video Sharing, поскольку они обеспевают блоки необходимой для работы информацией, а также используются для кэширования блоков и страниц. Названия и значения var-параметров по умолчанию настроены таким образом, чтобы подходящие друг к другу блоки могли работать совместно на одной странице. Так, например, блоки video_view, video_comments, list_videos и top_referers имеют параметры с одинаковым названием и значением var_video_dir и var_video_id. При включении этих блоков на одной странице и включении во всех блоках одного из данных параметров блоки будут отображать информацию о видео, комментарии к видео, список похожих видео и список рефереров, подходящих к видео по категории соответственно.

В большинстве случаев одинаковые блоки на разных страницах имеют похожий внешний вид, за исключением конечного ряда элементов (например, название списка видео может быть разным на каждой странице - но в целом все списки видео выглядят одинаково). В таких случаях логику отображения блока (шаблон) стоит вынести в компонент страницы, а в самом шаблоне блока включить этот компонент. Различающиеся элементы (как название) следует вывести через переменные Smarty, значение которым должно быть присвоено непосредственно перед включением компонента на странице. Это сделано на demo-сайте Kernel Video Sharing, где существует несколько компонентов страниц для отображения наиболее часто используемых блоков (например, компоненты list_videos_block_common.tpl и list_videos_block_internal.tpl, которые используются блоком list_videos).

3.4. Блоки списков и пагинация

Почти половина существующих в Kernel Video Sharing блоков является блоками списка. Блоки списка отличаются от других блоков тем, что они поддерживают возможность отображать только часть списка и навигацию по страницам списка (пагинацию), хотя могут быть также настроены на отображение полного списка объектов (сколько есть).

Все блоки списка поддерживают пагинацию внутри самого блока, а также поддерживают возможность пагинации через ajax без перезагрузки страницы (по умолчанию это не используется). Для включения пагинации в блоке списка должен быть включен параметр блока var_from, который указывает блоку в каком HTTP параметре приходит информация о текущей странице (по умолчанию var_from=from). Кроме этого параметра блока, вы можете также использовать другие параметры пагинации, которые поддерживаются каждым блоком списка:

После настройки параметров блока вам также необходимо добавить в шаблон блока отображение ссылок пагинации (по умолчанию шаблоны блоков не содержат этого). Для этого вы можете просто включить в нужном месте шаблона блока компонент страницы pagination_block_common (который содержит логику отображения списка страниц):

...

{{* Подключаем пагинацию вверху списка *}}
{{include file="pagination_block_common.tpl"}}

{{* Дальше идет список *}}
...

{{* Подключаем вторую пагинацию снизу списка - это пример того, что можно в блоке 2 раза подключить *}}
{{include file="pagination_block_common.tpl"}}

...

Все ссылки пагинации, которые отображаются внутри блока работают по схеме, удобной для поисковых ботов:

http://your_domain.com/popular_videos/
http://your_domain.com/popular_videos/1/
http://your_domain.com/popular_videos/2/
... и т.д.

Для того, чтобы эти ссылки работали корректно, необходимы корректные правила mod_rewrite, которые созданы для всех существующих списков. Если вы добавляете новые списки (либо изменяете адреса страниц для существующих), вам необходимо следить за тем, чтобы правила mod_rewrite для пагинации были указаны верно.

Несмотря на то, что пагинация поддерживается всеми блоками списка, она может также отображаться отдельным блоком pagination. Во-первых, это необходимо для совместимости со старыми версиями Kernel Video Sharing. Во-вторых, отдельный блок пагинации поддерживает некоторые расширенные возможности пагинации для особых случаев (информация об этом есть в документации блока pagination).

В завершение разговора о пагинации рассмотрим пагинацию через ajax. Для этого вам нужно внести всего 2 изменения в концепцию пагинации описанную выше:

3.5. Краткий обзор существующих блоков

Данная таблица содержит краткое описание и предназначение существующих блоков. Часть блоков доступна только для владельцев полной версии. Более подробную информацию об установленных блоках можно получить на странице Список блоков (Page blocks list) в разделе UI сайта (Website UI) панели администрирования.

Название блока Описание
album_comments Блок предназначен для отображения списка комментариев к заданному фотоальбому либо к одной из его фотографий, предоставляет возможность добавить новый комментарий для залогиненных и анонимных пользователей. Является стандартным блоком листинга, для которого можно включить пагинацию.
album_edit Блок предназначен для создания пользователями новых фотоальбомов, а также для редактирования своих уже созданных фотоальбомов (изменение данных, работа с фотографиями).
album_images Блок предназначен для отображения фотографий из заданного фотоальбома. Является стандартным блоком листинга, для которого можно включить пагинацию.
album_view Блок предназначен для отображения информации о заданном фотоальбоме и заданной его фотографии, предоставляет возможность добавить фотоальбом в личные закладки, поставить пользовательский рейтинг для текущей фотографии и отправить письмо другу со ссылкой на заданный фотоальбом.
content_source_comments Блок предназначен для отображения списка комментариев к заданному контент провайдеру, предоставляет возможность добавить новый комментарий для залогиненных и анонимных пользователей. Является стандартным блоком листинга, для которого можно включить пагинацию.
content_source_group_view Блок предназначен для отображения информации о заданной группе контент провайдеров.
content_source_view Блок предназначен для отображения информации о заданном контент провайдере.
dvd_comments Блок предназначен для отображения списка комментариев к заданному DVD, предоставляет возможность добавить новый комментарий для залогиненных и анонимных пользователей. Является стандартным блоком листинга, для которого можно включить пагинацию.
dvd_view Блок предназначен для отображения информации о заданном DVD.
feedback Блок отображает форму обратной связи и позволяет анонимным либо зарегистрированным пользователям отправить информацию администрации сайта.
global_stats Блок отображает агрегированную статистику по различным показателям сайта: кол-во видео, фотоальбомов, пользователей, сколько видео, фотоальбомов добавлено сегодня и др.
invite_friend Блок предоставляет возможность отправить письмо другу с приглашением и ссылкой на сайт.
list_albums Блок предназначен для отображения списка фотоальбомов с различными опциями сортировки и фильтрации. Является стандартным блоком листинга, для которого можно включить пагинацию.
list_albums_images Блок предназначен для отображения списка фотографий фотоальбомов с различными опциями сортировки и фильтрации. Является стандартным блоком листинга, для которого можно включить пагинацию.
list_categories Блок предназначен для отображения списка категорий с различными опциями сортировки и фильтрации. Является стандартным блоком листинга, для которого можно включить пагинацию.
list_categories_groups Блок предназначен для отображения списка групп категорий с различными опциями сортировки и фильтрации. Является стандартным блоком листинга, для которого можно включить пагинацию.
list_comments Блок предназначен для отображения списка комментариев по видео и (или) фотоальбомам с различными опциями сортировки и фильтрации. Является стандартным блоком листинга, для которого можно включить пагинацию.
list_content_sources Блок предназначен для отображения списка контент провайдеров с различными опциями сортировки и фильтрации. Является стандартным блоком листинга, для которого можно включить пагинацию.
list_content_sources_groups Блок предназначен для отображения списка групп контент провайдеров с различными опциями сортировки и фильтрации. Является стандартным блоком листинга, для которого можно включить пагинацию.
list_dvds Блок предназначен для отображения списка DVD с различными опциями сортировки и фильтрации. Является стандартным блоком листинга, для которого можно включить пагинацию.
list_members Блок предназначен для отображения списка пользователей с различными опциями сортировки и фильтрации. Является стандартным блоком листинга, для которого можно включить пагинацию.
list_members_blog Блок предназначен для отображения списка записей блога пользователя (стены сообщений) с различными опциями фильтрации. Является стандартным блоком листинга, для которого можно включить пагинацию.
list_members_events Блок предназначен для отображения списка событий с различными опциями фильтрации. Является стандартным блоком листинга, для которого можно включить пагинацию.
list_messages Блок предназначен для отображения списка сообщений внутренней почты. Позволяет вывести 3 статические папки сообщений (входящие, отправленные и непрочтенные), а также переписку с выбранным пользователем. Предоставляет возможность подтверждать / отклонять запросы на добавление в друзья. Является стандартным блоком листинга, для которого можно включить пагинацию.
list_models Блок предназначен для отображения списка моделей с различными опциями сортировки и фильтрации. Является стандартным блоком листинга, для которого можно включить пагинацию.
list_tags Блок предназначен для отображения списка тэгов с различными опциями сортировки и фильтрации. Является стандартным блоком листинга, для которого можно включить пагинацию.
list_videos Блок предназначен для отображения списка видео с различными опциями сортировки и фильтрации. Является стандартным блоком листинга, для которого можно включить пагинацию.
logon Блок отображает форму логина и позволяет зарегистрированным пользователям входить в личную зону.
member_profile_edit Блок предназначен для изменения личных данных профиля пользователя, пароля входа в личную зону, а также адреса электронной почты, на который зарегистрирован профиль.
member_profile_view Блок предназначен для отображения личных данных профиля пользователя, поддерживает опции управления дружескими отношениями с пользователем (отправка запроса на добавление в друзья, подтверждение / отклонение такого запроса, удаление из списка друзей), а также предоставляет возможность отправки сообщения пользователю по внутренней почте.
message_details Блок предназначен для отображения полного текста сообщения внутренней почты, а также для составления ответа на полученное сообщение.
model_comments Блок предназначен для отображения списка комментариев к заданной модели, предоставляет возможность добавить новый комментарий для залогиненных и анонимных пользователей. Является стандартным блоком листинга, для которого можно включить пагинацию.
model_view Блок предназначен для отображения информации о заданной модели.
pagination Блок отображает страницы для любого блока листинга, в котором включена поддержка пагинации (установлен параметр блока листинга var_from). Используется для совместимости со старыми версиями, а также предоставляет дополнительные возможности пагинации, по сравнению с пагинацией внутри блоков списка.
random_video Блок позволяет отобразить одно случайное видео и настроить методику выборки этого видео, например, одно из 10 наиболее посещаемых за сегодня, одно из 20 наиболее длительных и т.д.
signup Блок предназначен для регистрации новых пользователей, апгрейда уровня доступа для уже зарегистрированных пользователей, а также восстановления данных пароля для входа в личную зону. Данный блок поддерживает интеграцию с процессорами платного доступа по SMS и кредиткам.
tags_cloud Блок предназначен для отображения облака тэгов по видео и фотоальбомам, а также может отображать облако категорий по видео и фотоальбомам.
top_referers Блок предназначен для отображения рефереров (трейдеров) с заданными опциями. Позволяет также отобразить подходящее видео для каждого реферера (имитировать список видео).
video_comments Блок предназначен для отображения списка комментариев к заданному видео, предоставляет возможность добавить новый комментарий для залогиненных и анонимных пользователей. Является стандартным блоком листинга, для которого можно включить пагинацию.
video_edit Блок предназначен для загрузки пользователями новых видео, а также для редактирования своих уже созданных видео (изменение данных, скриншотов).
video_view Блок предназначен для отображения информации о заданном видео, предоставляет возможность добавить видео в личные закладки, поставить пользовательский рейтинг для видео и отправить письмо другу со ссылкой на заданное видео.

4. Реклама и Рекламные места (Advertising & Advertising locations)

4.1. Использование рекламных мест на сайте

Kernel Video Sharing предоставляет простой модуль управления рекламой, функциональности которого достаточно для большинства нужд.

Рекламные места являются контейнерами (или слотами) для рекламы на сайте. Они могут использоваться где угодно: в шаблонах страниц, компонентов и блоков. К каждому рекламному месту можно привязать любое кол-во рекламы, в таком случае реклама будет отображаться в случайном порядке.

Для включения рекламного места в шаблоне страницы, компонента или блока используется такая директива:

{{insert name="getAdv" place_id="%ADVERTISING_LOCATION_EXTERNAL_ID%"}}

В данном примере токен %ADVERTISING_LOCATION_EXTERNAL_ID% должен быть заменен на идентификатор (external ID) требуемого рекламного места, например top_banner:

{{insert name="getAdv" place_id="top_banner"}}

4.2. Работа с рекламой в панели администрирования

Список рекламных мест (Locations list) находится в разделе UI сайта (Website UI) панели администрирования. Список содержит следующие столбцы:

При добавлении / редактировании рекламные места поддерживают следующие поля:

Список рекламы (Advertisements list) находится в разделе UI сайта (Website UI) панели администрирования. Список содержит следующие столбцы:

При добавлении / редактировании реклама поддерживают следующие поля:

5. Страницы (Pages)

5.1. Общая информация о страницах

Страницы являются точками входа в движок Kernel Video Sharing и элементами построения сайта самого верхнего уровня. Страницы могут состоять из всех элементов, описанных выше: компонентов, блоков и рекламных мест.

Каждая страница имеет свой уникальный идентификатор, на основе которого создается php файл страницы и ее шаблон отображения. php файл страницы используется для указания ссылок на нее.

Вы можете создать страницу в любой момент, при этом она не будет использоваться до тех пор, пока вы не установите ссылку на нее в каком-либо месте сайта. Точно так же вы можете удалить страницу в любой момент, и, если на нее остались ссылки с других страниц, - ссылки перестанут работать.

Ссылки на страницу должны содержать все необходимые параметры для ее работы (этими параметрами на самом деле являются включенные var-параметры всех блоков данной страницы, как было описано выше. В большинстве случаев на демо сайте Kernel Video Sharing используются абстрактные ссылки, которые перекрываются через mod_rewrite, всвязи с чем многие необходимые странице параметры подставляются на основе частей URL-ов, например для ссылки на страницу просмотра видео /videos/my-uploaded-video/ применяется такое правило перенаправления:

RewriteRule ^videos/([^/]+)[/]* /view_video.php?dir=$1 [L,QSA]

Это правило говорит о том, что ссылка /videos/my-uploaded-video/ будет перенаправлена на страницу с идентификатором view_video (php файл страницы view_video.php), при этом в качестве параметра dir будет использоваться значение после videos/ без суффикса /, т.е. в нашем примере будет осуществлен такой вызов:

/view_video.php?dir=my-uploaded-video

Далее этот вызов подхватится движком, который вызовет все блоки на данной странице с параметром dir=my-uploaded-video. Блоки выведут всю необходимую информацию, базируясь на значении данного параметра (в приведенном примере блок video_view, который находится на данной странице, отобразит информацию о видео с директорией my-uploaded-video).

Аналогичным образом происходит обработка всех страниц сайта, которые созданы через панель администрирования.

Дополнительно к правилам mod_rewrite есть также две системные настройки, в которых нужно указать паттерны для ссылок на страницы просмотра видео и фотоальбомов. Эти паттерны используются в панели администрирования для создания ссылок на просмотр видео / фотоальбомов на сайте. Также эти паттерны используются некоторыми блоками сайта для автоматического открытия страницы видео или фотоальбома (при поиске, если результат только один). Эти настройки находятся на странице Системные настройки (System settings) в разделе Настройки (Settings) панели администрирования. Вы обязательно должны указать корректные значения!

5.2. Работа со страницами в панели администрирования

Файлы страниц хранятся в корне домена на сервере (php файл) и в папке /template (файл шаблона). Для создания страниц php должен иметь права на создание файлов в корне домена и в папке /template. Для редактирования страниц php должен иметь права на редактирование файла шаблона данной страницы в папке /template.

Список страниц (Pages list) является основным в разделе UI сайта (Website UI) панели администрирования. Список отображает иерархическую структуру страниц с блоками на них (строки, относящиеся к страницам выделены жирным). Список содержит следующие столбцы:

Список страниц позволяет также массово настроить кэширование страниц и блоков. Для сохранения кэширования следует использовать кнопку Сохранить кэширование (Save caching) внизу списка.

При добавлении / редактировании страницы поддерживают следующие поля:

Более подробная информация о кэшировании будет представлена ниже.

5.3. Краткий обзор существующих страниц

Все существующие на demo-сайте Kernel Video Sharing страницы можно разбить на три логические группы:

При создании новых страниц мы рекомендуем учитывать данные конвенции наименования.

6. Кэширование

Кэширование позволяет заметно снизить нагрузку на сервер при увеличении траффика на сайте. Движок Kernel Video Sharing поддерживает 2 уровня кэширования: стандартное кэширование на уровне шаблонов блоков и сверхбыстрое кэширование целых страниц в оперативной памяти.

Основным управляющим параметром кэширования является поле Время жизни кэша (Cache lifetime), которое используется как для блоков, так и для страниц. Чем больше время жизни кэша, тем меньше нагрузка на сервер, но в то же время меньше и актуальность информации. Страницы / блоки, которые обновляются не часто, могут быть закэшированы на более длительное время (например, список категорий). Страницы / блоки, которые должны обновляться регулярно - на меньшее время (например, индексная страница). Если вы хотите выключить кэширование для сраницы или блока, просто установите время жизни кэша в 0.

6.1. Кэширование первого уровня (кэширование блоков)

Кэширование первого уровня (кэширование блоков) является относительно медленным кэшированием. Этот вид кэширования можно использовать практически везде, где он поддерживается блоками. Как уже было замечено выше, некоторые блоки не поддерживают кэширование (в основном это блоки, которые содержат формы для заполнения, т.е. блок логина, блок загрузки видео и д.р.). Некоторые блоки не поддерживают кэширование при определенной конфигурации параметров, например, блок списка видео не позволяет кэширование при отображении результатов поиска, а также в некоторых других случаях. К счастью, даже при включенном кэшировании движок самостоятельно решит, что следует кэшировать, а что нет.

Для включения кэширования первого уровня вы можете установить время жизни кэша для каждого блока индивидуально. Вы можете сделать это в панели администрирования практически везде, где есть возможность редактирования блока. Лучше всего это сделать на Списке страниц (Pages list), где можно настроить кэширование для всего сайта глобально.

6.2. Кэширование второго уровня (кэширование страниц)

Кэширование второго уровня (кэширование страниц целиком) является исключительно быстрым видом кэширования. Закэшированные страницы помещаются в оперативную память и сбрасываются пользователю при запросе. Кэширование страниц зависит во многом от блоков, которые используются на данной странице. Если хотя бы один из блоков не поддерживает кэширование, то страница целиком также не сможет быть закэширована. В то же время любые другие блоки на этой странице, которые поддерживают кэширование, могут быть закэшированы, используя кэширование первого уровня.

Кэширование второго уровня дополнительно поддерживает опцию сжатия кэша, которая помогает сэкономить оперативную память, но в то же время уменьшает скорость работы кэша. Данную опцию следует использовать на страницах, количество экземпляров которых в кэше относительно большое (например, для страницы просмотра видео, поскольку в кэше хранится большое количество экземпляров страницы для каждого видео).

Для включения кэширования второго уровня вы можете установить время жизни кэша для каждой страницы индивидуально. Вы можете сделать это в панели администрирования на Списке страниц (Pages list), где можно настроить кэширование для всего сайта глобально.

6.3. Важные аспекты кэширования

Существует несколько важных аспектов кэширования, которые обязательно необходимо прочитать и понять, прежде чем работать с настройкой сайта.

Кэширование не включается для администратора (если он залогинен в панели администрирования). Это сделано для того, чтобы при работе с сайтом не возникало каких-либо задержек при начальной отладке. Финальное же тестирование сайта должно быть выполнено с учетом кэширования. Этого можно добиться, если тестировать сайт в другом браузере (не в том, в котором идет работа с панелью администрирования).

Кэширование не используется, если на страницу передан параметр mode со значение async. Данный параметр используется для асинхронных запросов в различных блоках сайта (например, отправка пользовательского рейтинга на видео, либо отображение captcha).

Кэширование ограничивает возможности кастомизации сайта (особенно кэширование второго уровня). Так, нельзя, чтобы отображение какого-либо контента зависело от параметров, которые передаются на страницу. Рассмотрим простейший пример: необходимо передать идентификатор вебмастера, который затем будет подставлен в ссылку на спонсора (учет партнерского траффика). Если данный идентификатор передается в параметре wm_id, то простой вариант, который может прийти в голову - это вывести ссылку на спонсора и в ней указать значение из параметра запроса:

<a href="http://sponsor.com?wm_id={{$smarty.request.wm_id}}">

Это не будет работать при включенном кэшировании, поскольку в течение времени жизни кэша данная ссылка будет содержать одно и то же значение параметра wm_id. Для поддержки подобных параметров следует использовать поля Динамические HTTP параметры (Dynamic HTTP parameters) на странице Системные настройки (System settings) в разделе Настройки (Settings) панели администрирования. В этих полях вы можете перечислить 3 HTTP параметра, которые будут учитываться независимо от кэширования. Кроме того, эти HTTP параметры будут также учитываться в ссылках на контент провайдеров и на рекламу.

Для использования этих параметров вам нужно вставить в шаблоне (URL-е контент провайдера, URL-е рекламы) токен вида %param_name%, т.е. для примера выше ссылка на спонсора должна выглядеть таким образом:

<a href="http://sponsor.com?wm_id=%wm_id%">

Это подразумевает, что вы указали параметр wm_id в одном из полей Динамические HTTP параметры (Dynamic HTTP parameters).

В случаях, когда блок не поддерживает кэширование, использование параметров запроса все-таки корректно. В качестве примера можно рассмотреть блок редактирования профиля пользователя, который отображает 3 различные формы в зависимости от значения HTTP параметра action, переданного на страницу. Поскольку данный блок не поддерживает кэширование и, соответственно, страница на которой он включается также не поддерживает кэширование - использование параметров запроса в данным контексте представляется возможным.

Таким образом, в большинстве случаев вы не можете безболезненно использовать переменные типа $smarty.request, $smarty.get, $smarty.post в шаблонах сайта. Вместо них следует использовать динамические HTTP параметры.

Во многих случаях вы также не можете показывать различный контент различным пользователям сайта, поскольку для всех пользователей используется один и тот же экземпляр кэша. Исключение на данный момент составляют блоки video_view, video_comments, album_view, album_comments и album_images. Эти блоки (а значит и страницы, где они используются) сохраняют разные версии кэша для разных пользователей.

При необходимости сбросить кэш первого или второго уровня вы можете воспользоваться опциями Сбросить файловый кэш (Reset file cache) и Сбросить MemCache (Reset MemCache) соответственно. Эти опции находятся в боковой панели раздела UI сайта (Website UI) панели администрирования. Сброс кэша приведет к большому скачку нагрузки при большом траффике, поэтому эту операцию стоит выполнять только в исключительных случаях (например, при срочной необходимости обновить все страницы сайта). Сначала следует сбросить файловый кэш (кэш блоков), а через некоторое время MemCache (кэш страниц).

Кэширование является одним из самых сложных аспектов движка Kernel Video Sharing. Вы можете не использовать его вообще, можете использовать только кэширование блоков первого уровня - в этом случае все ограничения, описанные выше, накладываются только на шаблоны блоков. В случае необходимости кастомизации сайта, которая может иметь проблемы с кэшированием, мы рекомендуем вам обращаться к нам за дополнительной информацией.

6.4. Статистика производительности

Статистика производительности позволяет оценить нагрузку на любую страницу или блок и понять, насколько корректно выбрана стратегия кэширования.

Для каждой страницы / блока на списке страниц выводятся 4 цифры:

Статистика производительности может быть сброшена в любой момент используя опцию Сбросить статистику производительности (Reset performance stats) в боковой панели раздела UI сайта (Website UI) панели администрирования.

7. Другие аспекты работы с сайтом

7.1. JavaScript файлы

Kernel Video Sharing использует несколько JavaScript файлов для работы сайта. Эти скрипты находятся в папке /js в корне домена. Некоторые блоки используют функции данных JavaScript файлов, поэтому требуют их включения на странице. JavaScript файлы, которые требуются блоками на какой-либо странице будут подключены автоматически. За вывод отвечает такая строка в шаблоне header_general.tpl:

{{$js_includes|smarty:nodefaults}}

Все JavaScript файлы подключаются ссылками, в которых указана текущая версия софта и которые используют расширение jsx, вместо js. Это нужно для того, чтобы при обновлении на новую версию софта у всех пользователей не осталось закэшированных браузеров JavaScript файлов (т.к. поменяются все ссылки на них). Вот пример одной из ссылок:

http://your_domain.com/js/KernelTeamVideoSharingSystem_2.0.0.jsx

Среди всех JavaScript файлов есть системные, которые добавляются независимо от блоков: KernelTeamVideoSharingSystem.js (добавляется всегда) и KernelTeamVideoSharingMembers.js (добавляется только для залогиненных пользователей).

По умолчанию все списки видео настроены на ротацию скриншотов видео формата 240x180. JavaScript с кодом ротатора подключается в шапке и доступен на каждой странице. Если вы используете только 1 скриншот для видео, либо вам не нужна ротация скриншотов, мы рекомендуем удалить включение скрипта ротатора в шаблоне шапки. Подключение ротатора задается таким образом:

<script type="text/javascript" src="{{$config.project_url}}/js/KernelTeamImageRotator_{{$config.project_version}}.jsx"></script>
<script type="text/javascript">
    KT_rotationEngineStartup(0.2, 0.5);
</script>

Второй параметр при вызове функции KT_rotationEngineStartup устанавливает длительность показа одного скриншота в секундах до переключения на следующий. Первый параметр игнорируется.

Сама ротация скриншотов запускается при наведении (останавливается при выходе) мышки на изображение скриншота:

// второй параметр - путь к папке, где лежат скриншоты
// третий параметр - кол-во скриншотов
onmouseover="KT_rotationStart(this, '{{$config.content_url_videos_screenshots}}/{{$item.screen_url}}/240x180/', {{$item.screen_amount}})"

onmouseout="KT_rotationStop(this)"

Если вам необходима ротация скриншотов других форматов, в обработчие события наведения мышки нужно заменить размер 240x180 на другой нужный.

Данная таблица перечисляет все JavaScript файлы, которые поставляются по умолчанию (все они находятся в папке /js в корне домена). Часть из них доступна только для владельцев полной версии.

Имя файла Описание
KernelTeamImageRotator.js Ротатор скриншотов. Подключается в шаблоне шапки сайта и может использоваться на всех страницах.
KernelTeamVideoSharingAlbumEdit.js Скрипт для проверки и поддержки формы создания / редактирования фотоальбомов.
KernelTeamVideoSharingAlbumView.js Скрипт для проверки и поддержки различных форм, которые используются в блоках фотоальбомов: рейтинг фотоальбомов, добавление в избранное, отправка комментария и др.
KernelTeamVideoSharingCSView.js Скрипт для проверки и поддержки различных форм, которые используются в блоках контент провайдеров: рейтинг контент провайдеров, отправка комментария и др.
KernelTeamVideoSharingDVDView.js Скрипт для проверки и поддержки различных форм, которые используются в блоках DVD: рейтинг DVD, отправка комментария и др.
KernelTeamVideoSharingForms.js Скрипт для проверки и поддержки различных форм, которые используются во внешних блоках сайта: формы логина, регистрации, приглашения друзей и др.
KernelTeamVideoSharingMembers.js Скрипт для проверки и поддержки различных форм, которые связаны с пользовательской активностью на сайте: редактирование профиля, управление закладками, внутренняя почта и др.
KernelTeamVideoSharingModelView.js Скрипт для проверки и поддержки различных форм, которые используются в блоках моделей: рейтинг моделей, отправка комментария и др.
KernelTeamVideoSharingSystem.js Системный скрипт, который подключается на любой странице.
KernelTeamVideoSharingVideoEdit.js Скрипт для проверки и поддержки формы загрузки / редактирования видео.
KernelTeamVideoSharingVideoView.js Скрипт для проверки и поддержки различных форм, которые используются в блоках видео: рейтинг видео, добавление в избранное, отправка комментария и др.

7.2. Системные email сообщения

Некоторые блоки сайта имеют функционал для отправки email сообщений различного содержания (например, отправка ссылки на сайт другу и др.). Текстовки и заголовки этих сообщений находятся в папке emails для каждого блока, который поддерживает отправку email сообщений. При необходимости эти файлы могут быть изменены вручную:

Название блока Путь к email файлам Описание
album_view /blocks/album_view/emails Блок поддерживает отправку другу ссылки на страницу с текущим фотоальбомом по email. Поддерживаются следующие токены:
- {{$message}} - сообщение, которое пользователь ввел при отправке ссылки.
- {{$link}} - ссылка на текущую страницу с фотоальбомом.
- {{$project_name}} - название сайта, которое указывается при установке в файле setup.php.
- {{$support_email}} - email адрес, который указывается при установке в файле setup.php и который будет указываться в поле From.
- {{$project_licence_domain}} - домен сайта, который указывается при установке в файле setup.php.
invite_friend /blocks/invite_friend/emails Блок поддерживает отправку другу ссылки на данный сайт. Поддерживаются следующие токены:
- {{$message}} - сообщение, которое пользователь ввел при отправке ссылки.
- {{$project_name}} - название сайта, которое указывается при установке в файле setup.php.
- {{$support_email}} - email адрес, который указывается при установке в файле setup.php и который будет указываться в поле From.
- {{$project_licence_domain}} - домен сайта, который указывается при установке в файле setup.php.
logon /blocks/logon/emails Блок поддерживает отправку сообщений в случае временной блокировки пользователей. Поддерживаются следующие токены:
- {{$link}} - ссылка для разблокировки.
- {{$email}} - email адрес пользователя.
- {{$username}} - имя пользователя (логин).
- {{$pass}} - пароль пользователя.
- {{$project_name}} - название сайта, которое указывается при установке в файле setup.php.
- {{$support_email}} - email адрес, который указывается при установке в файле setup.php и который будет указываться в поле From.
- {{$project_licence_domain}} - домен сайта, который указывается при установке в файле setup.php.
member_profile_edit /blocks/member_profile_edit/emails Блок поддерживает отправку пользователю email сообщения для подтверждения смены email адреса. Поддерживаются следующие токены:
- {{$link}} - ссылка для подтверждения смены email адреса.
- {{$email}} - новый email адрес пользователя.
- {{$username}} - имя данного пользователя (логин).
- {{$project_name}} - название сайта, которое указывается при установке в файле setup.php.
- {{$support_email}} - email адрес, который указывается при установке в файле setup.php и который будет указываться в поле From.
- {{$project_licence_domain}} - домен сайта, который указывается при установке в файле setup.php.
signup /blocks/signup/emails Блок поддерживает отправку пользователю email сообщения для подтверждения регистрации, а также после восстановления пароля. Поддерживаются следующие токены:
- {{$link}} - ссылка для подтверждения регистрации / сброса пароля.
- {{$email}} - email адрес пользователя.
- {{$username}} - имя данного пользователя (логин).
- {{$pass}} - пароль пользователя при регистрации или новый (сгенерированный) пароль для пользователя в случае сброса пароля.
- {{$project_name}} - название сайта, которое указывается при установке в файле setup.php.
- {{$support_email}} - email адрес, который указывается при установке в файле setup.php и который будет указываться в поле From.
- {{$project_licence_domain}} - домен сайта, который указывается при установке в файле setup.php.
video_view /blocks/video_view/emails Блок поддерживает отправку другу ссылки на страницу с текущим видео по email. Поддерживаются следующие токены:
- {{$message}} - сообщение, которое пользователь ввел при отправке ссылки.
- {{$link}} - ссылка на текущую страницу с видео.
- {{$project_name}} - название сайта, которое указывается при установке в файле setup.php.
- {{$support_email}} - email адрес, который указывается при установке в файле setup.php и который будет указываться в поле From.
- {{$project_licence_domain}} - домен сайта, который указывается при установке в файле setup.php.

7.3. Таблицы стилей CSS

Демо-сайт Kernel Video Sharing содержит все стили в файле main.css, который назходится в папке /styles в корне домена. Структура данного файла очень проста:

7.4. Информация в сессии пользователя

Ниже приведен список полей сессии залогиненного пользователя, которые доступны в шаблонах сайта:

Имя переменной Описание
$smarty.session.user_id Идентификатор пользователя. Если установлен - то пользователь залогинен. Если не установлен, то все остальные параметры сессии будут пустыми.
$smarty.session.display_name Ник пользователя.
$smarty.session.unread_messages Количество непрочитанных сообщений внутренней почты. По умолчанию эта переменная никогда не устанавливается (поскольку ее вычисление приводит к потере производительности). Если вы хотите использовать это значение у себя на сайте, вы должны активировать (раскомментировать) код обновления данной переменной, который находится в файле /admin/include/pre_process_page_code.php.
$smarty.session.avatar Аватар пользователя. Это путь относительно папки $config.content_url_avatars.
$smarty.session.status_id Статус пользователя (2 - активный, 3 - премиум, 6 - вебмастер). Если вы используете платный доступ, то вам желательно включить опцию синхронизации статуса пользователей, которая находится в системных настройках. Эта опция необходима, чтобы у пользователя пропал доступ (по сути - поменялся статус в сессии), когда время доступа истекло.
$smarty.session.paid_access_hours_left Эта переменная может использоваться только при включенной опции синхронизации статуса пользователей в системных настройках. Она выставляется только для премиум пользователей и показывает сколько полных часов осталось до окончания действия их привилегированного статуса.
$smarty.session.paid_access_is_unlimited Эта переменная может использоваться только при включенной опции синхронизации статуса пользователей в системных настройках. Она выставляется только для премиум пользователей и показывает, является ли действие их привилегированного статуса временным (=0), или безлимитным (=1).
$smarty.session.external_package_id Эта переменная может использоваться только при включенной опции синхронизации статуса пользователей в системных настройках. Она выставляется только для премиум пользователей и содержит внешний идентификатор выбранного пакета доступа. Вы можете использовать ее в шаблонах, если хотите отобразить разную информацию для пользователей, купивших разные пакеты.

7.5. Подключение кастомного функционала к движку

При необходимости подключить кастомный функционал к движку обработки сайта вы можете редактировать два PHP файла, которые вызываются в начале и конце цикла обработки страницы:

Путь к файлу Описание
/admin/include/pre_process_page_code.php Вызывается непосредственно перед началом обработки страницы. Вызов не зависит от того, кэшируется ли страница или нет. Может использоваться для подключения сторонних скриптов.
/admin/include/post_process_page_code.php Вызывается непосредственно после того как страница обработана и ее контент отправлен клиенту. Вызов не зависит от того, кэшируется ли страница или нет. Может использоваться для подключения сторонних скриптов.

Важно! Данные файлы не вызываются при запросах на отображение XML страниц.