komsit 2 Posted December 8, 2018 Report Share Posted December 8, 2018 Доброго дня! Подскажите, как на карточке товара вывести товары из категории в которой они находятся. В интернете нашел руководство. http://webdesignseo.ru/kopilka-webmastera/vamshop/выводим-список-товаров-категории-в-ка.html Открываем файл includes/modules/product_info.php Ищём в нём строку $info->assign('PRODUCTS_MODEL', $product->data['products_model']); После неё, вставляем такой код: $query = "SELECT * FROM ".TABLE_PRODUCTS." as p "; $query .= "LEFT JOIN ".TABLE_PRODUCTS_DESCRIPTION." as pd ON (p.products_id = pd.products_id) "; $query .= "LEFT JOIN ".TABLE_PRODUCTS_TO_CATEGORIES." as ptc ON (p.products_id = ptc.products_id) "; $query .= "WHERE (ptc.categories_id = '".$current_category_id."') and (p.products_status = '1') and (p.manufacturers_id='".$product->data['manufacturers_id']."') "; $query .= "ORDER BY p.products_sort;"; $xproducts_query = vamDBquery($query); $rows = 0; $cols = 0; while ($xproducts_data = vam_db_fetch_array($xproducts_query, true)){ $xproducts_list .= "<li class="also"><a href=".vam_href_link('' .$xproducts_data["><img title="" .$xproducts_data["products_name"]."" src="images/product_images/thumbnail_images/".$xproducts_data["products_image"]."" alt="" .$xproducts_data["products_name"]."" width="" height="" border="0" /></a>".$vamPrice->Format($xproducts_data["products_price"], true)."</li>"; Далее открываем файл нашей темы оформления tema_oformleniya/modules/product_info/product_info_v1.html И в нужном нам месте файла, вставляем метку: {$XPRODUCTS_LIST} Вношу необходимые изменения, Как сейчас выглядит на карточке товара вкладка "Модели серии" https://komsit.ru/anapa/split-sistema-ballu-bse-07hn1.html в итоге у меня выводится картинка и цена, а нужно реализовать вывод Картинки, Названия, Краткого описания, цены. (примерно как выводится товар в категории) И желательно все оформить в определенном стиле вывода, как вывод товаров в категории. Подскажите, где можно взять код, может из categories_listing, чтобы вывести на карточку товара в нужном стиле? Link to post Share on other sites
support 447 Posted December 8, 2018 Report Share Posted December 8, 2018 43 минуты назад, komsit сказал: Доброго дня! Подскажите, как на карточке товара вывести товары из категории в которой они находятся. В общем-то, sql запрос на все данные есть в приведённом Вами примере. т.е. что б выводить описание, надо добавить $xproducts_data["products_short_description"] , что б цену - $xproducts_data["products_price"] Всё это добавлять в последней строке: $xproducts_list .= ... Link to post Share on other sites
komsit 2 Posted December 8, 2018 Author Report Share Posted December 8, 2018 А как это оформить в определенный стиль? Прописать стили в product_info.PHP файле? Link to post Share on other sites
support 447 Posted December 8, 2018 Report Share Posted December 8, 2018 3 минуты назад, komsit сказал: А как это оформить в определенный стиль? Прописать стили в product_info.PHP файле? В таком виде как написан код - не получится, тут не используется шаблон. т.е. нужно прямо внутри переменой $xproducts_list писать html-код. Лучше тогда использовать какой-то существующий модуль. Можно попробовать в шаблон карточки товара /templates/шаблон/module/product_info/product_info_v1.html добавить метку: {$MODULE_upcoming_products} Затем открыть /includes/modules/upcoming_products.php и поменять sql запрос на Ваш, что выше, т.е. поменять код: $expected_query = vamDBquery("select p.products_id, pd.products_name, products_date_available as date_expected from ".TABLE_PRODUCTS." p, ".TABLE_PRODUCTS_DESCRIPTION." pd where to_days(products_date_available) >= to_days(now()) and p.products_id = pd.products_id ".$group_check." ".$fsk_lock." and pd.language_id = '".(int) $_SESSION['languages_id']."' order by ".EXPECTED_PRODUCTS_FIELD." ".EXPECTED_PRODUCTS_SORT." limit ".MAX_DISPLAY_UPCOMING_PRODUCTS); на: $query = "SELECT * FROM ".TABLE_PRODUCTS." as p "; $query .= "LEFT JOIN ".TABLE_PRODUCTS_DESCRIPTION." as pd ON (p.products_id = pd.products_id) "; $query .= "LEFT JOIN ".TABLE_PRODUCTS_TO_CATEGORIES." as ptc ON (p.products_id = ptc.products_id) "; $query .= "WHERE (ptc.categories_id = '".$current_category_id."') and (p.products_status = '1') and (p.manufacturers_id='".$product->data['manufacturers_id']."') "; $query .= "ORDER BY p.products_sort;"; $expected_query = vamDBquery($query); и уже затем править внешний вид в шаблоне /templates/шаблон/module/upcoming_products.html Вот тут уже легко сделать любой внешний вид. К примеру, можно просто взять и скопировать внешний вид новинок, т.е. скопировать содержимое /templates/шаблон/module/new_products_default.html и этот шаблон upcoming_products.html Link to post Share on other sites
komsit 2 Posted December 8, 2018 Author Report Share Posted December 8, 2018 upcoming_products.php это вроде ожидаемые товары. Он практически не используется, так что идеально для этого подойдет. Спасибо, буду пробовать! Link to post Share on other sites
support 447 Posted December 8, 2018 Report Share Posted December 8, 2018 4 минуты назад, komsit сказал: upcoming_products.php это вроде ожидаемые товары. Он практически не используется, так что идеально для этого подойдет. Спасибо, буду пробовать! Да, ожидамемые товары. Пробуйте, я сам этот вариант не пробовал, но, по идее, должно сработать. Если что, пишите. Link to post Share on other sites
komsit 2 Posted December 8, 2018 Author Report Share Posted December 8, 2018 К сожалению возникает какая то ошибка и страничка совсем не грузится. 08/12/2018 21:12:36 | 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 | SELECT * FROM products as p LEFT JOIN products_description as pd ON (p.products_id = pd.products_id) LEFT JOIN products_to_categories as ptc ON (p.products_id = ptc.products_id) WHERE (ptc.categories_id = '0') and (p.products_status = '1') and (p.manufacturers_id='') ORDER BY p.products_sort; | /anapa/ Link to post Share on other sites
support 447 Posted December 8, 2018 Report Share Posted December 8, 2018 1 час назад, komsit сказал: К сожалению возникает какая то ошибка и страничка совсем не грузится. 08/12/2018 21:12:36 | 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 | SELECT * FROM products as p LEFT JOIN products_description as pd ON (p.products_id = pd.products_id) LEFT JOIN products_to_categories as ptc ON (p.products_id = ptc.products_id) WHERE (ptc.categories_id = '0') and (p.products_status = '1') and (p.manufacturers_id='') ORDER BY p.products_sort; | /anapa/ --- Link to post Share on other sites
support 447 Posted December 8, 2018 Report Share Posted December 8, 2018 1 час назад, komsit сказал: К сожалению возникает какая то ошибка и страничка совсем не грузится. Нет, немного не то написал выше. Сделайте так. В /includes/modules/upcoming_products.php внизу поменяйте: $default->assign('MODULE_upcoming_products', $module); на: $info->assign('MODULE_upcoming_products', $module); В /includes/modules/product_info.php после: include (DIR_WS_MODULES.'product_reviews.php'); добавьте: include (DIR_WS_MODULES.'upcoming_products.php'); Link to post Share on other sites
komsit 2 Posted December 9, 2018 Author Report Share Posted December 9, 2018 Ошибка базы данных ушла, но сайт все равно не грузится. Что то ему видимо не нравится в текущем коде. То что в product_info.php прекрасно работало, напрочь отказывается работать в upcoming_products.php Перестает грузиться после того, как $xproducts_query = vamDBquery($query); меняется на $expected_query = vamDBquery($query); Link to post Share on other sites
support 447 Posted December 9, 2018 Report Share Posted December 9, 2018 50 минут назад, komsit сказал: Ошибка базы данных ушла, но сайт все равно не грузится. Что то ему видимо не нравится в текущем коде. То что в product_info.php прекрасно работало, напрочь отказывается работать в upcoming_products.php Перестает грузиться после того, как $xproducts_query = vamDBquery($query); меняется на $expected_query = vamDBquery($query); Вы сделали как я написал в последнем сообщении?! Подключили в product_info.php ?! $default поменяли на $info внизу upcoming_products.php !? Не грузилась страница карточки товара если не поменять как раз этот код. Link to post Share on other sites
komsit 2 Posted December 9, 2018 Author Report Share Posted December 9, 2018 Да, все верно. В /includes/modules/upcoming_products.php внизу поменяйте: $default->assign('MODULE_upcoming_products', $module); на: $info->assign('MODULE_upcoming_products', $module); В /includes/modules/product_info.php после: include (DIR_WS_MODULES.'product_reviews.php'); добавьте: include (DIR_WS_MODULES.'upcoming_products.php'); Проделал данные операции. Не загрузилась не только карточка товара, но и весь сайт. Link to post Share on other sites
support 447 Posted December 9, 2018 Report Share Posted December 9, 2018 12 минут назад, komsit сказал: Не загрузилась не только карточка товара, но и весь сайт. Возможно, правка upcoming_products.php сломала сам сайт, потому что по умолчанию этот блок для главной страницы. Попробуйте ещё в /includes/center_modules.php поменять: require(DIR_WS_MODULES . FILENAME_UPCOMING_PRODUCTS); на: //require(DIR_WS_MODULES . FILENAME_UPCOMING_PRODUCTS); Если не заработает, присылайте в личку ссылку на магазин, доступ на ftp. Попробую на месте поправить, так быстрее наверное будет, чем наугад делать. Link to post Share on other sites
komsit 2 Posted December 14, 2018 Author Report Share Posted December 14, 2018 Все получилось, спасибо. Но согласно списку разрешенных меток, upcoming выводит только название товара, дату поступления и ссылку на товар. Попытки добавить картинку, цену не увенчались успехом(. Но это уже ближе к тому что нужно. Link to post Share on other sites
support 447 Posted December 14, 2018 Report Share Posted December 14, 2018 46 минут назад, komsit сказал: Все получилось, спасибо. Но согласно списку разрешенных меток, upcoming выводит только название товара, дату поступления и ссылку на товар. Попытки добавить картинку, цену не увенчались успехом(. Но это уже ближе к тому что нужно. Нет, Вы ж sql запрос заменили на свой?! У Вас в запросе select * т.е. у Вас должны быть доступны все данные. Используйте products_image для картинки, products_price для цены. Link to post Share on other sites
komsit 2 Posted January 2, 2019 Author Report Share Posted January 2, 2019 Вроде разобрался, нужно в файле upcoming_products.php после строчек if (vam_db_num_rows($expected_query,true) > 0) { $row = 0; while ($expected = vam_db_fetch_array($expected_query,true)) { $row ++; $module_content[] = array ('PRODUCTS_LINK' => vam_href_link(FILENAME_PRODUCT_INFO, vam_product_link($expected['products_id'], $expected['products_name'])), 'PRODUCTS_NAME' => $expected['products_name'], 'PRODUCTS_DATE' => vam_date_short($expected['date_expected'])); } Вставить $row = 0; $module_content = array (); $expected_query = vamDBquery($query); while ($query = vam_db_fetch_array($expected_query, true)) { $module_content[] = $product->buildDataArray($query); } И только в этом случае начинает выводится картинка и цена (До этого выводилось только название товара ссылкой) Но краткое описание ({$products_data.PRODUCTS_SHORT_DESCRIPTION}) так и не вывелось. Буду дальше копать. Link to post Share on other sites
support 447 Posted January 2, 2019 Report Share Posted January 2, 2019 9 минут назад, komsit сказал: Но краткое описание ({$products_data.PRODUCTS_SHORT_DESCRIPTION}) так и не вывелось. Буду дальше копать. В sql запрос $ query добавьте в select ... pd.products_short_description Link to post Share on other sites
komsit 2 Posted January 2, 2019 Author Report Share Posted January 2, 2019 Огромное спасибо! Link to post Share on other sites
support 447 Posted January 2, 2019 Report Share Posted January 2, 2019 2 минуты назад, komsit сказал: Огромное спасибо! Не за что, надеюсь, что разобрались. Link to post Share on other sites
Recommended Posts