DevCraft Документации
Руководства

Подключение в теме v200.1.0

Вставки UserLists на новости и страницы списков; стили через оболочку сайта.

Оболочка сайта

Стили и скрипт кнопки не подключают через {include} и не кладут в templates/{skin}/devcraft/user_lists/. Они объявлены в siteAssets манифеста:

ModuleSiteAssetsBuilder::create()
	->css('user_lists.css')
	->js(
		'user_lists_public.js',
		dependsOn: ['devcraft/src/templates/core/assets/js/dc_public.js'],
		available: ['main', 'showfull', 'lastnews', 'tags', 'allnews'],
	)

Скрипт ждёт публичный клиент Admin (dc_public.js) и выводится на главной, полной новости, последних, тегах и ленте всех новостей. Стили — на всех разделах. Эти поля пишутся в таблицу только при первом появлении файла; дальше список правит админка.

В main.tpl должны быть теги {devcraft-header} в <head> и {devcraft-scripts} перед </body>. Подробнее: Публичные ресурсы оболочки.

Старые вставки focus=css и focus=js ничего не выводят (чтобы не дублировать файлы).

Новость: кнопка и панель

В shortstory.tpl, fullstory.tpl или свой шаблон (путь от корня сайта; относительные ../ DataLife Engine вырезает):

{include file="devcraft/src/modules/UserLists/Controller/show_user_lists.php?news_id={news-id}&focus=button"}

Этот include выводит кнопку «В списки» и выпадающую панель выбора списка рядом с ней.

{include file="devcraft/src/modules/UserLists/Controller/show_user_lists.php?news_id={news-id}&focus=button"}

Если панель нужна в другом месте шаблона, используйте отдельный include, который выводит только панель. Кнопка при этом должна быть от focus=button:

{include file="devcraft/src/modules/UserLists/Controller/show_user_lists.php?news_id={news-id}&focus=modal"}
focusРезультат
buttonКнопка «в списки» + выпадающая панель
modalТолько выпадающая панель (без кнопки)
css / jsПусто (файлы через оболочку)

Текст кнопки берётся из настроек модуля (button_label). Без {news-id} кнопка и панель не рисуются. Гостю блок не показывается.

Панель содержит две секции:

  • Основные списки — общие списки администратора.
  • Мои списки — личные списки текущего пользователя.

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

Разметка: templates/{skin}/devcraft/user_lists/button.tpl и modal.tpl. Нет каталога в своей теме — скопируйте из Default.

Страницы списков

{include file="devcraft/src/modules/UserLists/Controller/show_user_lists_page.php?focus=mine"}
{include file="devcraft/src/modules/UserLists/Controller/show_user_lists_page.php?focus=catalog"}
{include file="devcraft/src/modules/UserLists/Controller/show_user_lists_page.php?focus=view&list_id=1"}
{include file="devcraft/src/modules/UserLists/Controller/show_user_lists_page.php?focus=proposals"}
focusЧто показывает
mineСписки текущего пользователя
catalogОткрытые списки (гости — только если включено в настройках)
viewСодержимое списка; нужен list_id
proposalsОчередь предложений владельцу

Шаблоны: page.tpl, view.tpl, proposals.tpl.

Запросы

Все запросы идут в devcraft/ajax.php (mod=user_lists). Отдельный engine/ajax/user_lists.php не создаём.

Типичная ошибка

В теме ещё стоит engine/modules/devcraft/user_lists.php — этих файлов в пакете больше нет. Замените путь на Controller/show_user_lists.php.

На этой странице