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


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


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

#221 boss

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

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

Отправлено 26 August 2012 - 07:58 PM

badisoft,Да была ошибка в файле по моей вене.
Всё работает отлично.
Есть вопрос
при добавление через CSV есть глюк.
если к примеру в характеристике есть символ ( ")
например
диаметер 2" если таких 10 товаров то и характеристика дублируеться.
У меня получилось 2" 10 вариантов

пока тестирую на локалке скрипт
  • 0

#222 badisoft

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

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

Отправлено 27 August 2012 - 10:16 AM

при добавление через CSV есть глюк. если к примеру в характеристике есть символ ( ") например диаметер 2" если таких 10 товаров то и характеристика дублируеться.

Да, есть такое дело. Но это не имеет никакого отношения к фильтру.
В модуле импорта из CSV есть ошибка.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#223 boss

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

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

Отправлено 28 August 2012 - 09:20 PM

Подскажите в чем может быть проблема, у меня идей уже нету всё что мог проверил, проблемы в файле CSV нету.
В фильтре не вводиться 1-2 характиристик
Вот пример характиристик :

Диаметр разъема соединения 1
Допустимая температура жидкости до 110°C
Максимальный напор 4
Напряжение сети 220/230 В
Номинальная мощность 32 Вт
Потребляемая мощность 62 Вт
Производитель Aquatica
Пропускная способность 2.5
Размеры: 13.8x22x14.5
Тип циркуляционный
Установка насоса вертикальная


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

Причина по какой не отображалась характиристика производитель была в характиристики "вес: 5 кг"
Вроде бы странно но когда удалил "кг" характеристика производитель в филтре появилась.

сайт __http://all-pumps.kiev.ua/
  • 0

#224 badisoft

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

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

Отправлено 29 August 2012 - 10:15 AM

сайт __http://all-pumps.kiev.ua/

http://vsupport.club/topic/922-%D0%B4%D0%B5%D0%BB%D0%B0%D0%B5%D0%BC-%D1%80%D0%B0%D0%B7%D0%B2%D0%B5%D1%81%D0%B8%D1%81%D1%82%D1%8B%D0%B9-%D1%84%D0%B8%D0%BB%D1%8C%D1%82%D1%80-%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%BE%D0%B2-%D0%BE%D0%B1%D0%BA%D0%B0%D1%82%D0%BA%D0%B0-%D0%BD%D0%B0%D0%BF/page__st__180__p__21265#entry21265

PS. Задолбало писать одно и то же. Я не телепат и не гадалка, я не умею использовать кофейную гущу или карты Таро. Как я по внешнему виду сайта догадаюсь о причинах Вашей проблемы? :)
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#225 yura

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

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

Отправлено 25 September 2012 - 10:15 PM

badisoft, а есть какое-нибудь ограничение в фильтре по количеству обрабатываемых значений характеристик?
Сейчас поясню, вопрос.
Есть категория, в которой перестал работать фильтр для одной из характеристик. -Прикрепленный файл  11.jpg   48.16К   24 Количество загрузок: (характеристика есть, в фильтре не отображается, хотя для этой характеристика задан вывод в фильтре в виде строки для произвольного поиска. - Прикрепленный файл  12.jpg   28.41К   32 Количество загрузок:
Если перенести, например, 20 товаров из этой категории в другую, там фильтр включается. - Прикрепленный файл  13.jpg   41.62К   24 Количество загрузок: Если переношу 40 товаров - перестает работать.
Не пойму в чем дело, у меня в другой категории больше 300 товаров с аналогичной категорией и там фильтр работает нормально (( Но там меньшее количество значений у этой характеристики, может в этом дело?
  • 0

#226 badisoft

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

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

Отправлено 26 September 2012 - 08:59 AM

а есть какое-нибудь ограничение в фильтре по количеству обрабатываемых значений характеристик?

Да. LIMIT 1000 в advanced_search_in_category.php.
Сначала (на всякий случай) это было LIMIT 200, потом я увеличил до тысячи, но иногда LIMIT надо убрать совсем или сделать еще на нолик-два больше. В последней версии я убрал, но врядли у Вас последняя версия. В ней никаких изменений от предпоследней кроме закомментированного LIMITа.

Не факт, что дело именно в этом, но попробуйте.
  • 1
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#227 yura

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

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

Отправлено 26 September 2012 - 03:51 PM

badisoft, спасибо - помогло. Стоял LIMIT 200, исправил на 10000 - заработало.
  • 0

#228 pavelbred

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

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

Отправлено 03 October 2012 - 01:29 PM

Извините за глупый вопрос. Устанавливаем модуль с начала поста, а после перечитываем весь пост и исправляем ошибки?
  • 0

#229 badisoft

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

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

Отправлено 03 October 2012 - 07:21 PM

Устанавливаем модуль с начала поста, а после перечитываем весь пост и исправляем ошибки?

Думаю, достаточно прочитать первый пост темы. Не посмотреть на него, а прочитать.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#230 pavelbred

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

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

Отправлено 08 October 2012 - 10:16 AM

Вопрос разработчику. У меня есть прога, наверное вы знаете ее Etrade Content Creator. Так вот она выгружает характеристики товаров. В вашем фильтре я включаю характеристики для вывода. А вот в товарах программа подставляет к характеристикам произвольные значения. Но в характеристиках товара приходится вручную выбирать это же число через кнопку настроить. Как сделать чтобы фильтр брал произвольное значение? По моему такой принцип был у стандартного фильтра в shopcms.
  • 0

#231 badisoft

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

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

Отправлено 08 October 2012 - 11:50 AM

А вот в товарах программа подставляет к характеристикам произвольные значения

Видимо, разработчики выгрузки (или туннеля - я не помню уже) для ShopCMS выбрали наиболее простой путь - "товар-произвольная-характеристика", а не "товар-ссылка-на-характеристику-из-списка". Они же не могут автоматически определить, как именно будет правильно.

Как сделать чтобы фильтр брал произвольное значение?

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

По моему такой принцип был у стандартного фильтра в shopcms

См. выше. Штатно задавалось для каждой категории отдельно, а у меня в админке для всех категорий скопом, т.к. в категории настройки фильтра нет.

Проблему можно решить и с другой стороны. На shopcms.ru в разделе "Документация" (или как-то похоже) описан формат CSV-файла. Формат харатеристик "произвольной строкой" и "списком вариантов" отличается очень не сильно. Фигурными скобками, насколько я помню.
Выводите из Content Creator в CSV, редактируйте CSV и заливайте штатным способом.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#232 pavelbred

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

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

Отправлено 08 October 2012 - 12:58 PM

Но произвольное значение ведь только одно, а не несколько.
  • 0

#233 badisoft

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

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

Отправлено 08 October 2012 - 06:20 PM

Но произвольное значение ведь только одно, а не несколько.

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

Но произвольное значение ведь только одно, а не несколько

Предположим, что я правильно понял ненаписанное. Что вовсе не факт :).

Почему-то никого не удивляет, что при загрузке CSV-файла, где характеристики (пусть даже одна для каждого товара) заключены в фигурные скобки - вполне попадают в ВАРИАНТЫ характеристик. А если без фигурных скобок, то в ПРОИЗВОЛЬНЮ СТРОКУ.

PS. может таки прочитать описание формата CSV-файла ShopCMS на официальном сайте? Ей богу, отпадут многие вопросы.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#234 artnet

    Новичок

  • Пользователи
  • Pip
  • 1 сообщений
Репутация: 0
Начинающий

Отправлено 17 October 2012 - 04:28 PM

Установил фильтры, работает только первый фильтр с ползунком цены, а остальные два не отображаются. В товарах характеристики есть.
сайт http://matras.vn.ua/matras-matroluxe/
  • 0

#235 badisoft

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

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

Отправлено 17 October 2012 - 06:30 PM

Я не вижу по ссылке вообще ни одного фильтра. Ни первого, ни остальных.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#236 gsm-group

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

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

Отправлено 20 October 2012 - 05:08 PM

Поигрался с фильтром. Я думаю будет красивее когда Filtr.tpl.html, не полностью сворачиваться будет, а характеристика, при нажатии на которую выпадут возможные значения.
И так:
Содержимое Filtr.tpl.html.
{* С?аблон фильтра товаров *}
{* шаблон фильтра товаров *}
<div align="left">
<div class="fil"></div>
  <form name="AdvancedSearchInCategory" method="get" action="index.php" id="AdvancedSearchInCategory">
{* входные данные формы *}
{* входные данные формы *}
	<input type='hidden' name='categoryID' value='{$categoryID}'>
	{if $categories_to_select}
	<input type='hidden' name='search_with_change_category_ability' value='yes'>
	{else}
	<input type='hidden' name='search' value='1'>
	{/if}
	<b>{$smarty.const.STRING_NAME}</b><br>
	<input type="text" name="search_name" style="width: 150px; margin-top: 2px;" value="{$search_name|default:""}">
	<b>{$smarty.const.STRING_PRODUCT_PRICE}</b><br> {* текст 'Цена' Текст 'Цена'*}
	<div class="fil"></div>
<script>
{literal}
$(function() {
  $("#slider").slider({
	{/literal}
	range:true,
	min:{$old_search_price_from},
	max:{$old_search_price_to},
	values:[{$search_price_from},{$search_price_to}],
	step:1,
	{literal}
	slide:function(event,ui) {
	  $("#price_from").val(ui.values[0]);
	  $("#price_to").val(ui.values[1]);
	  }
  });
  {/literal}
  $("#price_from").val({$search_price_from});
  $("#price_to").val({$search_price_to});
  $("#old_price_from").val({$old_search_price_from});
  $("#old_price_to").val({$old_search_price_to});
{literal}
});
{/literal}
</script>
<div id="slider"></div>
<div class="fil"></div>
	<table cellspacing="0" cellpadding="0" style="margin-top: 2px;">
	  <tr>
		<td valign="middle">{$smarty.const.STRING_PRICE_FROM} {* текст 'от' *}
		  <input name="search_price_from" type="text" id="price_from" style="width:40px">
		  <input name="old_search_price_from" type=hidden id="old_price_from">
		  {$smarty.const.STRING_PRICE_TO} {* текст 'до' *}
		  <input name="search_price_to" type="text" id="price_to" style="width: 40px"> {$priceUnit}</td>
		  <input name="old_search_price_to" type=hidden id="old_price_to">
	  </tr>
	</table>
	<div class="fil"></div>
	<input type="button" value="{$smarty.const.VIEW_BUTTON}" onclick="validate_search(this); return false">
	<input type="button" value="Reset All" onclick="{section name=n loop=$params}
													{if $params[n].controlIsTextField eq 0}
													document.getElementById('param_{$params[n].optionID}').checked = true;
														{section name=k loop=$params[n].variants}
														document.getElementById('par_{$params[n].optionID}_{$params[n].variants[k].variantID}').checked = false;
														{/section}
													{else}  
													document.getElementById('param_{$params[n].optionID}').value = '';
													{/if}
													{/section}">
	{if $params}
<ul id="filtr_pro" class="sample-filter">
	{section name=i loop=$params}
	{if $params[i].filter1 eq 1}

	<li><a href="#"><b>{$params[i].name}</b></a>
<ul>
  <li>
	{if $params[i].controlIsTextField eq 1}
	<input type="text" style="width: 150px;" name='param_{$params[i].optionID}' id='param_{$params[i].optionID}' value='{$params[i].set|default:""}'>
	{else}
	  <label><input type="radio" name='param_{$params[i].optionID}' id='param_{$params[i].optionID}' value='0' onclick="{section name=k loop=$params[i].variants}document.getElementById('par_{$params[i].optionID}_{$params[i].variants[k].variantID}').checked = false;{/section}" {$params[i].set}>{$smarty.const.STRING_UNIMPORTANT}</label>
	  <label><input type="radio" name='param_{$params[i].optionID}' id='all_{$params[i].optionID}' value='0' onclick="{section name=k loop=$params[i].variants}document.getElementById('par_{$params[i].optionID}_{$params[i].variants[k].variantID}').checked = true;{/section}document.getElementById('all_{$params[i].optionID}').checked = false;">Все</label><br>
   {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}' id='par_{$params[i].optionID}_{$params[i].variants[j].variantID}' value='{$params[i].variants[j].variantID}' onclick="document.getElementById('param_{$params[i].optionID}').checked = false;">{$params[i].variants[j].value|default:""} ({$params[i].variants[j].count})</label><br>
   {/section}

	</select>
	{/if}
  </li>
</ul>
	{/if}
	{/section}
</ul>
	{/if}
	{if $show_subcategory_checkbox}
	{if $show_subcategories_products}
	<input type="hidden" value='1' name='search_in_subcategory'>
	{else}
	<div class="fil"></div>
	<table cellspacing="0" cellpadding="0">
	  <tr>
		<td valign="middle"><input type="checkbox" class="radio" value='1' name='search_in_subcategory' {if $search_in_subcategory}checked{/if}></td>
		<td valign="middle"> {$smarty.const.STRING_SEARCH_IN_SUBCATEGORIES}</td>
	  </tr>
	</table>
	{/if}
	{/if}
	<div class="fil"></div>
	<div class="fil"></div>
	<input type="button" value="{$smarty.const.VIEW_BUTTON}" onclick="validate_search(this); return false">
	<input type=hidden value='1' name='advanced_search_in_category'>
  </form>
</div>
{literal}
<script type="text/javascript">
$(document).ready(function() {
$('ul#filtr_pro ul').each(function(i) { // Check each submenu:
  if ($.cookie('submenuMark-' + i)) {  // If index of submenu is marked in cookies:
   $(this).show().prev().removeClass('collapsed').addClass('expanded'); // Show it (add apropriate classes)
  }else {
   $(this).hide().prev().removeClass('expanded').addClass('collapsed'); // Hide it
  }
  $(this).prev().addClass('collapsible').click(function() { // Attach an event listener
   var this_i = $('ul#filtr_pro ul').index($(this).next()); // The index of the submenu of the clicked link
   if ($(this).next().css('display') == 'none') {
	$(this).next().slideDown(200, function () { // Show submenu:
	 $(this).prev().removeClass('collapsed').addClass('expanded');
	 cookieSet(this_i);
	});
   }else {
	$(this).next().slideUp(200, function () { // Hide submenu:
	 $(this).prev().removeClass('expanded').addClass('collapsed');
	 cookieDel(this_i);
	 $(this).find('ul').each(function() {
	  $(this).hide(0, cookieDel($('ul#filtr_pro ul').index($(this)))).prev().removeClass('expanded').addClass('collapsed');
	 });
	});
   }
  return false; // Prohibit the browser to follow the link address
  });
});
});
function cookieSet(index) {
$.cookie('submenuMark-' + index, 'opened', {expires: null, path: '/'}); // Set mark to cookie (submenu is shown):
}
function cookieDel(index) {
$.cookie('submenuMark-' + index, null, {expires: null, path: '/'}); // Delete mark from cookie (submenu is hidden):
}
</script>
{/literal}

В head.tpl
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.cookie.js"></script>
В style.css
/* Filters styles */
ul.sample-filter{ padding:0;margin:0; }
ul.sample-filter li { padding:2px 0;margin:0;list-style:none; }
ul.sample-filter li ul { padding:0;margin:0 0 0 15px; }
ul#filtr_pro a { padding-left:8px; }
ul#filtr_pro a.collapsed { background:url('collapsed.gif') left 6px no-repeat; }
ul#filtr_pro a.expanded { background:url('expanded.gif') left 6px no-repeat; }
collapsed.gif и expanded.gif рисуйте сами ( у меня плюс и минус соответственно )

Упс, забыл закрывающий тег.
Это:
	{/if}
  </li>
</ul>
	{/if}
	{/section}
</ul>
Меняем на это:
     {/if}
  </li>
</ul>
</li>
	{/if}
	{/section}
</ul>

  • 0

#237 gsm-group

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

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

Отправлено 20 October 2012 - 07:55 PM

9. в russian.php меняем "неважно" на "не важно"

Только что обратил внимание.
Правильно: НЕВАЖНО
Пишется слитно. Это наречие, а наречие не имеет предлогов. А вот если бы в предложении имелось противопоставление, нужно было бы писать раздельно.
Пример: Расположился на скамье он не важно, а очень скромно, на краешке.
  • 0

#238 Dbus

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

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

Отправлено 20 October 2012 - 08:32 PM

- Важно - неважно... неважно - важно...
Ну не важно, конечно, неважно. © Алиса в стране чудес

:)
  • 0
502 Bad Gateway

#239 Atmega64

    Новичок

  • Пользователи
  • Pip
  • 2 сообщений
Репутация: 0
Начинающий

Отправлено 29 October 2012 - 03:55 PM

хороший модуль. попробовал поставил, всё, вроде завелось.

но поймал вот занятный глюк: при нажатии кнопки "показать" поиск работает по всему каталогу (а не по текущему разделу)... не пойму в чём может быть дело.

кто-нибудь с таким сталкивался?
  • 0

#240 badisoft

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

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

Отправлено 29 October 2012 - 04:45 PM

при нажатии кнопки "показать" поиск работает по всему каталогу (а не по текущему разделу)

Мне сильно поможет ссылка на сайт с описанием, что нужно сделать, чтобы я увидел ошибку.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)