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


Подбор продукции по параметрам. Как работают фильтры


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 150

#41 krasivo

krasivo

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

  • Пользователи
  • PipPipPip
  • 52 сообщений

Отправлено 27 Январь 2012 - 20:40

Просмотр сообщенияVaccina (26 Январь 2012 - 22:25) писал:

К сожалению это реализовать не получиться.
Может, кому пригодится. Проблему решила так - объединила все товары одного вида в одну общую группу(убрала из каталога подкаталоги). Получилось, что изо всех товаров можно с помощью фильтра выбрать по нужным параметрам - производителю, размеру, составу и т.п..

Просмотр сообщенияVaccina (27 Сентябрь 2011 - 20:31) писал:


Для этого в форму добавьте кнопку
<input type="reset" name="reset" value="Сбросить" />
Кнопка добавилась, но фильтры не сбрасывает. Что не так?

#42 Vaccina

Vaccina

    Активный участник

  • Модераторы
  • 24 217 сообщений

Отправлено 27 Январь 2012 - 22:25

Проверьте находиться ли данная кнопка внутри тега <form>

#43 krasivo

krasivo

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

  • Пользователи
  • PipPipPip
  • 52 сообщений

Отправлено 27 Январь 2012 - 23:08

Просмотр сообщенияVaccina (27 Январь 2012 - 22:25) писал:

Проверьте находиться ли данная кнопка внутри тега <form>
Вставила. Кнопка вообще пропала. Может не туда?

<!-- Фильтры по свойствам товарных модификаций (Например: Цвет, размер, модификация) -->
          {% FOR filter_prop_list %}
            <div class="filter">
              {filter_prop_list.NAME}:<br />
              <select onchange="$(this).attr('name', $(this).find('option:selected').attr('rel')); this.form.submit();" name="{% FOR values %}{% IF filter_prop_list.values.CHECKED %}form[filter][prop][{filter_prop_list.ID}][{filter_prop_list.values.ID}]{% ENDIF %}{% ENDFOR %}">
                <option> - все - </option>
                {% FOR values %}
                  <option value="1" rel="form[filter][prop][{filter_prop_list.ID}][{filter_prop_list.values.ID}]" {% IF filter_prop_list.values.CHECKED %}selected="selected"{% ENDIF %}>{filter_prop_list.values.VALUE}</option>
                {% ENDFOR %}
              </select>
            </div>
          {% ENDFOR %}
          <div class="clear"></div>
        </form<input type="reset" name="reset" value="Сбросить" />
      </div>
    </li>
      {% ENDIF %}
{% ENDIF %}
<!-- END Если в тарифном плане подключен модуль фильтров по товарам -->

#44 Vaccina

Vaccina

    Активный участник

  • Модераторы
  • 24 217 сообщений

Отправлено 28 Январь 2012 - 18:42

Вы не туда расположили кусок кода. Попробуйте сделать сл.изменения:
</form<input type="reset" name="reset" value="Сбросить" />
измените на:
<input type="reset" name="reset" value="Сбросить" />
</form>


#45 krasivo

krasivo

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

  • Пользователи
  • PipPipPip
  • 52 сообщений

Отправлено 29 Январь 2012 - 00:00

Просмотр сообщенияVaccina (28 Январь 2012 - 18:42) писал:

