lightman Posted November 16, 2013 Share Posted November 16, 2013 Открывается товар: 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 More sharing options...
lightman Posted November 20, 2013 Author Share Posted November 20, 2013 никто не работал с метками? Link to comment Share on other sites More sharing options...
Kerm Posted November 20, 2013 Share Posted November 20, 2013 (edited) Это надо модуль свои писать, стандартно такого не сделаешь. Или искать готовый модуль. Edited November 20, 2013 by Kerm (see edit history) Link to comment Share on other sites More sharing options...
lightman Posted November 22, 2013 Author Share Posted November 22, 2013 это понятно что нужно писать такой модуль - кто готов помочь в этом? и еще вопрос - можно ли: на карточке товара на производителе (где цена) поставить ссылку на него - чтобы можно было нажать и вывелся бы весь товарный перечень по этому производителю? а так же ниже его вывести мета тег который принадлежит карточке этого товара под названием серия? ну и если этот тег сделать активным то будет выводиться весь товар под этим тегом это конечно не совсем то что нужно но хотя бы решит часть задачь сразу же Link to comment Share on other sites More sharing options...
lightman Posted November 24, 2013 Author Share Posted November 24, 2013 ? Link to comment Share on other sites More sharing options...
lightman Posted January 18, 2014 Author Share Posted January 18, 2014 все еще актуально Link to comment Share on other sites More sharing options...
Ronaldo Perez Posted January 18, 2014 Share Posted January 18, 2014 все еще актуально если актуально, сделаю модуль, в личку постучите Link to comment Share on other sites More sharing options...
lightman Posted February 6, 2014 Author Share Posted February 6, 2014 Да еще актуально! Link to comment Share on other sites More sharing options...
Kerm Posted February 6, 2014 Share Posted February 6, 2014 Если мне не изменяет память я уже тебе в какой то твоей теме отвечал по этому вопросу, ты еще где то тут подобную тему создал.. Link to comment Share on other sites More sharing options...
Kerm Posted February 6, 2014 Share Posted February 6, 2014 (edited) Вот нашел: // Получаем 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 February 6, 2014 by Kerm (see edit history) 2 Link to comment Share on other sites More sharing options...
stas2204 Posted May 18, 2014 Share Posted May 18, 2014 Вот нашел: // Получаем 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 More sharing options...
Recommended Posts