Sign in to follow this  
komsit

Как на карточке товара вывести товары из категории, в которой находится товар.

Recommended Posts

komsit

Доброго дня! Подскажите, как на карточке товара вывести товары из категории в которой они находятся.

В интернете нашел руководство.

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, чтобы вывести  на карточку товара в нужном стиле?

 

 

 

Share this post


Link to post
Share on other sites
support
43 минуты назад, komsit сказал:

Доброго дня! Подскажите, как на карточке товара вывести товары из категории в которой они находятся.

 

В общем-то, sql запрос на все данные есть в приведённом Вами примере.

т.е. что б выводить описание, надо добавить $xproducts_data["products_short_description"] , что б цену - $xproducts_data["products_price"]

Всё это добавлять в последней строке: $xproducts_list .= ...

Share this post


Link to post
Share on other sites
komsit

А как это оформить в определенный стиль?   Прописать стили в product_info.PHP файле?

Share this post


Link to post
Share on other sites
support
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

Share this post


Link to post
Share on other sites
komsit

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

Спасибо, буду пробовать!

Share this post


Link to post
Share on other sites
support
4 минуты назад, komsit сказал:

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

Спасибо, буду пробовать!

Да, ожидамемые товары.

Пробуйте, я сам этот вариант не пробовал, но, по идее, должно сработать.

Если что, пишите.

Share this post


Link to post
Share on other sites
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/
 

Share this post


Link to post
Share on other sites
support
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/
 

---

Share this post


Link to post
Share on other sites
support

 

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');

 

Share this post


Link to post
Share on other sites
komsit

Ошибка базы данных ушла, но сайт все равно не грузится. Что то ему видимо не нравится в текущем коде.

То что в product_info.php прекрасно работало, напрочь отказывается работать в upcoming_products.php

Перестает грузиться после того, как 

$xproducts_query = vamDBquery($query);

меняется на 

$expected_query = vamDBquery($query);

 

Share this post


Link to post
Share on other sites
support
50 минут назад, komsit сказал:

Ошибка базы данных ушла, но сайт все равно не грузится. Что то ему видимо не нравится в текущем коде.

То что в product_info.php прекрасно работало, напрочь отказывается работать в upcoming_products.php

Перестает грузиться после того, как 


$xproducts_query = vamDBquery($query);

меняется на 


$expected_query = vamDBquery($query);

 

Вы сделали как я написал в последнем сообщении?!

Подключили в product_info.php ?!

$default поменяли на $info внизу upcoming_products.php !?

Не грузилась страница карточки товара если не поменять как раз этот код.

Share this post


Link to post
Share on other sites
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');

Проделал данные операции.

 

Не загрузилась не только карточка товара, но и весь сайт. 

Share this post


Link to post
Share on other sites
support
12 минут назад, komsit сказал:

Не загрузилась не только карточка товара, но и весь сайт. 

Возможно, правка upcoming_products.php сломала сам сайт, потому что по умолчанию этот блок для главной страницы.

Попробуйте ещё в /includes/center_modules.php поменять:

  require(DIR_WS_MODULES . FILENAME_UPCOMING_PRODUCTS);

на:

  //require(DIR_WS_MODULES . FILENAME_UPCOMING_PRODUCTS);

Если не заработает, присылайте в личку ссылку на магазин, доступ на ftp.

Попробую на месте поправить, так быстрее наверное будет, чем наугад делать.

Share this post


Link to post
Share on other sites
komsit

Все получилось, спасибо.

Но согласно списку разрешенных меток,

upcoming выводит только название товара, дату поступления  и ссылку на товар.

Попытки добавить картинку, цену не увенчались успехом(.

Но это уже ближе к тому что нужно.

 

Share this post


Link to post
Share on other sites
support
46 минут назад, komsit сказал:

Все получилось, спасибо.

Но согласно списку разрешенных меток,

upcoming выводит только название товара, дату поступления  и ссылку на товар.

Попытки добавить картинку, цену не увенчались успехом(.

Но это уже ближе к тому что нужно.

 

Нет, Вы ж sql запрос заменили на свой?!

У Вас в запросе select *

т.е. у Вас должны быть доступны все данные.

Используйте products_image для картинки, products_price для цены. 

Share this post


Link to post
Share on other sites
komsit

Вроде разобрался, нужно в файле 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})  так и не вывелось. Буду дальше копать.

Share this post


Link to post
Share on other sites
support
9 минут назад, komsit сказал:

Но краткое описание ({$products_data.PRODUCTS_SHORT_DESCRIPTION})  так и не вывелось. Буду дальше копать.

В sql запрос $ query добавьте в select ...

pd.products_short_description

Share this post


Link to post
Share on other sites
komsit

Огромное спасибо!

Share this post


Link to post
Share on other sites
support
2 минуты назад, komsit сказал:

Огромное спасибо!

Не за что, надеюсь, что разобрались.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this