Вы не туда расположили кусок кода. Попробуйте сделать сл.изменения:
</form<input type="reset" name="reset" value="Сбросить" />
измените на:
<input type="reset" name="reset" value="Сбросить" />
</form>
Не работает(((. Пока вернулась к не выпадающему фильтру.

#46 Lion

Lion

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 337 сообщений
  • ГородMoscow

Отправлено 04 Февраль 2012 - 17:59

Добрый день.

Научите как поместить блок "Фильтры"  по свойствам на место сортировки? А сортировку убрать совсем.

Что такое свойства в модификациях?  Эти свойства для фильтрации по модификациям?

С уважением, LION

#47 Vaccina

Vaccina

    Активный участник

  • Модераторы
  • 24 217 сообщений

Отправлено 05 Февраль 2012 - 00:42

По идее вам необходимо переместить блок с фильтром из шаблона "HTML" в шаблон "Товары"

<!-- Если в тарифном плане подключен модуль фильтров по товарам -->
				  {% IF TARIFF_FEATURE_GOODS_FILTERS %}
					<!-- Фильтры по товарам. Появляются только на странице категории и поиска по товарам -->
					{% IF SHOW_GOODS_FILTERS %}
					  <li class="goods_filters"><br /><h2>Фильтры</h2>
						<ul>
						  <!-- Форма поиска отправляет всегда на ту же страницу, на которой находится пользователь -->
						  <form action="" method="get">
							<div class="contentTbodySearchFilterBlock cornerAll">
  
							  <!-- Фильтры по характеристикам товаров (Например: Производитель, разрешение экрана, заряд батареи) -->
							  {% FOR filter_attr_list %}
								<span class="contentTbodySearchFilterBlockHeader">{filter_attr_list.NAME}</span>
								<div class="contentTbodySearchFilterBlockValues">
								{% FOR values %}
								  <input type="checkbox" name="form[filter][attr][{filter_attr_list.ID}][{filter_attr_list.values.ID}]" value="1" id="filterAttrVal{filter_attr_list.values.ID}" {% IF filter_attr_list.values.CHECKED %}checked="checked"{% ENDIF %} /> 
								  <label for="filterAttrVal{filter_attr_list.values.ID}">{filter_attr_list.values.VALUE}</label><br />
								{% ENDFOR %}
								</div>
							  {% ENDFOR %}
  
							  <!-- Фильтры по свойствам товарных модификаций (Например: Цвет, размер, модификация) -->
							  {% FOR filter_prop_list %}
								<span class="contentTbodySearchFilterBlockHeader">{filter_prop_list.NAME}</span>
								<div class="contentTbodySearchFilterBlockValues">
								{% FOR values %}
								  <input type="checkbox" name="form[filter][prop][{filter_prop_list.ID}][{filter_prop_list.values.ID}]" value="1" id="filterPropVal{filter_prop_list.values.ID}" {% IF filter_prop_list.values.CHECKED %}checked="checked"{% ENDIF %} > 
								  <label for="filterPropVal{filter_prop_list.values.ID}">{filter_prop_list.values.VALUE}</label><br />
								{% ENDFOR %}
								</div>
							  {% ENDFOR %}
							</div>
						  </form>
						</ul>
					  </li>
					{% ENDIF %}
				  {% ENDIF %}
				  <!-- END Если в тарифном плане подключен модуль фильтров по товарам -->

меняем блок с сортировкой

<!-- Фильтры показываются только если есть товары в категории -->
  {% IFNOT goods_empty %}
	<!-- Блок выбора параметра по которому производится сортировка списка товаров и возможность изменения лимитов выдачи -->
	<form action="">
	  <table class="goodsListingTopNavigation">
		<tr>
		  <td>
			<!-- Список фильтров, которые сейчас действуют на результаты поиска -->
			{% FOR goods_filters %}
			  <input type="hidden" name="{goods_filters.NAME}" value="{goods_filters.VALUE}" />
			{% ENDFOR %}
		
			<!-- Поле выбора сортировки -->
			{% IF goods_show_order_fields %}
			  Сортировать по:
			  <select name="goods_search_field_id" onchange="this.form.submit();">
				{% FOR goods_order_fields %}
				  <option value="{goods_order_fields.ID}" {% IF goods_order_fields.SELECTED %}selected="selected"{% ENDIF %}>{goods_order_fields.NAME}</option>
				{% ENDFOR %}
			  </select>
			{% ENDIF %}
		  </td>
		  <td class="alignCenter viewSelector">
			<!-- Переключатель режима просмотра -->
			{% IF GOODS_VIEW_TYPE=2 %}
			  <strong title="Список товаров сейчас отображается в виде таблицы, по 2 товара на строку">Таблица</strong>&nbsp;
			  <a href="?goods_view_type=1" title="Отображать список товаров в виде списка">Список</a>
			{% ELSE %}
			  <a href="?goods_view_type=2" title="Отображать список товаров в виде таблицы с 2мя товарами на одну строку">Таблица</a>&nbsp;
			  <strong title="Список товаров сейчас отображается в виде списка, где один товар занимает одну строку">Список</strong>
			{% ENDIF %}
			<!-- /Переключатель режима просмотра -->
		  </td>
		  <td class="alignRight">
			<!-- Поле выбора лимитов -->
			{% IF goods_show_per_page %}
			  Показывать по:
			  <select name="per_page" onchange="this.form.submit();">
				{% FOR goods_per_page_list %}
				  <option value="{goods_per_page_list.LIMIT}" {% IF goods_per_page_list.SELECTED %}selected="selected"{% ENDIF %}>{goods_per_page_list.LIMIT}</option>
				{% ENDFOR %}
			  </select>
			{% ENDIF %}
		  </td>
		</tr>
	  </table>
	</form>
	<!-- END Блок выбора параметра по которому производится сортировка списка товаров -->
  {% ENDIF %}
  <!-- END Фильтры показываются только если есть товары в категории -->


#48 Lion

Lion

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 337 сообщений
  • ГородMoscow

Отправлено 05 Февраль 2012 - 21:56

Спасибо, а куда его вставлять в "Товарах"?  Как убрать сортировку?

Lion

#49 Lion

Lion

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 337 сообщений
  • ГородMoscow

Отправлено 05 Февраль 2012 - 22:54

И еще вопрос, я тут в процессе манипуляций с перемещением кодов, грохнул возможность выбора вариантов отображения списка товаров в табличном виде.  Подскажите пожалуйста какой код и куда вставить что бы вернуть табличный вариант?

Спасибо заранее,
Lion

#50 Vaccina

Vaccina

    Активный участник

  • Модераторы
  • 24 217 сообщений

Отправлено 06 Февраль 2012 - 20:26

Цитата

Спасибо, а куда его вставлять в "Товарах"? Как убрать сортировку?

Вам необходимо просто заменить один блок на другой. Т.е я вам выше привела 2 блока кода. Вам необходимо второй заменить на первый.

Код переключения выглядит так

<!-- Переключатель режима просмотра -->
			{% IF GOODS_VIEW_TYPE=2 %}
			  <strong title="Список товаров сейчас отображается в виде таблицы, по 2 товара на строку">Таблица</strong>&nbsp;
			  <a href="?goods_view_type=1" title="Отображать список товаров в виде списка">Список</a>
			{% ELSE %}
			  <a href="?goods_view_type=2" title="Отображать список товаров в виде таблицы с 2мя товарами на одну строку">Таблица</a>&nbsp;
			  <strong title="Список товаров сейчас отображается в виде списка, где один товар занимает одну строку">Список</strong>
			{% ENDIF %}
			<!-- /Переключатель режима просмотра -->

Выбор лимитов так

{% IF goods_show_per_page %}
			  Показывать по:
			  <select name="per_page" onchange="this.form.submit();">
				{% FOR goods_per_page_list %}
				  <option value="{goods_per_page_list.LIMIT}" {% IF goods_per_page_list.SELECTED %}selected="selected"{% ENDIF %}>{goods_per_page_list.LIMIT}</option>
				{% ENDFOR %}
			  </select>
			{% ENDIF %}


#51 Lion

Lion

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 337 сообщений
  • ГородMoscow

Отправлено 07 Февраль 2012 - 10:00

Большое спасибо, все починил,

Lion

#52 Flor@@@

Flor@@@

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 822 сообщений
  • Городмосква

Отправлено 30 Март 2012 - 21:55

Просмотр сообщенияVaccina (27 Сентябрь 2011 - 20:31) писал:

Для этого в форму добавьте кнопку
<input type="reset" name="reset" value="Сбросить" />

не работает кнопочка :(

вот так вот вставила:

<!-- Если в тарифном плане подключен модуль фильтров по товарам -->
{% IF TARIFF_FEATURE_GOODS_FILTERS %}
  <!-- Фильтры по товарам. Появляются только на странице категории и поиска по товарам -->
  {% IF SHOW_GOODS_FILTERS %}
	<style>
	  .filters { }
	  .filters .filter { float:left;padding-right:10px;width:150px; }
	  .filters .filter select { width:150px; }
	</style>
	<li class="goods_filters"><br /><h2>ОТФИЛЬТРОВАТЬ ПО:</h2>
	  <div class="filters">   
		<!-- Форма поиска отправляет всегда на ту же страницу, на которой находится пользователь -->
		<form action="" method="get">
		  <!-- Фильтры по характеристикам товаров (Например: Производитель, разрешение экрана, заряд аккомулятора) -->
		  {% FOR filter_attr_list %}
			<div class="filter">
			  {filter_attr_list.NAME}:<br />
			  <select onchange="$(this).attr('name', $(this).find('option:selected').attr('rel'));this.form.submit();" name="{% FOR values %}{% IF filter_attr_list.values.CHECKED %}form[filter][attr][{filter_attr_list.ID}][{filter_attr_list.values.ID}]{% ENDIF %}{% ENDFOR %}">
				<option> - все - </option>
				{% FOR values %}
				  <option value="1" rel="form[filter][attr][{filter_attr_list.ID}][{filter_attr_list.values.ID}]" {% IF filter_attr_list.values.CHECKED %}selected="selected"{% ENDIF %}>{filter_attr_list.values.VALUE}</option>
				{% ENDFOR %}
			  </select>
			</div>
		  {% ENDFOR %}
  
		  <!-- Фильтры по свойствам товарных модификаций (Например: Цвет, размер, модификация) -->
		  {% FOR filter_prop_list %}
			<div class="filter">
			  {filter_prop_list.NAME}:<br />
			  <select onchange="$(this).attr('name', $(this).find('option:selected').attr('rel')); this.form.submit();" name="{% FOR values %}{% IF filter_prop_list.values.CHECKED %}form[filter][prop][{filter_prop_list.ID}][{filter_prop_list.values.ID}]{% ENDIF %}{% ENDFOR %}">
				<option> - все - </option>
				{% FOR values %}
				  <option value="1" rel="form[filter][prop][{filter_prop_list.ID}][{filter_prop_list.values.ID}]" {% IF filter_prop_list.values.CHECKED %}selected="selected"{% ENDIF %}>{filter_prop_list.values.VALUE}</option>
				{% ENDFOR %}
			  </select>
			</div>
		  {% ENDFOR %}
		  <div class="clear"></div> 
<input type="reset" name="reset" value="Сбросить" />
		</form>
	  </div>
	</li>
  {% ENDIF %}
{% ENDIF %}
<!-- END Если в тарифном плане подключен модуль фильтров по товарам -->



и еще она очень уж "прилипает" к "новости магазина".

#53 Flor@@@

Flor@@@

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 822 сообщений
  • Городмосква

Отправлено 31 Март 2012 - 01:39

Просмотр сообщенияtimavleev (22 Декабрь 2011 - 22:11) писал:

У меня в фильтрах несколько характеристик в виде выпадающего списка. Каждый раз выбирая из выпадающего списка какое-либо значение характеристики страница обновляется. Можно ли сделать так чтобы при выборе значения характеристики страница не обновлялась, а просто в фильтре устанавливалось это значение, и уже после выбора всех характеристик нажимая на кнопку например "Найти" страница обновлялась?

а как сделать тоже самое для вот этого кода:

<!-- Если в тарифном плане подключен модуль фильтров по товарам -->


{% IF TARIFF_FEATURE_GOODS_FILTERS %}
  <!-- Фильтры по товарам. Появляются только на странице категории и поиска по товарам -->
  {% IF SHOW_GOODS_FILTERS %}
	<style>
	  .filters { }
	  .filters .filter { float:left;padding-right:10px;width:150px; }
	  .filters .filter select { width:150px; }
	</style>
	<li class="goods_filters"><br /><h2>Фильтры</h2>
	  <div class="filters">   
		<!-- Форма поиска отправляет всегда на ту же страницу, на которой находится пользователь -->
		<form action="" method="get">
		  <!-- Фильтры по характеристикам товаров (Например: Производитель, разрешение экрана, заряд аккомулятора) -->
		  {% FOR filter_attr_list %}
			<div class="filter">
			  {filter_attr_list.NAME}:<br />
			  <select onchange="$(this).attr('name', $(this).find('option:selected').attr('rel'));this.form.submit();" name="{% FOR values %}{% IF filter_attr_list.values.CHECKED %}form[filter][attr][{filter_attr_list.ID}][{filter_attr_list.values.ID}]{% ENDIF %}{% ENDFOR %}">
				<option> - все - </option>
				{% FOR values %}
				  <option value="1" rel="form[filter][attr][{filter_attr_list.ID}][{filter_attr_list.values.ID}]" {% IF filter_attr_list.values.CHECKED %}selected="selected"{% ENDIF %}>{filter_attr_list.values.VALUE}</option>
				{% ENDFOR %}
			  </select>
			</div>
		  {% ENDFOR %}
  
		  <!-- Фильтры по свойствам товарных модификаций (Например: Цвет, размер, модификация) -->
		  {% FOR filter_prop_list %}
			<div class="filter">
			  {filter_prop_list.NAME}:<br />
			  <select onchange="$(this).attr('name', $(this).find('option:selected').attr('rel')); this.form.submit();" name="{% FOR values %}{% IF filter_prop_list.values.CHECKED %}form[filter][prop][{filter_prop_list.ID}][{filter_prop_list.values.ID}]{% ENDIF %}{% ENDFOR %}">
				<option> - все - </option>
				{% FOR values %}
				  <option value="1" rel="form[filter][prop][{filter_prop_list.ID}][{filter_prop_list.values.ID}]" {% IF filter_prop_list.values.CHECKED %}selected="selected"{% ENDIF %}>{filter_prop_list.values.VALUE}</option>
				{% ENDFOR %}
			  </select>
			</div>
		  {% ENDFOR %}
		  <div class="clear"></div> 
		</form>
	  </div>
	</li>
  {% ENDIF %}
{% ENDIF %}
<!-- END Если в тарифном плане подключен модуль фильтров по товарам -->






я пробовала вводить предложенные ниже изменения и фильтрация на сайте снова становится не выпадающим меню

#54 Flor@@@

Flor@@@

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 822 сообщений
  • Городмосква

Отправлено 31 Март 2012 - 02:44

и еще у меня не получается поправить ни цвет ни шрифт ни бордер для отображения фильтрации на сайте. Из какой-то параллельной темы вроде нашла кусочек кода для изменения шрифта фильтрации, но задать при помощи этого кода другие параметры: цвет, к примеру, не получается, также не получается задать интервал между разделами фильтрации и НОВОСТЯМИ МАГАЗИНА внизу.

ИВажно сделать название подраздела "фильтры" в одном стиле с заголовком "НОВОСТИ МАГАЗИНА" .

И еще: как сделать сами колонки с содержимым фильтрации пошире?  И как разделить стилизацию для названий фильтраций и для содержимого этих фильтраций?  

помогите мне, пожалуйста, также  разместить фильтры над товарами, но не в столбик, а в ряд, как вот здесь:
http://dom-matrasov....l/dreamroll-max

#55 Vaccina

Vaccina

    Активный участник

  • Модераторы
  • 24 217 сообщений

Отправлено 02 Апрель 2012 - 17:11

Вся проблема в том - что модификация применяется сразу после выбора, тем самым сбросить форму не представляется возможным. Можно попробовать реализовать кнопку "Найти" для фильтров http://forum.storela...dpost__p__11913

Стили для фильтра можно задать в классе

.filters .filter select {
	width: 150px;
}

Для интервала между новостями необходимо добавить свойство - например margin-bottom:20px; в класс

.goods_filters {
	font-family: georgia;
	font-size: 13px;
	font-weight: bold;
}

Заменить заголовок "ПОДОБРАТЬ ПО:" вы можете в шаблоне "HTML" найдя соответствующий текст. А все стили для блока фильтра вы можете задать в том же классе .goods_filters

Про перенос фильтров можете почитать тему http://forum.storela...ndpost__p__9752

#56 Flor@@@

Flor@@@

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 822 сообщений
  • Городмосква

Отправлено 02 Апрель 2012 - 18:39

Просмотр сообщенияVaccina (02 Апрель 2012 - 17:11) писал:

Вся проблема в том - что модификация применяется сразу после выбора, тем самым сбросить форму не представляется возможным. Можно попробовать реализовать кнопку "Найти" для фильтров http://forum.storela...dpost__p__11913

Стили для фильтра можно задать в классе

.filters .filter select {
	width: 150px;
}

Для интервала между новостями необходимо добавить свойство - например margin-bottom:20px; в класс

.goods_filters {
	font-family: georgia;
	font-size: 13px;
	font-weight: bold;
}

Заменить заголовок "ПОДОБРАТЬ ПО:" вы можете в шаблоне "HTML" найдя соответствующий текст. А все стили для блока фильтра вы можете задать в том же классе .goods_filters

Про перенос фильтров можете почитать тему http://forum.storela...ndpost__p__9752

я пробовала читать про перенос фильтров в указанной вами теме, но советы, которые мне там дали, были: заглянуть обратно сюда в эту тему и найти ответ здесь :).

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



#57 Vaccina

Vaccina

    Активный участник

  • Модераторы
  • 24 217 сообщений

Отправлено 03 Апрель 2012 - 17:40

Из предыдущей темы - вам необходимо для начала восстановить шаблон, чтобы вернуть фильтры.

#58 Flor@@@

Flor@@@

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 822 сообщений
  • Городмосква

Отправлено 03 Апрель 2012 - 21:11

Просмотр сообщенияVaccina (03 Апрель 2012 - 17:40) писал:

Из предыдущей темы - вам необходимо для начала восстановить шаблон, чтобы вернуть фильтры.

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

проверяла эту ситуацию утром и ввечером в 4 различных программах: IE, firefox, mazilla и opera

#59 Flor@@@

Flor@@@

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 822 сообщений
  • Городмосква

Отправлено 16 Май 2012 - 06:41

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

следуя предложенной вверху топа инструкциии:

1 я удаляю кусок кода JS, все работает как надо,

2. Теперь необходимо вставить кнопку "сбросить", но я не знаю куда ее вставлять конкретно.

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



#60 Vaccina

Vaccina

    Активный участник

  • Модераторы
  • 24 217 сообщений

Отправлено 16 Май 2012 - 21:08

Если у вас кнопка начинает множиться - это значит вы вставили её в цикл. Вам необходимо вынести кнопку за конструкцию {% ENDFOR %} но в то же время кнопка должна быть внутри блока <form>




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных