Разыскиваются фильтры для shop-script

Статус
В этой теме нельзя размещать новые ответы.
всё равно как то туговато....
а вот он ищет в базе в столбце name...
а как сделать чтоб и из столбца product_code искал???
 
всё равно как то туговато....
а вот он ищет в базе в столбце name...
а как сделать чтоб и из столбца product_code искал???
если не нужен стандартный поиск то отредактировать запрос к базе. если нужен то продублировать фукцию поиска.
только не понимаю нафига такой заворот? если тот кто будет забивать товары в магазин криварукий и в найм будет пихать всякую фигню то он с таким же успехом и продукт_коде напихает чушь.
 
В Shop-Script есть функция расширенного поиска, однако, почему-то отсутствует шаблон.
Причем не только у меня (при том, что у меня лицензия), но и у половины Рунета.

Расширенный поиск вызывается запросом:
index.php?adv_search=yes

Например:
hxxp://www.triabc.ru/?adv_search=yes

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

Алгоритма поиска может быть 2:

Вариант I. Простой (выборка на основе текста)

а) Для товара создается дополнительный параметром, на основе которого будет производиться выборка.Например, создаем параметр модель.
б) Далее осуществляется поиск в базе данных , всех товаров у которых дополнительный параметр модель = название модели.

Вариант II. Улучшенный (иерархия + индексы)
а) Создаем дополнительный параметр с числовыми индексами (Акура = 1, Хонда = 2 и т.д.)
б) Создаем и подключаем php-массив с номерами марок и названий
в) Далее можно делать гораздо более быстрые выборки по маркам.

Насколько я понял по коду файлов SS - все это уже реализовано, поэтому сначала необходимо дождаться шаблона.
 
В Shop-Script есть функция расширенного поиска, однако, почему-то отсутствует шаблон.
Причем не только у меня (при том, что у меня лицензия), но и у половины Рунета.

Расширенный поиск вызывается запросом:
index.php?adv_search=yes

Например:
hxxp://www.triabc.ru/?adv_search=yes

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

Алгоритма поиска может быть 2:

Вариант I. Простой (выборка на основе текста)

а) Для товара создается дополнительный параметром, на основе которого будет производиться выборка.Например, создаем параметр модель.
б) Далее осуществляется поиск в базе данных , всех товаров у которых дополнительный параметр модель = название модели.

Вариант II. Улучшенный (иерархия + индексы)
а) Создаем дополнительный параметр с числовыми индексами (Акура = 1, Хонда = 2 и т.д.)
б) Создаем и подключаем php-массив с номерами марок и названий
в) Далее можно делать гораздо более быстрые выборки по маркам.

Насколько я понял по коду файлов SS - все это уже реализовано, поэтому сначала необходимо дождаться шаблона.

У меня вызов /?adv_search=yes работает, и в папке шаблонов есть search_adv.tpl.html, а в includes => search_adv.php
После запуска дает возможность искать по наименованию, и следующим полем "Название категории::" и там нельзя ничего выбрать кроме "не имеет значения".

По наименовании ищет нормально, я просто ни в smarty ни PHP не силен, так что не разберусь как он внутри работает, если кто нибудь использовал этот шаблон отзовитесь.
 
shadow2k

Выложите шаблон в данную ветку в rar|zip архиве - я посмотрю.

+ опишите задачу более конкретно (описание в начале непонятное)
 
Собсно то же самое, что и у shadow2k. Файл шаблона есть, но в поле "Название категории" нельзя ничего выбрать кроме "не имеет значения".
Посмотреть вложение search_adv.tpl.rar
2shadow2k: выкладывайте свой файл, сравним.
 
у меня чето шаблоны в браузере глючат...
 
это index.php?adv_search=yes истинно для версии премиум? у меня в про такого не наблюдаеться
 
озаботился этим вопросом и родил вот что:

1. небольшое изменение БД:
Код:
MySQL:
alter table SS_product_options ADD topCategoryID INT(11) NOT NULL default 2

