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


Делаем развесистый фильтр товаров (обкатка, написание, дополнения)


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

#261 gsm-group

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

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

Отправлено 11 November 2012 - 08:49 PM

Кажется я понял в чем тут ошибка.
У вас все работает потому что в настройках характеристик нет таких, которые скрыты от отображения. А если часть из них скрыть, то нижеуказанный стандартный скрипт в шиблоне product_detailed.tpl.html работает неправильно:


Вы правы, не работает. Буду разбираться.
  • 0

#262 Den

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

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

Отправлено 11 November 2012 - 08:59 PM

Не фильтрацию "все что в фильтре 1 плюс фильтр 2 плюс фильтр 3", а только лишь по производителю. Три разных по верстке блока фильтра это лишь дополнительная возможность получить несколько разных и удобных в разных случаях вариантов фильтра, но они никак не суммируются и не пересекаются.

теперь все ясно, спасибо за разъяснения
  • 0

#263 gsm-group

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

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

Отправлено 11 November 2012 - 09:02 PM

Нашел косяк: Если посмотреть в исходный код при выключенной характеристики то исчезает следующая строка
<input type="hidden" name="option_select_1" value='Цифра'>

Смотрю дальше....
  • 0

#264 gsm-group

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

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

Отправлено 11 November 2012 - 10:31 PM

Вообщем пытался побороть, не получилось. Я считаю, что разработчик этого модуля обязан решить данную проблему. Так сказать довести до "ума".
  • 0

#265 Dbus

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

  • Assistent vsupport.club
  • PipPipPip
  • 1116 сообщений
Репутация: 174
Мастер
  • ГородОдесса

Отправлено 11 November 2012 - 11:28 PM

гг, да, именно "ОБЯЗАН" :)
еще и доплатить всем страждущим за потраченное на поиски багов время.
  • 0
502 Bad Gateway

#266 gsm-group

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

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

Отправлено 12 November 2012 - 07:12 AM

гг, да, именно "ОБЯЗАН" :)


Погорячился, "Желательно" .
  • 0

#267 idal

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

  • Assistent vsupport.club
  • PipPipPip
  • 243 сообщений
Репутация: 7
Начинающий
  • ГородКиев

Отправлено 12 November 2012 - 09:30 AM

А как сделать в Фильтре 2 (вывод чекбоксами) чтобы характеристика начиналась с новой строки.
Спасибо.
  • 0

#268 gsm-group

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

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

Отправлено 12 November 2012 - 09:42 AM

А как сделать в Фильтре 2 (вывод чекбоксами) чтобы характеристика начиналась с новой строки.
Спасибо.

В столбик?
Так:
{section name=j loop=$params[i].variants}
			  <label>
			    <input type="checkbox" {$params[i].variants[j].set}
					   name='param_{$params[i].optionID}_{$smarty.section.j.index}'
					   value='{if $params[i].controlIsTextField eq 1}{$params[i].variants[j].value}{else}{$params[i].variants[j].variantID}{/if}'>
			    {$params[i].variants[j].value|default:""} ({$params[i].variants[j].count})
			  </label><br>
	   {/section}
Или так
{section name=j loop=$params[i].variants}
			  <div>
			    <input type="checkbox" {$params[i].variants[j].set}
					   name='param_{$params[i].optionID}_{$smarty.section.j.index}'
					   value='{if $params[i].controlIsTextField eq 1}{$params[i].variants[j].value}{else}{$params[i].variants[j].variantID}{/if}'>
			    {$params[i].variants[j].value|default:""} ({$params[i].variants[j].count})
			  </div>
	   {/section}

  • 0

#269 badisoft

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

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

Отправлено 12 November 2012 - 09:52 AM

А как сделать в Фильтре 2 (вывод чекбоксами) чтобы характеристика начиналась с новой строки.

Если я правильно догадываюсь, что Вы хотите, то так:

{* боковой блок. Обычно на вариант характеристики "Производитель" *}
{if $params}
{assign var=flag value='0'}
<table align="left" style="font-size: 14px">
{section name=i loop=$params}
{if $params[i].filter2 eq 1}
{assign var=flag value='1'}
{section name=j loop=$params[i].variants}
<tr><td><a align="left" href="/index.php?categoryID={$categoryID}&advanced_search_in_category=1&param_{$params[i].optionID}={$params[i].variants[j].variantID}">{$params[i].variants[j].value}</a></td></tr>
{/section}
{/if}
{/section}
</table>
{if !$flag}Нет элементов для фильтра{/if}
{/if}

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

#270 idal

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

  • Assistent vsupport.club
  • PipPipPip
  • 243 сообщений
Репутация: 7
Начинающий
  • ГородКиев

