Как прописать аналоги?
#1
Отправлено 20 February 2012 - 08:06 AM
Подскажите, как на странице подробного описания товара добавить его аналоги (например, вместо "Рекомендуем")?
Заранее спасибо за подсказку!
[MOD="micehide"]Наработки переросли в целое дополнение, поэтому перемещаемся сюда: http://vsupport.club/t1033.html[/MOD]
#2
Отправлено 20 February 2012 - 08:49 AM
Подскажите, как на странице подробного описания товара добавить его аналоги (например, вместо "Рекомендуем")?
как раз занимаюсь этим.... реализацию предполагаю через meta_keywords, если слова товаров пересекаются, то выводить как "рекомендуем"
#3
Отправлено 20 February 2012 - 12:16 PM
как раз занимаюсь этим.... реализацию предполагаю через meta_keywords, если слова товаров пересекаются, то выводить как "рекомендуем"
хм... а что отличная идея.
#4
Отправлено 20 February 2012 - 12:29 PM
+1. dorian, если сделаете - выкладывайте, всем полезно будет...хм... а что отличная идея.
#5
Отправлено 20 February 2012 - 12:55 PM
ок! вопрос только во времени, когда это делатьdorian, если сделаете - выкладывайте, всем полезно будет...
#6
Отправлено 20 February 2012 - 07:14 PM
#7
Отправлено 20 February 2012 - 09:36 PM
1) PHP: similar_text - Manual -- сравнение строк в процентах
2) PHP: metaphone - Manual ___ http://php.net/manua...levenshtein.php --- приведение к общему стандарту
3)
$right = file("twl06.txt");
$file = fopen($argv[1], "r");
$input = fgets($file);
fclose($file);
$input = split(" ", $input);
$mark = 0;
foreach($input as $val)
{
$min = 256;
$val = strtoupper(trim($val));
foreach($right as $cool)
{
$cool = trim($cool);
$min = min(levenshtein($val, $cool), $min);
if($min == 0) break;
}
$mark += $min;
}
print $mark."\n";
?>
фраза с наименьшим значением функции Левенштейна скорее всего и есть тем, что хотел пользователь. В крайнем случае можно сделать что-то вроде выбора
4) формировка масива smarty или просто вывод из php
#8
Отправлено 20 February 2012 - 10:07 PM
#9
Отправлено 20 February 2012 - 10:17 PM
eugene_wb, а можно немного подробнее?
5сек, доделываю пример
---------- Сообщение объединено ----------
Рабочий пример (проверил), можете закачать в корень магазина и посмотреть принцип работы, если вдруг чего не понятно в 3 строчках спрашивайте
require_once "core/config/connect.inc.php";
require_once "core/includes/database/mysql.php";
db_connect(DB_HOST,DB_USER,DB_PASS);
db_select_db(DB_NAME);
$search_for_similar_meta_tags = db_fetch_assoc(db_query("SELECT meta_description,meta_keywords FROM ".DB_PRFX."products WHERE productID=1"));
$similar_meta_tags = db_query("SELECT meta_description,meta_keywords FROM ".DB_PRFX."products");
while( $row = db_fetch_row($similar_meta_tags) )
{
similar_text(metaphone($search_for_similar_meta_tags["meta_keywords"]),metaphone($row["meta_keywords"]),$sim);
print $row["meta_keywords"]." --- ".$search_for_similar_meta_tags["meta_keywords"]." --- ".$sim."
\n";
}
?>
1)
-- здесь должен подставлятся текущий ID товара$search_for_similar_meta_tags = db_fetch_assoc(db_query("SELECT meta_description,meta_keywords FROM ".DB_PRFX."products WHERE productID=1"));
2)
-- переменная процентного соответствия, если допустим больше 80, то товар похожий и его выводить$sim
3) если есть желание ограничить список вывода, например 8 позиций то тут
стоит использовать mysql LIMIT примерно так$similar_meta_tags = db_query("SELECT meta_description,meta_keywords FROM ".DB_PRFX."products");
$similar_meta_tags = db_query("SELECT meta_description,meta_keywords FROM ".DB_PRFX."products LIMIT 0,8");
#10
Отправлено 20 February 2012 - 11:10 PM
#11
Отправлено 20 February 2012 - 11:14 PM
eugene_wb, с кодом попробую разобраться, а вот как подключить это к product_detailed.tpl.html ?
либо с помощью {php} либо с помощью smarty, но это уже домашнее задание
примеров в файлах движка полно ))
P.S. советую обратить внимание на core/includes/home.php -- как пример для выгрузки масива smarty, и на core/includes/product_detailed.php -- как файл, куда стоит вставлять масив, который потом использовать в шаблоне
#12
Отправлено 21 February 2012 - 02:08 AM
Все работает четко, если разница в meta_keywords в 2 знака, то выдает 100%, если в 3 знака 99,9% и т.д. (это при длинне самого этого мета-тега 35-40 символов). Вообще-то по уму туда нужно напихать все дополнительные характеристики товара, чтобы по ним и сравнивать...Рабочий пример (проверил), можете закачать в корень магазина и посмотреть принцип работы, если вдруг чего не понятно в 3 строчках спрашивайте
voyt67, проще всего (если выводить в подробном описании товара) создать новый блок (на основе, например, "Популярные (статика)"), а код, приведенный eugene_wb, разместить в файле core\includes\product_detailed.php. Для "выбора" meta_keywords текущего товара (с которым будем сравнивать) - использовать функцию prdGetMetaKeywordTag из файла core\functions\product_functions.php - нужно в ней поменять meta_description на meta_keywords в 2-х местах.. Изменить эту функцию можно при условии, что она нигде у вас не используется (поищите глобальным поиском).
В результате можно получать просто ID подпавших под условие $sim >= 80 товаров и выводить их также как и выводятся, например, новые или популярные товары из соответствующих блоков...
#13
Отправлено 21 February 2012 - 08:12 AM
Таким образом, логика получается следующая: при условии совпадения характеристик, товары бы отбирались в качестве рекомендуемых. Ну и было бы вообще замечательной возможность указывать по каким именно характеристикам производить сопоставление и максимальное количество аналогов для каждого товара.
И здесь еще не упомянули, что рекомендумые товары можно импортировать в таблицу product_related в БД магазина. Так что необязательно ручками все делать через админку.
#14
Отправлено 22 February 2012 - 12:38 AM
А не будет ли такая конструкция слишком массивна, т.к. придется обрабатывать огромную таблицу доп. характеристик, записывая значения в массив? С другой стороны, действительно, придется в keywords дублировать некоторые (нужные для сравнения) характеристики, а затем уже по ним сравнивать. Но все же, скорость обработки данных, ИМХО, должна быть на первом месте. Например, можно придумать как автоматически прописать в keywords нужные характеристики...Но, на мой взгляд, было бы логичнее и удобнее делать привязку не по тегам в keywords, мы ведь не статьи линкуем между собой, а по характеристикам товаров. Иначе пришлось бы по сути в keywords дублировать те же самые характеристики, чтобы добиться соответствия.
Кстати, строковые функции сравнения в данном случае не работают, т.к. они зависимы от расстановки слов, а также нужно сначала весь текст переводить в транслит. Я лично написал простым сравнением 2-х массивов, состоящих из "тегов" или попросту нужных (определяющих) характеристик. Вычисляем процент совпадения этих массивов и выводим результат.
Это вы имеете ввиду доп. модуль?И здесь еще не упомянули, что рекомендумые товары можно импортировать в таблицу product_related в БД магазина. Так что необязательно ручками все делать через админку.
#15
Отправлено 22 February 2012 - 12:37 PM
в product_detailed.tpl.html в {php}{/php} вставляем код типа этого
$x = db_query("SELECT meta_keywords FROM prefix_products WHERE productID=".$productID);
потом все полученные мета-теги, разделить в массив и пока не конец массива делать запрос
SELECT productID, name, Price FROM prefix_products WHERE meta_keywords LIKE %".$tags['$index']."%"
и проверять, если данные получены, то выводить товар echo "".$prodNAME." ".$prodPRICE";
только вот как это все сделать php кодом - лично мне нужно долго вспоминать, а то уже лет 5 на php ничего не писАл
---------- Сообщение объединено ----------
экспортировать? ну тогда нужно писать парсер, который проходит все товары, и схожие заносит в таблицу, и при добавлении новых товаров, делать обход этим парсером сновачто рекомендумые товары можно импортировать в таблицу product_related в БД магазина
---------- Сообщение объединено ----------
было бы логичнее и удобнее делать привязку не по тегам в keywords, мы ведь не статьи линкуем между собой, а по характеристикам товаров. Иначе пришлось бы по сути в keywords дублировать те же самые характеристики, чтобы добиться соответствия.
Таким образом, логика получается следующая: при условии совпадения характеристик, товары бы отбирались в качестве рекомендуемых. Ну и было бы вообще замечательной возможность указывать по каким именно характеристикам производить сопоставление и максимальное количество аналогов для каждого товара.
не логичнее, т.к. если у тебя больше 5000 товаров в магазине, и для каждого задать характеристики для перелинковки, то это можно делать до самой старости
а так, если к примеру товар -
кровать, у нее мета-теги: кровать, _матрас, 160х190, название и т.д.
матрас, у него задать мета-теги _матрас, 160х190, название, модель и т.д.
то тогда, при просмотре кровати На странице product_detailed нам автоматом предлагается купить матрас 160х190
и т.д.
#16
Отправлено 22 February 2012 - 02:47 PM