Jump to content

нужно выводить товары из тойже серии на карточке товара по средством тегов на PH 1.4.11


Recommended Posts

Открывается товар:

http://www.lustravik.ru/lustry/400-dia900-pt50-b-hrustalnaja-potolochnaja-lustra-maytoni-diamant-5.html

 

внизу под ним где модуль: Другие товары из той же категории: 30 

 

вместо него нужно чтобы по тегу (серия): Maytoni Diamant 5

 

выдавался товар из той же серии.

теги прописаны.

вот пример выдачи по этому тегу:

http://www.lustravik.ru/search?tag=Maytoni+Diamant+5

Link to comment
Share on other sites

это понятно что нужно писать такой модуль - кто готов помочь в этом?

 

и еще вопрос - можно ли:

на карточке товара на производителе (где цена) поставить
ссылку  на  него  - чтобы можно было нажать и вывелся бы весь товарный
перечень по этому производителю?
а  так же ниже его вывести мета тег который принадлежит карточке этого
товара под названием серия?
ну и если этот тег сделать активным то будет выводиться весь товар под этим тегом
это конечно не совсем то что нужно но хотя бы решит часть задачь сразу же
Link to comment
Share on other sites

  • 1 month later...
  • 3 weeks later...

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

Link to comment
Share on other sites

Вот нашел:

 

// Получаем ID тэгов у товара

$id_tag = 'select `id_tag` from `'._DB_PREFIX_.'product_tag` where `id_product` = 12795';
$result_tag = Db::getInstance()->ExecuteS($id_tag);

// И тут главная проблема в том что если у товара один тэг, то результат будет таким:

Array ( [0] => Array ( [id_tag] => 1 ) )

// А если несколько тэгов то вот так:

Array ( [0] => Array ( [id_tag] => 1 ) [1] => Array ( [id_tag] => 2 ) )

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

// Приведу пример ниже в том случае если мы ищем похожие товары по первому тэгу в списке тэгов:

$first_tag = $result_tag[0]['id_tag'];

// Далее ищем ID товаров у которых есть совпадения по первому тэгу:

$id_products = 'select `id_product` from `'._DB_PREFIX_.'product_tag` where `id_tag` = '.$first_tag.'';
$result_products = Db::getInstance()->ExecuteS($id_products);

//Если у нас несколько товаров то получаем примерно такой массив: 

Array ( [0] => Array ( [id_product] => 12535 ) [1] => Array ( [id_product] => 12795 ) )

// Получаем из массива только нужные значения
foreach($result_products as $k=>$r) {
$result_products[$k] = $r['id_product'];
}
// Преобразуем массив в строчный список значений через запятую

$result_products = implode(", ", $result_products);

// На выходе получаем:

12535, 12795

//И с этим можно уже работать дальше.

//ID языка, 6 это Россия у меня

$id_lang = 6;  // если это модуль то там можно получить это значение автоматически, тогда эту строчку нужно будет просто стереть.

// Получаем список товаров
$getproducts = 'select p.*, pl.*
                FROM `'._DB_PREFIX_.'product` p
                LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product`)
                WHERE p.`id_product` IN ( '.$result_ids.' ) AND pl.`id_lang` = '.(int)($id_lang).'
               ';
$tag_products = Db::getInstance()->ExecuteS($getproducts);

Далее выводим полученные товары в шаблон:

self::$smarty->assign(array(
	'tag_products' => $tag_products
));
Далее в шаблоне:

 

 

<ul>
	{foreach from=$tag_products item=tag_product name=tag_product}
		<li>{$tag_product.name|escape:'htmlall':'UTF-8'}</li>
	{/foreach}
</ul>
Готово!

 

PS.: Все это очень легко подключается к AJAX и можно сделать вообще чтобы по клику по тэгу возле него появлялся список товаров с этим же тэгом.

 

Код вставляем в нужное место в модуле categoryproducts к примеру или новом модуле, ID товара конкретного получаем там же, там же идет как то вывод категории к которой товар принадлежит значит и ID товара этого можно там получить.

Edited by Kerm (see edit history)
  • Like 2
Link to comment
Share on other sites

  • 3 months later...

Вот нашел:

 

// Получаем ID тэгов у товара

$id_tag = 'select `id_tag` from `'._DB_PREFIX_.'product_tag` where `id_product` = 12795';
$result_tag = Db::getInstance()->ExecuteS($id_tag);

// И тут главная проблема в том что если у товара один тэг, то результат будет таким:

Array ( [0] => Array ( [id_tag] => 1 ) )

// А если несколько тэгов то вот так:

Array ( [0] => Array ( [id_tag] => 1 ) [1] => Array ( [id_tag] => 2 ) )

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

// Приведу пример ниже в том случае если мы ищем похожие товары по первому тэгу в списке тэгов:

$first_tag = $result_tag[0]['id_tag'];

// Далее ищем ID товаров у которых есть совпадения по первому тэгу:

$id_products = 'select `id_product` from `'._DB_PREFIX_.'product_tag` where `id_tag` = '.$first_tag.'';
$result_products = Db::getInstance()->ExecuteS($id_products);

//Если у нас несколько товаров то получаем примерно такой массив: 

Array ( [0] => Array ( [id_product] => 12535 ) [1] => Array ( [id_product] => 12795 ) )

// Получаем из массива только нужные значения
foreach($result_products as $k=>$r) {
$result_products[$k] = $r['id_product'];
}
// Преобразуем массив в строчный список значений через запятую

$result_products = implode(", ", $result_products);

// На выходе получаем:

12535, 12795

//И с этим можно уже работать дальше.

//ID языка, 6 это Россия у меня

$id_lang = 6;  // если это модуль то там можно получить это значение автоматически, тогда эту строчку нужно будет просто стереть.

// Получаем список товаров
$getproducts = 'select p.*, pl.*
                FROM `'._DB_PREFIX_.'product` p
                LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product`)
                WHERE p.`id_product` IN ( '.$result_ids.' ) AND pl.`id_lang` = '.(int)($id_lang).'
               ';
$tag_products = Db::getInstance()->ExecuteS($getproducts);

Далее выводим полученные товары в шаблон:

self::$smarty->assign(array(
	'tag_products' => $tag_products
));
Далее в шаблоне:

 

 

<ul>
	{foreach from=$tag_products item=tag_product name=tag_product}
		<li>{$tag_product.name|escape:'htmlall':'UTF-8'}</li>
	{/foreach}
</ul>
Готово!

 

PS.: Все это очень легко подключается к AJAX и можно сделать вообще чтобы по клику по тэгу возле него появлялся список товаров с этим же тэгом.

 

Код вставляем в нужное место в модуле categoryproducts к примеру или новом модуле, ID товара конкретного получаем там же, там же идет как то вывод категории к которой товар принадлежит значит и ID товара этого можно там получить.

 

А можно по подробней в какие именно файлы и что именно нужно туда вписывать, что бы теги выводились в карточке товара

Link to comment
Share on other sites

×
×
  • Create New...