Ajax переключатель шаблонов кратких новостей.
DLE: 14>
- Использует Cookie для хранения префикса шаблона.
- Использует отдельные tpl шаблоны.
- Ajax метод переключения.
Для полноценного использования требуются некоторые знания и понимание. Так как переключение шаблонов происходит посредством технологии Ajax то все бинды и события навешанные в момент открытия страницы будут сброшены и их потребуется инициализировать повторно. Всё это делается в JS коде описанном в блоке Дополнительной информации
ниже.
Еще могут возникнуть проблемы с различными модулями и плагинами которые применяли какие-то операции и функции вне файла show.short.php
. Если таковые будут то разработкик этого плагина должен будет внести соответствующие правки в файл change_template.php
.
- Установите
xml
плагин. - Создайте копии шаблона
shortstory.tpl
затем присвойте каждой копии имя в качестве суффикса shortstory_suffix.tpl. - Перечисление суффиксов шаблонов делается в переменной $template в виде ($suffix_template => text\icon). Переменная находится в первой правке файла functions.php в классе templateSwitcher. По умолчанию установлено два варианта один по умолчанию второй компактный стиль.
В качестве ключа указывается суффикс шаблона, а значением является название или html код с иконкой. Разделяются запятыми (Подробней о PHP:Array)
Если в шаблоне оставить одно значение то переключатель не отображается. Так же функции становятся неактивными.
- В
main.tpl
или других шаблонах тегом {switcherButton} выводится переключатель. {templates-class} выводит суффикс шаблона для дополнительной вариативности стилей.
- Если нужно изменить HTML разметку, это делается в изменениях над файлов
engine/modules/functions.php
. В функцииshow_button
классаtemplateSwitcher
. - В файле
engine/ajax/change_template.php
есть переменная $custom_navigation в состоянииtrue
пагинация добавляется в отдельном ключе ответа json от сервера если она размещалась при помощи тега{newsnavigation}
. В JS ниже нужно указать место для пагинации. - В переменной
$change_tpl_mod
перечислены разделы в которых будет разрешено менять шаблон. Поумолчанию установлено 3 раздела где задействован файлshort.story.php
. Если у Вас есть модули с другими разделами которые так же используют данный файл для формирования кратких новостей то добавьте название раздела в переменную, и в том модуле будет так же менятся шаблоны при условии, что условный модуль не переназначает имя подключаемогоshortstory.tpl
. Однако многие как раз это делают. engine/ajax/change_template.php
Файл обработчик ответов. В этом файле формируются ответы шаблона, если есть какие-то модули которые добавляли кастомные теги и функции вне файлаshort.story.php
то аналогичные правки нужно делать и в обработчике.- Для изменения JavaScript кода переключателя делается в правках файла
engine/modules/main.php
. В коде представленом ниже. В этом коде так же производится повторная инициализация js скриптов.
JavaScript code
$onload_scripts[] = <<<HTML
$(".template-switcher a[data-template]").click(function(){
if( $(this).hasClass('current') ) return false;
$(this).addClass('current').siblings().removeClass('current');
let new_templ = $(this).data('template');
let content_block = $('#content').find('.left-content > div').eq(0);
setcookie('short_template', new_templ);
ShowLoading();
$.post(dle_root + "engine/ajax/controller.php?mod=change_template", {user_hash: dle_login_hash}, function(response) {
if( response.success ) {
content_block.html(response.returnbox);
content_block.append(response.navigation);
//This place re-initialization javascript plugins
} else {
DLEAlert('Ошибка', 'Так-вот');
}
HideLoading();
}, 'json');
return false;
});
HTML;
let content_block = $('#content').find('.left-content > div').eq(0); Если объяснить коротко, то код ищет объект с конкретным атрибутом
id="content"
если есть то в нём же пытается найти дочерние объекты с атрибутомclass="left-content"
в котором находитсяdiv
. В него то и будет помещена разметка из шаблонов кратких новостей которая содержится в переменной data.
Строкой ниже определяется куда добавлять разметку пагинации. Если переменная
$custom_navigation
установлена в true. Если в false то строку стоитзакомментировать
.
Функция
append
добавляет в самый конец.
Подробней о выборке элементов
ЮMoney: 4100115063692304
Qiwi nickname: TERAMOUNE