Отправлено 12 November 2012 - 10:44 AM

Спасибо за быстрый ответ )

но не совсем то

у меня вот этот код в фильтре

{* боковой блок. Обычно на вариант характеристики "Производитель" *}
{if $params}
{assign var=flag value='0'}
<table align="left" style="font-size: 14px">
  {section name=i loop=$params}
	{if $params[i].filter2 eq 1}
	{assign var=flag value='1'}
		  {section name=j loop=$params[i].variants}
		  <tr><td><a align="left" href="/index.php?categoryID={$categoryID}&advanced_search_in_category=1&param_{$params[i].optionID}={$params[i].variants[j].variantID}">{$params[i].variants[j].value}</a></td></tr>
		  {/section}
	{/if}
  {/section}
</table>
{if !$flag}Нет элементов для фильтра{/if}
{/if}


на данный монет так
Изображение
хотелось бы так
Изображение

спасибо.

Прикрепленные файлы

  • Прикрепленный файл  Untitled-3.jpg   17.14К   3 Количество загрузок:
  • Прикрепленный файл  Untitled-4.jpg   19.41К   2 Количество загрузок:

  • 0

#271 gsm-group

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

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

Отправлено 12 November 2012 - 10:57 AM


<div align="left">

    <form name="Filter2" method="get" action="index.php" id="Filter2">

    <input type='hidden' name='categoryID' value='{$categoryID}'>

    <input type=hidden value='1' name='advanced_search_in_category'>

    {if $params}

    {assign var=flag value='0'}

	    {section name=i loop=$params}

	    {if $params[i].filter2 eq 1}

			  {assign var=flag value='1'}

{section name=j loop=$params[i].variants}

						  <div style="float:left;margin-right: 10px;">

						    <input type="checkbox" {$params[i].variants[j].set}

										   name='param_{$params[i].optionID}_{$smarty.section.j.index}'

										   value='{if $params[i].controlIsTextField eq 1}{$params[i].variants[j].value}{else}{$params[i].variants[j].variantID}{/if}'>

						    {$params[i].variants[j].value|default:""} ({$params[i].variants[j].count})

						  </div>

		   {/section}

	    {/if}

	    {/section}

	    {if $flag}

	    <input type="submit" value="{$smarty.const.VIEW_BUTTON}">

	    {else}

	    Нет элементов для фильтра

	    {/if}

    {/if}

  </form>

</div>


  • 0

#272 idal

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

  • Assistent vsupport.club
  • PipPipPip
  • 243 сообщений
Репутация: 7
Начинающий
  • ГородКиев

Отправлено 12 November 2012 - 11:18 AM

Сори

у меня вот этот код в фильтре

{* боковой блок. Обычно на вариант характеристики "Производитель" *}
{if $params}
{assign var=flag value='0'}
<table align="left" style="font-size: 14px">
{section name=i loop=$params}
{if $params[i].filter2 eq 1}
{assign var=flag value='1'}
{section name=j loop=$params[i].variants}
<tr><td><a align="left" href="/index.php?categoryID={$categoryID}&advanced_search_in_category=1&param_{$params[i].optionID}={$params[i].variants[j].variantID}">{$params[i].variants[j].value}</a></td></tr>
{/section}
{/
if}
{/section}
</
table>
{if !$flag}Нет элементов для фильтра{/if}
{/if}



вот мой код
<input type='hidden' name='categoryID' value='{$categoryID}'>
<input type=hidden value='1' name='advanced_search_in_category'>
{if $params}
	{assign var=flag value='0'}
{section name=i loop=$params}
{if $params[i].filter2 eq 1}
{assign var=flag value='1'}
{section name=j loop=$params[i].variants}
<label>
<input type="checkbox" {$params[i].variants[j].set}
name='param_{$params[i].optionID}_{$smarty.section.j.index}'value='{if $params[i].controlIsTextField eq 1}{$params[i].variants[j].value}{else}{$params[i].variants[j].variantID}{/if}'>	 {$params[i].variants[j].value|default:""} ({$params[i].variants[j].count})
			  </label>  
{/section}
{/if}
{/section}
{if $flag}	<input type="submit" value="{$smarty.const.VIEW_BUTTON}">
		{else}
		Нет элементов для фильтра
		{/if}
	{/if}
  </form>

gsm-group,
поставил ваш код там где 4 производителя то классно все работает, а вот когда 3 производителя то детское перетаскивает в вверх.
Изображение
Можно как то так, чтобы каждая характеристика (Бренд, Пол) шли с новой строчки.

Прикрепленные файлы

  • Прикрепленный файл  Untitled-2.jpg   16.35К   0 Количество загрузок:

  • 0

