PrestaShop, смена default состояния списка фильтрации с развернутого на свернутый

PrestaShop 1.5.6
При переходе в каталог с товарами, стандартное поведение - отображение фильтров по свойствам в развернутом состоянии. Как изменить данное поведение на обратное?
Место обработки клика и расположения кнопки(символа) нашел:

https://github.com/PrestaShop/PrestaShop/tree/development/modules/blocklayered

Файл blocklayered.js:

function openCloseFilter()
{
	$('#layered_form span.layered_close a').live('click', function(e)
	{
		if ($(this).html() == '<')
		{
			$('#'+$(this).attr('rel')).show();
			$(this).html('v');
			$(this).parent().removeClass('closed');
		}
		else
		{
			$('#'+$(this).attr('rel')).hide();
			$(this).html('<');
			$(this).parent().addClass('closed');
		}
		
		e.preventDefault();
	});
}


В файле blocklayered.tpl сама форма (к примеру в 88 строке.)

  • Вопрос задан
  • 2921 просмотр
Пригласить эксперта
Ответы на вопрос 1
Dzmitry36
@Dzmitry36
предприниматель
Файл скрипта лежит по адресу:
сайт/themes/тема/js/modules/blocklayered/blocklayered.js
а .tpl, который выводит результаты:
сайт\themes\ваша_тема\modules\blocklayered\blocklayered.tpl

Но, эти два файла отвечают просто за смену значков и разворачивание и сворачивание блоков. Файл, который отвечает за отображение фильтров в заголовках (по умолчанию) в развёрнутом или свёрнутом виде находится где-то ещё... Я долго искал, но все варианты оказались безполезны.

Зато, я смог решить подобный вопрос для страницы продукта. Там есть возможность сворачивать и разворачивать такие блоки как: описание, свойства, отзывы и другие, с заголовком , но только в мобильной версии.

В результате я настроил блоки toggle так, что бы по умолчанию они были закрыты, а функция отображалась как в мобильной, так полной версии сайта. Решение было таким:

1. Открыть
сайт\themes\ваша_тема\js\source\mainscript.js
2. Найти
// TOGGLE PAGE PRODUCT (TAB)
// products-icons-define
3. Далее заменить содержимое на
var product_icon_plus = 'icon-plus-sign-alt';
		var product_icon_minus = 'icon-minus-sign-alt';
var responsiveflagPage = false;
function accordionPage(status){	
		if(status == 'enable'){
			$('.page_product_box h3').on('click', function(){
				$(this).toggleClass('activeTab').parent().find('.toggle_content').stop().slideToggle('medium', function(){
				  if($(this).prev().hasClass('activeTab')) {
					  $(this).prev().children('i').removeClass(product_icon_plus).addClass(product_icon_minus);	
				  }
				  else {
					  $(this).prev().children('i').removeClass(product_icon_minus).addClass(product_icon_plus);
				  }
			  });
			})
			$('#center_column .page_product_box').addClass('accordion').find('.toggle_content').slideUp('fast');
		}else{
			$('#center_column .page_product_box h3').removeClass('activeTab').off().parent().find('.toggle_content').removeAttr('style').slideDown('fast');
			$('.page_product_box h3 i').removeClass(product_icon_minus).addClass(product_icon_plus);
			$('#center_column .page_product_box').removeClass('accordion');
		}
	}		
function toDoPage(){
	   if ($(document).width() <= 2767 && responsiveflagPage == false){
		    accordionPage('enable');
			responsiveflagPage = true;
				
		}
		else if ($(document).width() >= 2768){
			accordionPage('disable');
	        responsiveflagPage = false;
		}
}
$(document).ready(toDoPage);
$(window).resize(toDoPage);

4. После этого останется переопределить два фала tpl
4.1. сайт\themes\ваша_тема\product.tpl,
4.2. сайт\themes\ваша_тема\modules\productcomments\tab.tpl
5. И заменить в этих файлах все значки:
<i class="icon-toggle icon-minus-sign-alt"></i>
На:
<i class="icon-toggle icon-plus-sign-alt"></i>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы