Перейти к содержанию
Форум поддержки пользователей VamShop

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


Рекомендуемые сообщения

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

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

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

 

 

 

Ссылка на сообщение
Поделиться на другие сайты
43 минуты назад, komsit сказал:

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

 

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

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

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

Ссылка на сообщение
Поделиться на другие сайты
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

Ссылка на сообщение
Поделиться на другие сайты

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

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

Ссылка на сообщение
Поделиться на другие сайты
4 минуты назад, komsit сказал:

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

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

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

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

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

Ссылка на сообщение
Поделиться на другие сайты

К сожалению возникает какая то ошибка и страничка совсем не грузится. 

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/
 

Ссылка на сообщение
Поделиться на другие сайты
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/
 

---

Ссылка на сообщение
Поделиться на другие сайты

 

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

 

Ссылка на сообщение
Поделиться на другие сайты

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

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

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

$xproducts_query = vamDBquery($query);

меняется на 

$expected_query = vamDBquery($query);

 

Ссылка на сообщение
Поделиться на другие сайты
50 минут назад, komsit сказал:

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

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

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


$xproducts_query = vamDBquery($query);

меняется на 


$expected_query = vamDBquery($query);

 

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

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

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

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

Ссылка на сообщение
Поделиться на другие сайты

Да, все верно.

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

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

 

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

Ссылка на сообщение
Поделиться на другие сайты
12 минут назад, komsit сказал:

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

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

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

  require(DIR_WS_MODULES . FILENAME_UPCOMING_PRODUCTS);

на:

  //require(DIR_WS_MODULES . FILENAME_UPCOMING_PRODUCTS);

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

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

Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

 

Ссылка на сообщение
Поделиться на другие сайты
46 минут назад, komsit сказал:

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

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

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

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

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

 

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

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

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

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

Ссылка на сообщение
Поделиться на другие сайты
  • 3 weeks later...

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

Ссылка на сообщение
Поделиться на другие сайты
9 минут назад, komsit сказал:

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

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

pd.products_short_description

Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...