#273 gsm-group

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

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

Отправлено 12 November 2012 - 12:22 PM

Я думаю так, пробуйте
<div align="left">
    <form name="Filter2" method="get" action="index.php" id="Filter2">
    <input type='hidden' name='categoryID' value='{$categoryID}'>
    <input type=hidden value='1' name='advanced_search_in_category'>
    {if $params}
<table width="100%" cellspacing="0" cellpadding="0">
    {assign var=flag value='0'}
	    {section name=i loop=$params}
	    {if $params[i].filter2 eq 1}
			  {assign var=flag value='1'}
	   {section name=j loop=$params[i].variants}
{if $smarty.section.j.index is div by 3}<tr>{assign var="helpcounter" value=0}{/if}{assign var="helpcounter" value=$helpcounter+1}
			   <td> <input type="checkbox" {$params[i].variants[j].set}
					   name='param_{$params[i].optionID}_{$smarty.section.j.index}'
					   value='{if $params[i].controlIsTextField eq 1}{$params[i].variants[j].value}{else}{$params[i].variants[j].variantID}{/if}'>
			    {$params[i].variants[j].value|default:""} ({$params[i].variants[j].count})
			  </td>
	 {if ($smarty.section.j.index+1) is div by 3 || $params[i].variants|count eq $smarty.section.j.index+1}
	 </tr>
	 {else}<td class="delim"><img src="data/{$smarty.const.TPL}/pixel.gif" class="delim" alt=""></td>{/if}
	   {/section}
	    {/if}
	    {/section}
   </table>
	    {if $flag}
	    <input type="submit" value="{$smarty.const.VIEW_BUTTON}">
	    {else}
	    Нет элементов для фильтра
	    {/if}
    {/if}
  </form>
</div>

  • 1

#274 idal

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

  • Assistent vsupport.club
  • PipPipPip
  • 243 сообщений
Репутация: 7
Начинающий
  • ГородКиев

Отправлено 12 November 2012 - 12:50 PM

Большое спасибо именно так и надо !!
  • 0

#275 badisoft

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

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

Отправлено 12 November 2012 - 12:50 PM

Можно как то так, чтобы каждая характеристика (Бренд, Пол) шли с новой строчки.

Перед первым {/if} поставьте <br>, это приведет выводу другой характеристики со следующей строки.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#276 idal

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

  • Assistent vsupport.club
  • PipPipPip
  • 243 сообщений
Репутация: 7
Начинающий
  • ГородКиев

Отправлено 12 November 2012 - 01:09 PM

Перед первым {/if} поставьте <br>, это приведет выводу другой характеристики со следующей строки.

это я хотел в начале, ну так как gsm-group сделал по другом, мне так больше понравилось. Всем спасибо.

и еще такая проблемка, я поставил в этот фильтр цену, но цена отображается не ползунком а ячейками, та так понимаю здесь уже проблема конфликта ява скриптов, у меня стоить меню + слайдейр картинок + карусель изображений

вот что в шапке

<link rel="stylesheet" type="text/css" href="data/***/jquery-ui.css">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>

<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript" src="data/**/carousel.js"></script>
<script src="http://yui.yahooapis.com/3.4.1/build/yui/yui-min.js"></script>

спасибо.
  • 0

#277 gsm-group

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

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

Отправлено 12 November 2012 - 01:12 PM

сайт в студию или в личку
  • 0

#278 idal

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

  • Assistent vsupport.club
  • PipPipPip
  • 243 сообщений
Репутация: 7
Начинающий
  • ГородКиев

Отправлено 12 November 2012 - 01:16 PM

отписал, спасибо
  • 0

#279 Den

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

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

Отправлено 12 November 2012 - 01:27 PM

Кажется я понял в чем тут ошибка. У вас все работает потому что в настройках характеристик нет таких, которые скрыты от отображения. А если часть из них скрыть, то нижеуказанный стандартный скрипт в шаблоне product_detailed.tpl.html работает неправильно:

Вообщем пытался побороть, не получилось. Я считаю, что разработчик этого модуля обязан решить данную проблему. Так сказать довести до "ума".

Вроде как нашел решение. Нужно в шаблоне product_detailed.tpl.html заменить
{section name=i loop=$product_extra}
{section name=k loop=$product_extra[i].option_show_times}
на
{section name=i loop=$product_extra max=$select_counter_var}
{section name=k loop=$product_extra[i].option_show_times max=$select_counter_var}

Проверьте у себя, если работает - добавьте в шапку.
  • 0

#280 gsm-group

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

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

Отправлено 12 November 2012 - 01:44 PM

Проверьте у себя,

Не работает. Вообще все характеристики исчезают.
  • 0