2.
файл /core_functions/category_functions.php
перед
function update_products_Count_Value_For_Categories($parent){
нужно вставить
PHP:
function update_Categories_Options_RootCat_Variants($CatID, $RootCatID, $OptionID, $variants){
	
	$q = db_query("SELECT categoryID FROM ".CATEGORIES_TABLE.
		" WHERE parent=$CatID AND categoryID<>1") or die (db_error());
	// process subcategories
	while( $row=db_fetch_row($q) ){
		update_Categories_Options_RootCat_Variants( $row["categoryID"], $RootCatID, $OptionID, $variants );
	}

	$q = db_query("INSERT INTO ".CATEGORY_PRODUCT_OPTIONS_TABLE." (optionID, categoryID, set_arbitrarily) VALUES ('$OptionID', '$CatID', '0')") or die("error inserting options for category");
	foreach($variants as $variant){
		$q = db_query("INSERT INTO ".CATEGORY_PRODUCT_OPTION_VARIANTS." (optionID, categoryID, variantID) VALUES ('$OptionID', '$CatID', '$variant')") or die("error inserting variant for category");
		
	}
	return true;
}


function update_Categories_Options_Variants(){
	$q = db_query("truncate table ".CATEGORY_PRODUCT_OPTIONS_TABLE )or die("cant truncate");
	$q = db_query("truncate table ".CATEGORY_PRODUCT_OPTION_VARIANTS )or die("cant truncate");
				
	$q = db_query("SELECT categoryID FROM ".CATEGORIES_TABLE.
		" WHERE parent=1 AND categoryID<>1") or die (db_error());
	// process all root categories
	while( $row=db_fetch_row($q) ){
		$q2 = db_query("SELECT optionID FROM ".PRODUCT_OPTIONS_TABLE." WHERE topCategoryID = '".$row["categoryID"]."' LIMIT 1");
		$row2=db_fetch_row($q2);
		$optionID = $row2["optionID"];
		
		$q2 = db_query("SELECT variantID FROM ".PRODUCTS_OPTIONS_VALUES_VARIANTS_TABLE." WHERE optionID = '".$row2["optionID"]."' ORDER BY sort_order, variantID");
		$variants = array();
		while($row2=db_fetch_row($q2)){
			$variants[] = $row2["variantID"];
		}
		update_Categories_Options_RootCat_Variants( $row["categoryID"],  $row["categoryID"], $optionID, $variants);
	}
	return true;
}

функцию
catGetCategoryById($categoryID) заменить на
PHP:
function catGetCategoryById($categoryID)
{
	$categoryID = (int)$categoryID;
	$q = db_query("select categoryID, name, parent, products_count, description, picture, ".
		" products_count_admin, sort_order, viewed_times".
		", allow_products_comparison".
		", allow_products_search".
		", show_subcategories_products, meta_description, meta_keywords ".
		"  from ".CATEGORIES_TABLE.
		" where categoryID=$categoryID");
	$res = db_fetch_row($q);
	$level = 1; #maybe main category
	$parent = $res['parent'];
	while($parent!=1){
		$level ++;
		$qtmp = db_query("select parent from ".CATEGORIES_TABLE.
			" where categoryID=$parent");
		$restmp = db_fetch_row($qtmp);
		if($restmp['parent'] == 1){# calculating TOP directory ID
			$res['topCategoryID'] = $parent;
		}
		$parent = $restmp['parent'];
	}
	$res['level'] = $level;
	return $res;
}

3. /core_functions/configurator_functions.php

все вхождения
PHP:
SELECT optionID, name
заменить на
Код:
SELECT optionID, name, topCategoryID

простите - очень долго описывать ВСЕ изменения, которые внес.

Идея такая: что каждой главной подкатегории соответствует своя опция.
для категорий выводятся только те опции, которые относятся к данной главной подкатегории

для товаров тоже стоят фильтры на smarty шаблонах и в
php файлах

на кнопку "обновить кол-ва товаров для категорий"
вешается также постановка нужных опций и вариантов для всех категорий

в выборе опций и вариантов для товара тоже отображается только та опция, которая относится к его главной подкатегории.

в принципе несложно все.

закинул те файлы, которые изменял по сравнению с версией 1.26 SS Premium

front-end шаблоны еще в процессе правки, так что не обессутьте

работает прекрасно
 

Вложения

  • www.zip
    89,8 KB · Просмотры: 49
Сортировка в результатах

Извините если не совсем в тему, тем не менее, подскажите, а КАК сделать (где копать) сортировку результатов поиска, чтобы например сначала выводились позиции товара найденные в Названии. а потом уже все остальные? и НЕ в алфавитном порядке? или вообще поиск шел ТОЛЬКО по названию товаров (т.е. если запрос встречается в описаниях или еще где, то эти товары НЕ выводятся в результатах)?
Я имею в виду Простой поиск (не advanced), это очень важно.
Спасибо.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху