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


Как прописать аналоги?


  • Закрытая тема Тема закрыта
Сообщений в теме: 15

#1 voyt67

    Пользователь

  • Download User
  • PipPip
  • 22 сообщений
Репутация: 0
Начинающий
  • ГородМосква

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

Приветствую, коллеги!
Подскажите, как на странице подробного описания товара добавить его аналоги (например, вместо "Рекомендуем")?

Заранее спасибо за подсказку!

[MOD="micehide"]Наработки переросли в целое дополнение, поэтому перемещаемся сюда: http://vsupport.club/t1033.html[/MOD]
  • 0
Оптово-розничный магазин свинцово-кислотных аккумуляторов и зарядных устройств - http://akbshop.com

#2 dorian

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

  • Assistent vsupport.club
  • PipPipPip
  • 107 сообщений
Репутация: 24
Ассистент

Отправлено 20 February 2012 - 08:49 AM

Подскажите, как на странице подробного описания товара добавить его аналоги (например, вместо "Рекомендуем")?


как раз занимаюсь этим.... реализацию предполагаю через meta_keywords, если слова товаров пересекаются, то выводить как "рекомендуем"
  • 0

#3 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

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

как раз занимаюсь этим.... реализацию предполагаю через meta_keywords, если слова товаров пересекаются, то выводить как "рекомендуем"


хм... а что отличная идея.
  • 0

#4 micehide

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

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

Отправлено 20 February 2012 - 12:29 PM

хм... а что отличная идея.

+1. dorian, если сделаете - выкладывайте, всем полезно будет...
  • 0

#5 dorian

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

  • Assistent vsupport.club
  • PipPipPip
  • 107 сообщений
Репутация: 24
Ассистент

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

dorian, если сделаете - выкладывайте, всем полезно будет...

ок! вопрос только во времени, когда это делать :)
  • 0

#6 dorian

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

  • Assistent vsupport.club
  • PipPipPip
  • 107 сообщений
Репутация: 24
Ассистент

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

может быть закинуть тему фрилансерам? пусть скажут цену написания данного модуля? а то если даже в магазине 1000 товаров, и для каждого задать рекомендованные - это же умом тронуться можно :) а мета-кейворды можно через импорт-экспорт прописать :)
  • 0

#7 eugene_wb

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

  • Модераторы
  • 827 сообщений
Репутация: 167
Мастер

Отправлено 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
  • 0
Изображение Изображение Изображение

#8 voyt67

    Пользователь

  • Download User
  • PipPip
  • 22 сообщений
Репутация: 0
Начинающий
  • ГородМосква

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

eugene_wb, а можно немного подробнее?
  • 0
Оптово-розничный магазин свинцово-кислотных аккумуляторов и зарядных устройств - http://akbshop.com

#9 eugene_wb

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

  • Модераторы
  • 827 сообщений
Репутация: 167
Мастер

Отправлено 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)

$search_for_similar_meta_tags = db_fetch_assoc(db_query("SELECT meta_description,meta_keywords FROM ".DB_PRFX."products WHERE productID=1"));

-- здесь должен подставлятся текущий ID товара
2)

$sim

-- переменная процентного соответствия, если допустим больше 80, то товар похожий и его выводить
3) если есть желание ограничить список вывода, например 8 позиций то тут

$similar_meta_tags = db_query("SELECT meta_description,meta_keywords FROM ".DB_PRFX."products");

стоит использовать mysql LIMIT примерно так

$similar_meta_tags = db_query("SELECT meta_description,meta_keywords FROM ".DB_PRFX."products LIMIT 0,8");


  • 0
Изображение Изображение Изображение

#10 voyt67

    Пользователь

  • Download User
  • PipPip
  • 22 сообщений
Репутация: 0
Начинающий
  • ГородМосква

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

eugene_wb, с кодом попробую разобраться, а вот как подключить это к product_detailed.tpl.html ?
  • 0
Оптово-розничный магазин свинцово-кислотных аккумуляторов и зарядных устройств - http://akbshop.com

#11 eugene_wb

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

  • Модераторы
  • 827 сообщений
Репутация: 167
Мастер

Отправлено 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 -- как файл, куда стоит вставлять масив, который потом использовать в шаблоне
  • 0
Изображение Изображение Изображение

#12 micehide

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

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

Отправлено 21 February 2012 - 02:08 AM

Рабочий пример (проверил), можете закачать в корень магазина и посмотреть принцип работы, если вдруг чего не понятно в 3 строчках спрашивайте

Все работает четко, если разница в meta_keywords в 2 знака, то выдает 100%, если в 3 знака 99,9% и т.д. (это при длинне самого этого мета-тега 35-40 символов). Вообще-то по уму туда нужно напихать все дополнительные характеристики товара, чтобы по ним и сравнивать...

voyt67, проще всего (если выводить в подробном описании товара) создать новый блок (на основе, например, "Популярные (статика)"), а код, приведенный eugene_wb, разместить в файле core\includes\product_detailed.php. Для "выбора" meta_keywords текущего товара (с которым будем сравнивать) - использовать функцию prdGetMetaKeywordTag из файла core\functions\product_functions.php - нужно в ней поменять meta_description на meta_keywords в 2-х местах.. Изменить эту функцию можно при условии, что она нигде у вас не используется (поищите глобальным поиском).

В результате можно получать просто ID подпавших под условие $sim >= 80 товаров и выводить их также как и выводятся, например, новые или популярные товары из соответствующих блоков...
  • 0

#13 Den

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

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

Отправлено 21 February 2012 - 08:12 AM

Да такой модуль с автоматической привязкой товаров друг к другу был бы просто неоценим. Но, на мой взгляд, было бы логичнее и удобнее делать привязку не по тегам в keywords, мы ведь не статьи линкуем между собой, а по характеристикам товаров. Иначе пришлось бы по сути в keywords дублировать те же самые характеристики, чтобы добиться соответствия.
Таким образом, логика получается следующая: при условии совпадения характеристик, товары бы отбирались в качестве рекомендуемых. Ну и было бы вообще замечательной возможность указывать по каким именно характеристикам производить сопоставление и максимальное количество аналогов для каждого товара.

И здесь еще не упомянули, что рекомендумые товары можно импортировать в таблицу product_related в БД магазина. Так что необязательно ручками все делать через админку.
  • 0

#14 micehide

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

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

Отправлено 22 February 2012 - 12:38 AM

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

А не будет ли такая конструкция слишком массивна, т.к. придется обрабатывать огромную таблицу доп. характеристик, записывая значения в массив? С другой стороны, действительно, придется в keywords дублировать некоторые (нужные для сравнения) характеристики, а затем уже по ним сравнивать. Но все же, скорость обработки данных, ИМХО, должна быть на первом месте. Например, можно придумать как автоматически прописать в keywords нужные характеристики...

Кстати, строковые функции сравнения в данном случае не работают, т.к. они зависимы от расстановки слов, а также нужно сначала весь текст переводить в транслит. Я лично написал простым сравнением 2-х массивов, состоящих из "тегов" или попросту нужных (определяющих) характеристик. Вычисляем процент совпадения этих массивов и выводим результат.

И здесь еще не упомянули, что рекомендумые товары можно импортировать в таблицу product_related в БД магазина. Так что необязательно ручками все делать через админку.

Это вы имеете ввиду доп. модуль?
  • 0

#15 dorian

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

  • Assistent vsupport.club
  • PipPipPip
  • 107 сообщений
Репутация: 24
Ассистент

Отправлено 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

и т.д.
  • 0

#16 micehide

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

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

Отправлено 22 February 2012 - 02:47 PM

Выложил пробный код для данного дополнения, вместе с обсуждениями перемещаемся сюда: http://vsupport.club/t1033.html
  • 0