Перейти к содержимому


Еще один фильтр. Теперь на AJAX.


  • Вы не можете ответить в тему
Сообщений в теме: 187

#121 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 01 June 2015 - 03:30 PM

Возможно ли по клику на картинку производителя отфильтровать этим фильтром товары по производителю?
Т.е. чтобы по ссылке соответственно в фильтре отображались галочки напротив производителя.

Напишите JS-функцию, которая по клику на картинке производителя:
1. установит галку соответствующего варианта (чекбокс, у которого value=variantID). Либо можно этим чекбоксам присвоить id="variant_{$variant.variantID}". Так будет даже проще, чем перебирать чекбоксы с нужным value.
2. жмакнет по кнопке "показать", т.е. вызовет функцию filterSubmit()
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#122 makki

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 148 сообщений
Репутация: 7
Начинающий

Отправлено 04 June 2015 - 12:32 PM

Возможно ли по клику на картинку производителя отфильтровать этим фильтром товары по производителю? Т.е. чтобы по ссылке соответственно в фильтре отображались галочки напротив производителя.

Напишите JS-функцию, которая по клику на картинке производителя: 1. установит галку соответствующего варианта (чекбокс, у которого value=variantID). Либо можно этим чекбоксам присвоить id="variant_{$variant.variantID}". Так будет даже проще, чем перебирать чекбоксы с нужным value. 2. жмакнет по кнопке "показать", т.е. вызовет функцию filterSubmit()

Подскажите что не так делаю.

В файле filter.tpl.html добаляю id='variant_{$variant.variantID}'

    {foreach from=$param.variants item=variant}
	    {if $variant.count}<label><input type="checkbox" id='variant_{$variant.variantID}' name='param_new_{$param.optionID}[]' value='{$variant.variantID}' {if $variant.checked} checked{/if}><span style="font-weight:normal;padding-left:5px;">{$variant.option_value} ({$variant.count})</span></label><br>
	    {/if}
    {/foreach}

На главной странице вешаю на картинку функцию BrandFilter в которой передаю ID

<a href="category_47.html" class="thumbnail" onclick="BrandFilter(191);"><img src="data/{$smarty.const.TPL}/brands/brand191.jpg"></a>
<script type="text/javascript">
{literal}
function BrandFilter(vaiant_id){
    document.getElementById('variant_'+variant_id).checked = true;
    filterSubmit();    
}
{/literal}
</script>

В результате вариант не чекается, почему?
  • 0

#123 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 04 June 2015 - 06:14 PM

В результате вариант не чекается, почему?

Предположение "от балды" - на странице УЖЕ есть (были до исправлений) элементы с id="variant_XXX"
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#124 makki

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 148 сообщений
Репутация: 7
Начинающий

Отправлено 05 June 2015 - 03:37 PM

В результате вариант не чекается, почему?

Предположение "от балды" - на странице УЖЕ есть (были до исправлений) элементы с id="variant_XXX"


Проблема оказалась в том, что все происходит на разных страницах.
Решение:
С главной страницы делаем ссылку такого вида:
<a href="category_47.html?per=191"><img scr=....
В этой ссылке мы передаем в переменной «per» значение id варианта

Далее в файле filter.tpl.html добаляем функцию и вызываем ее после загрузки страницы $(document).ready
<script>
{literal}
function param() {
var Params = location.search.substring(1).split("&");
var variable = "";
for (var i = 0; i < Params.length; i++) {
  if(Params[i].split("=")[0] == "per") {
   if (Params[i].split("=").length > 1)
   variable = Params[i].split("=")[1];
   document.getElementById('variant_'+variable).checked = true;
   $('#filterForm').ajaxSubmit(FilterOptions);
   var oldUrl = window.location.href;
   var newUrl = oldUrl.substring (0, oldUrl.indexOf('?'));
   window.history.pushState(null,null, newUrl);
   return;
  }
}
return;
}
$(document).ready(function(){
param();
});
{/literal}
</script>

  • 0

#125 valeradr

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 49 сообщений
Репутация: 0
Начинающий

Отправлено 07 June 2015 - 03:06 PM

Может кто решил данный вопрос, как сделать чтобы неактивные (недоступные для отметки) варианты характеристик фильтра не затемнялись, а вообще пропадали, тем самым не будет ненужных неактивных зон.
  • 0

#126 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 07 June 2015 - 07:45 PM

Может кто решил данный вопрос, как сделать чтобы неактивные (недоступные для отметки) варианты характеристик фильтра не затемнялись, а вообще пропадали, тем самым не будет ненужных неактивных зон.

Замените условный disabled на непоказ чекбокса вообще по тому же условию.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#127 valeradr

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 49 сообщений
Репутация: 0
Начинающий

Отправлено 08 June 2015 - 08:41 AM

В файле filter.tpl?

{php}
define('OPENOPTION' ,true); // изначально характеристики (список галок) развернуты
$this->assign('openopt1',OPENOPTION?'block':'none');
$this->assign('openopt2',OPENOPTION?'none':'block');
{/php}
......
  • 0

#128 makki

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 148 сообщений
Репутация: 7
Начинающий

Отправлено 08 June 2015 - 09:50 AM

В файле filter.tpl?


да, в этом файле надо вместо
{foreach from=$param.variants item=variant}
<label><input type="checkbox" name='param_new_{$param.optionID}[]' value='{$variant.variantID}'{if $variant.checked} checked{/if}{if !$variant.count} disabled{/if}>{$variant.option_value} ({$variant.count})</label><br>
{/foreach}

