Shortstory template switch : переключатель шаблонов кратких новостей

Shortstory template switch : переключатель шаблонов кратких новостей

Ajax переключатель шаблонов кратких новостей. Шаблоны могут иметь собственные уникальные html разметки, вы ограничены лишь своей фантазией и навыками владения языка html. Модуль предназначен для людей которые более-менее что-то в этом понимают. Так как переключение шаблонов происходит посредством технологии Ajax то все бинды и события навешанные в момент открытия страницы будут сброшены и их потребуется инициализировать повторно. Всё это делается в JS коде описанном в блоке Дополнительной информации ниже.


Еще могут возникнуть проблемы с различными модулями и плагинами которые применяли какие-то операции и функции вне файла show.short.php. Если таковые будут, то разработчик этого плагина должен будет внести соответствующие правки в файл change_template.php.

Возможности:
  • Использует Cookie для хранения префикса шаблона.
  • Использует отдельные tpl шаблоны.
  • Ajax метод переключения.

Установка:
  1. Установить xml плагин.
  2. Создать копии шаблона shortstory.tpl и затем присвоить каждой копии имя в качестве суффикса shortstory_suffix.tpl.
  3. Перечисление суффиксов шаблонов делается в переменной $template в виде ($suffix_template => text\icon). Переменная находится в первой правке файла functions.php в классе templateSwitcher. По умолчанию установлено два варианта: один по умолчанию, второй компактный стиль.
    В качестве ключа указывается суффикс шаблона, а значением является название или html код с иконкой. Разделяются запятыми (Подробней о PHP:Array)

    Если в шаблоне оставить одно значение, то переключатель не отображается. Так же функции становятся неактивными.

  4. В main.tpl или других шаблонах тегом {switcherButton} выводится переключатель. {templates-class} выводит суффикс шаблона для дополнительной вариативности стилей.

Готово!

Дополнительная информация:
  1. Если нужно изменить HTML разметку, это делается в изменениях над файлов engine/modules/functions.php. В функции show_button класса templateSwitcher.
  2. В файле engine/ajax/change_template.php есть переменная $custom_navigation в состоянии true пагинация добавляется в отдельном ключе ответа json от сервера если она размещалась при помощи тега {newsnavigation}. В JS ниже нужно указать место для пагинации.
  3. В переменной $change_tpl_mod перечислены разделы в которых будет разрешено менять шаблон. По умолчанию установлено 3 раздела где задействован файл short.story.php. Если у Вас есть модули с другими разделами которые так же используют данный файл для формирования кратких новостей то добавьте название раздела в переменную, и в том модуле будет так же меняться шаблоны при условии, что условный модуль не переназначает имя подключаемого shortstory.tpl. Однако многие как раз это делают.
  4. engine/ajax/change_template.php - файл обработчик ответов. В этом файле формируются ответы шаблона, если есть какие-то модули которые добавляли кастомные теги и функции вне файла short.story.php то аналогичные правки нужно делать и в обработчике.
  5. Для изменения jаvascript кода переключателя делается в правках файла engine/modules/main.php. В коде представленном ниже. В этом коде так же производится повторная инициализация js скриптов.
    $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 добавляет в самый конец.

Подробней о выборке элементов.

shortstory-template-switch-perekljuchatel-shablonov-kratkih-novostej.zip
Создайте аккаунт или авторизуйтесь для скачивания
 
Версия DLE: 14.x
Автор: TeraMoune
Информация
Посетители, находящиеся в группе Гость, не могут оставлять комментарии к данной публикации.