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 видео и обязательно премиум и т.д.) и при необходимости шаблоны блоков для данной страницы (логику отображения данных). Это будет детально рассмотрено в следующих разделах.
Компоненты страниц представляют собой используемые во многих местах элементы и компоненты верстки сайта. Поскольку страниц сайта может быть очень много и большинство из них будет иметь схожие элементы дизайна (например, шапка, блок поиска, и др.), то для простоты и удобства использования такие элементы дизайна рекомендуется выносить в компоненты страниц, которые затем использовать в нужных местах.
Компоненты страниц могут использоваться в любых местах, где ожидается шаблон 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"}}
....
Файлы компонентов страниц хранятся в папке /template на сервере. Для создания компонентов php должен иметь права на создание файлов в данной папке. Для редактирования какого либо компонента php должен иметь права на редактирование файла шаблона данного компонента.
Список компонентов (Page components list) находится в разделе UI сайта (Website UI) панели администрирования. Список содержит следующие столбцы:
При добавлении / редактировании компоненты страниц поддерживают следующие поля:
Во время работы с содержимым страниц и блоков вы можете включать даже несуществующие компоненты страниц (через директиву Smarty {{include ...}}). В этом случае необходимый компонент будет создан автоматически с пустым шаблоном. Все что вам нужно будет сделать - это просто задать для него шаблон позже.
Данная таблица содержит краткое описание и предназначение компонентов страниц, которые используются на 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. |
Блоки являются основными логическими модулями страниц. В отличие от компонентов страниц блоки предоставляют логику выборки / сохранения данных, а также большой спектр параметров конфигурации данной логики. Функциональность движка позволяет в любой момент времени изменить логику работы сайта путем изменения значений параметров блоков, а также добавления новых блоков на страницы и написания своих собственных блоков.
Список всех блоков и полную информацию о них с примерами использования можно посмотреть на странице Список блоков (Page blocks list) в разделе UI сайта (Website UI) панели администрирования. Список содержит следующие столбцы:
При открытии подробных данных о блоке можно получить информацию по использованию блока, список и описание всех параметров блока, а также различные примеры конфигурации блока.
Блоки могут быть условно классифицированы по нескольким признакам. Например, по типу отображаемого контента блоки можно разделить на:
По уровню доступа блоки условно могут быть разделены на следующие группы:
Большинство блоков использует глобальное хранилище данных на странице для сохранения туда некоторых результатов своей работы, чтобы они могли быть использованы на странице (снаружи блока). В шаблоне каждой страницы доступна глобальная переменная storage, которая может использоваться для доступа к результатам блока (например, блок video_view помещает в глобальное хранилище некоторую информацию о видео, которое он отображает, например, название, описание, тэги и др.
Для включение блока на странице необходимо использовать следующий синтаксис в коде шаблона страницы:
{{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) - восстановить детали удаленного блока будет невозможно. В случае необходимости восстановления вам придется заново создать и настроить блок на странице.
Параметры конфигурации блока определяют его поведение на странице. Большинство блоков поддерживают большое кол-во параметров конфигурации (кроме разве что самых простых блоков). Шаблон блока предназначен для отображения данных, подготовленных блоком, либо наоборот, подготавливает данные для бизнес логики блока (это скорее относится к блокам, которые отображают различные формы для заполнения). Важно понимать, что разные блоки на странице (даже блоки одного типа) могут иметь координально разные параметры и шаблоны. Таким образом, параметры блока и его шаблон определяют логику поведения и отображения конкретного блока на конкретной странице.
При включении блока на странице он инициалируется параметрами и шаблоном, которые настроены по умолчанию. В подавляющем большинстве случаев это не то, что нужно, поэтому для изменения параметров блока и его шаблона следует зайти на страницу редактирования выбранного блока на выбранной странице. Сделать это можно либо с общего списка 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).
Почти половина существующих в 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 изменения в концепцию пагинации описанную выше:
Данная таблица содержит краткое описание и предназначение существующих блоков. Часть блоков доступна только для владельцев полной версии. Более подробную информацию об установленных блоках можно получить на странице Список блоков (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 | Блок предназначен для отображения информации о заданном видео, предоставляет возможность добавить видео в личные закладки, поставить пользовательский рейтинг для видео и отправить письмо другу со ссылкой на заданное видео. |
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"}}
Список рекламных мест (Locations list) находится в разделе UI сайта (Website UI) панели администрирования. Список содержит следующие столбцы:
При добавлении / редактировании рекламные места поддерживают следующие поля:
Список рекламы (Advertisements list) находится в разделе UI сайта (Website UI) панели администрирования. Список содержит следующие столбцы:
При добавлении / редактировании реклама поддерживают следующие поля:
Страницы являются точками входа в движок 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) панели администрирования. Вы обязательно должны указать корректные значения!
Файлы страниц хранятся в корне домена на сервере (php файл) и в папке /template (файл шаблона). Для создания страниц php должен иметь права на создание файлов в корне домена и в папке /template. Для редактирования страниц php должен иметь права на редактирование файла шаблона данной страницы в папке /template.
Список страниц (Pages list) является основным в разделе UI сайта (Website UI) панели администрирования. Список отображает иерархическую структуру страниц с блоками на них (строки, относящиеся к страницам выделены жирным). Список содержит следующие столбцы:
Список страниц позволяет также массово настроить кэширование страниц и блоков. Для сохранения кэширования следует использовать кнопку Сохранить кэширование (Save caching) внизу списка.
При добавлении / редактировании страницы поддерживают следующие поля:
Более подробная информация о кэшировании будет представлена ниже.
Все существующие на demo-сайте Kernel Video Sharing страницы можно разбить на три логические группы:
При создании новых страниц мы рекомендуем учитывать данные конвенции наименования.
Кэширование позволяет заметно снизить нагрузку на сервер при увеличении траффика на сайте. Движок Kernel Video Sharing поддерживает 2 уровня кэширования: стандартное кэширование на уровне шаблонов блоков и сверхбыстрое кэширование целых страниц в оперативной памяти.
Основным управляющим параметром кэширования является поле Время жизни кэша (Cache lifetime), которое используется как для блоков, так и для страниц. Чем больше время жизни кэша, тем меньше нагрузка на сервер, но в то же время меньше и актуальность информации. Страницы / блоки, которые обновляются не часто, могут быть закэшированы на более длительное время (например, список категорий). Страницы / блоки, которые должны обновляться регулярно - на меньшее время (например, индексная страница). Если вы хотите выключить кэширование для сраницы или блока, просто установите время жизни кэша в 0.
Кэширование первого уровня (кэширование блоков) является относительно медленным кэшированием. Этот вид кэширования можно использовать практически везде, где он поддерживается блоками. Как уже было замечено выше, некоторые блоки не поддерживают кэширование (в основном это блоки, которые содержат формы для заполнения, т.е. блок логина, блок загрузки видео и д.р.). Некоторые блоки не поддерживают кэширование при определенной конфигурации параметров, например, блок списка видео не позволяет кэширование при отображении результатов поиска, а также в некоторых других случаях. К счастью, даже при включенном кэшировании движок самостоятельно решит, что следует кэшировать, а что нет.
Для включения кэширования первого уровня вы можете установить время жизни кэша для каждого блока индивидуально. Вы можете сделать это в панели администрирования практически везде, где есть возможность редактирования блока. Лучше всего это сделать на Списке страниц (Pages list), где можно настроить кэширование для всего сайта глобально.
Кэширование второго уровня (кэширование страниц целиком) является исключительно быстрым видом кэширования. Закэшированные страницы помещаются в оперативную память и сбрасываются пользователю при запросе. Кэширование страниц зависит во многом от блоков, которые используются на данной странице. Если хотя бы один из блоков не поддерживает кэширование, то страница целиком также не сможет быть закэширована. В то же время любые другие блоки на этой странице, которые поддерживают кэширование, могут быть закэшированы, используя кэширование первого уровня.
Кэширование второго уровня дополнительно поддерживает опцию сжатия кэша, которая помогает сэкономить оперативную память, но в то же время уменьшает скорость работы кэша. Данную опцию следует использовать на страницах, количество экземпляров которых в кэше относительно большое (например, для страницы просмотра видео, поскольку в кэше хранится большое количество экземпляров страницы для каждого видео).
Для включения кэширования второго уровня вы можете установить время жизни кэша для каждой страницы индивидуально. Вы можете сделать это в панели администрирования на Списке страниц (Pages list), где можно настроить кэширование для всего сайта глобально.
Существует несколько важных аспектов кэширования, которые обязательно необходимо прочитать и понять, прежде чем работать с настройкой сайта.
Кэширование не включается для администратора (если он залогинен в панели администрирования). Это сделано для того, чтобы при работе с сайтом не возникало каких-либо задержек при начальной отладке. Финальное же тестирование сайта должно быть выполнено с учетом кэширования. Этого можно добиться, если тестировать сайт в другом браузере (не в том, в котором идет работа с панелью администрирования).
Кэширование не используется, если на страницу передан параметр 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. Вы можете не использовать его вообще, можете использовать только кэширование блоков первого уровня - в этом случае все ограничения, описанные выше, накладываются только на шаблоны блоков. В случае необходимости кастомизации сайта, которая может иметь проблемы с кэшированием, мы рекомендуем вам обращаться к нам за дополнительной информацией.
Статистика производительности позволяет оценить нагрузку на любую страницу или блок и понять, насколько корректно выбрана стратегия кэширования.
Для каждой страницы / блока на списке страниц выводятся 4 цифры:
Статистика производительности может быть сброшена в любой момент используя опцию Сбросить статистику производительности (Reset performance stats) в боковой панели раздела UI сайта (Website UI) панели администрирования.
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 | Скрипт для проверки и поддержки различных форм, которые используются в блоках видео: рейтинг видео, добавление в избранное, отправка комментария и др. |
Некоторые блоки сайта имеют функционал для отправки 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. |
Демо-сайт Kernel Video Sharing содержит все стили в файле main.css, который назходится в папке /styles в корне домена. Структура данного файла очень проста:
Ниже приведен список полей сессии залогиненного пользователя, которые доступны в шаблонах сайта:
| Имя переменной | Описание |
| $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 | Эта переменная может использоваться только при включенной опции синхронизации статуса пользователей в системных настройках. Она выставляется только для премиум пользователей и содержит внешний идентификатор выбранного пакета доступа. Вы можете использовать ее в шаблонах, если хотите отобразить разную информацию для пользователей, купивших разные пакеты. |
При необходимости подключить кастомный функционал к движку обработки сайта вы можете редактировать два PHP файла, которые вызываются в начале и конце цикла обработки страницы:
| Путь к файлу | Описание |
| /admin/include/pre_process_page_code.php | Вызывается непосредственно перед началом обработки страницы. Вызов не зависит от того, кэшируется ли страница или нет. Может использоваться для подключения сторонних скриптов. |
| /admin/include/post_process_page_code.php | Вызывается непосредственно после того как страница обработана и ее контент отправлен клиенту. Вызов не зависит от того, кэшируется ли страница или нет. Может использоваться для подключения сторонних скриптов. |
Важно! Данные файлы не вызываются при запросах на отображение XML страниц.