заменить на:
	{foreach from=$param.variants item=variant}
		{if $variant.count}<label><input type="checkbox" name='param_new_{$param.optionID}[]' value='{$variant.variantID}' {if $variant.checked} checked{/if}><span style="font-weight:normal;padding-left:5px;">{$variant.option_value} ({$variant.count})</span></label><br>
		{/if}
	{/foreach}

  • 0

#129 valeradr

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 49 сообщений
Репутация: 0
Начинающий

Отправлено 08 June 2015 - 10:03 AM

Еще один маленький вопрос в скобках отображается количество товара, как это убрать?
  • 0

#130 makki

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 148 сообщений
Репутация: 7
Начинающий

Отправлено 08 June 2015 - 02:22 PM

Там же уберите ({$variant.count})

  • 1

#131 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 08 June 2015 - 02:39 PM

Прекратите замусоривать мою тему "спасибами"! Для "спасибо" есть зеленая кнопка, добавляющая репутацию.
  • 1
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#132 etdnepr

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 101 сообщений
Репутация: 0
Начинающий

Отправлено 09 August 2015 - 08:33 AM

Здравствуйте! решил вернуться и доставить фильтр. Все работает. Вот только какое заметил отличие. У меня под результатами фильтрации показывается содержание категории (все товары) как будто резельтаты фильтрации просто добавились сверху. В то же время на тестовом сайте ув. badisoft - на странице остаются только результаты работы фильтра.
Нашел в теме про развесистый фильтр что-то по этой проблеме:

Скажем, привязаться к какой-нибудь GET-переменной, характерной только для результатов поиска.
Например, к search.
Т.е. в category.tpl.html
{if $selected_category.description}
заменить на что-то типа
{if $selected_category.description && !$smarty.get.search}

Попробовал - не помогает.
Подскажите как побороть эту проблемку. Спасибо!
  • 0

#133 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 09 August 2015 - 11:48 AM

Подскажите как побороть эту проблемку. Спасибо!

Как а я подозреваю, заменить в index.php

<div id="filterResult"></div>
{* вывод центральной страницы *}
{include file="$main_content_template"}

на

<div id="filterResult">
{* вывод центральной страницы *}
{include file="$main_content_template"}
</div>

  • 1
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#134 etdnepr

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 101 сообщений
Репутация: 0
Начинающий

Отправлено 09 August 2015 - 08:10 PM

Как всегда в точку! Спасибо! +1
  • 0

#135 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 09 August 2015 - 09:11 PM

Как всегда в точку! Спасибо!

Пожалуйста. Это написано в инструкции. В части кода - практически дословно.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#136 etdnepr

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 101 сообщений
Репутация: 0
Начинающий

Отправлено 09 August 2015 - 09:54 PM

Я вроде так и сделал, но div не там закрыл вот и получился головняк))
Простите меня, но остался еще 1 вопрос))
В результатах фильтра выводится сортировка как в категории (я так понимаю).
Так вот эти Новинки, Топ продаж, Акции и т.д. в категории отлично работают, а в результатах фильтра нет. Выдает 404. Проблема (я так понимаю) в том, что туда не прописывается id категории судя по ссылке:
/index.php?categoryID=&sort=act
Как его туда впихнуть... На это знаний не хватает.
Я бы их скрыть не против из результатов фильтра, но несколько часов разбирательства не привели ни к чему.
Может у Вас есть опыт как тут быть? Спасибо.
  • 0

#137 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 09 August 2015 - 10:58 PM

Может у Вас есть опыт как тут быть? Спасибо.

Как я понимаю, Вы не можете состыковать мои бесплатные Аякс-фильтр и модуль "Новинки-Топ-Акции".
Опыт есть. Уж извините, платный :).
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#138 etdnepr

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 101 сообщений
Репутация: 0
Начинающий

Отправлено 10 August 2015 - 01:35 PM

Да, модуль аякс фильтр и картинки в уголке фото.
Спасибо большое! На меня нашло озарение и я их скрыл оттуда))) Напишу Вам в лс.
  • 0

#139 hedhedhed

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 107 сообщений
Репутация: 4
Начинающий

Отправлено 20 August 2015 - 09:54 AM

Поставил фильтр. И, судя по всему (перелопатил эту тему всю), проблема в подключении скриптов. Ибо при нажатии на "развернуть" видны значения, но сам фильтр как бы подвисает, и невозможно ничего выбрать.
(Также заменил старый живой поиск на новый, и он перестал работать. Возможно, по этой же причине).

Вроде все в одном месте, все просто, вроде все прописано, а не работает и не то, и не то.
Проверил поиском, jquery покдлючается только в head.tpl.html, там вот это:

<link rel="stylesheet" type="text/css" href="http://ajax.googleap...jquery-ui.css">
<script type="text/javascript" src="http://ajax.googleap...n.js"></script>
<script type="text/javascript" src="http://ajax.googleap...n.js"></script>
<script src="http://ajax.googleap.../jquery.min.js" type="text/javascript"></script>

и filter_new.tpl.html, там только код автора, ничего не правил:
<script type="text/javascript" src="/data/{$smarty.const.TPL}/jquery.blockui.js"></script>
<script type="text/javascript" src="/data/{$smarty.const.TPL}/jquery.form.js"></script>

Help ! :(
  • 0

#140 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 20 August 2015 - 10:01 AM

Проверил поиском, jquery покдлючается только в head.tpl.html

Ага. Аж два раза. Чтобы уж наверняка. :)
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)