AlexRUSA
Участник
- Регистрация
- 5 Фев 2022
- Сообщения
- 146
- Реакции
- 409
Ajax переключатель шаблонов кратких новостей. Шаблоны могут иметь собственные уникальные html разметки, вы ограничены лишь своей фантазией и навыками владения языка html. Модуль предназначен для людей которые более-менее что-то в этом понимают. Так как переключение шаблонов происходит посредством технологии Ajax то все бинды и события навешанные в момент открытия страницы будут сброшены и их потребуется инициализировать повторно. Всё это делается в JS коде описанном в блоке Дополнительной информации ниже.
Еще могут возникнуть проблемы с различными модулями и плагинами которые применяли какие-то операции и функции вне файла show.short.php. Если таковые будут, то разработчик этого плагина должен будет внести соответствующие правки в файл change_template.php.
Возможности:
Установка:
Готово!
Дополнительная информация:
• Версия DLE: 14.x
• Автор: TeraMoune
Еще могут возникнуть проблемы с различными модулями и плагинами которые применяли какие-то операции и функции вне файла show.short.php. Если таковые будут, то разработчик этого плагина должен будет внести соответствующие правки в файл change_template.php.
Возможности:
- Использует Cookie для хранения префикса шаблона.
- Использует отдельные tpl шаблоны.
- Ajax метод переключения.
Установка:
- Установить 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 то аналогичные правки нужно делать и в обработчике.
- Для изменения jаvascript кода переключателя делается в правках файла engine/modules/main.php. В коде представленном ниже. В этом коде так же производится повторная инициализация js скриптов.
-
JavaScript:
$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 добавляет в самый конец.
Для просмотра скрытого содержимого вы должны войти или зарегистрироваться.
• Версия DLE: 14.x
• Автор: TeraMoune