Авторизация  
komsit

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

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

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

 

 

 

Поделиться сообщением


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

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

 

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

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

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

Поделиться сообщением


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

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

Поделиться сообщением


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

Поделиться сообщением


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

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

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

Поделиться сообщением


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

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

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

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

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

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

Поделиться сообщением


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

Поделиться сообщением


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

---

Поделиться сообщением


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

 

Поделиться сообщением


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

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

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

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

$xproducts_query = vamDBquery($query);

меняется на 

$expected_query = vamDBquery($query);

 

Поделиться сообщением


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

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

Поделиться сообщением


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

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

 

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

Поделиться сообщением


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

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

Поделиться сообщением


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

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

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

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

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

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

 

Поделиться сообщением


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

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

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

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

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

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

 

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

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

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

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

Поделиться сообщением


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

Поделиться сообщением


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

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

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

pd.products_short_description

Поделиться сообщением


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

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

Поделиться сообщением


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

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

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

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация