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

Список всех товаров из категории в информации о товаре


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

  • Ответов 100
  • Created
  • Последний ответ

Top Posters In This Topic

  • Frycrosoft

    42

  • support

    29

  • mosquito

    20

  • Valyok

    7

это будет например так?

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

while ($xproducts_data = vam_db_fetch_array($xproducts_query, true)){
$col++;
$row++;
  if ($col>=5) {
  $col=0;
$xproducts_list .= "</td><td style="padding-left:80px;">";
  } 
  if ($row>=20) {
  $row=0;
$xproducts_list .= "</td></tr><br><tr><td>";
  }
$xproducts_list .= "<a href=".vam_href_link('' .$xproducts_data["products_page_url"]).">" .$xproducts_data["products_name"]. "</a> <br>";
}[/code]

но что-то все равно не получается

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

читал читал и все таки не понял ))

пытаюсь понять так:

в шаблоне product_info есть переменная {$XPRODUCTS_LIST} - она выводит список всех товаров которые находятся вместе с тем товаром, который мы в данный момент смотрим.

переменную {$XPRODUCTS_LIST} я раскрываю в product_info.php кодом:

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

while ($xproducts_data = vam_db_fetch_array($xproducts_query, true)){
$xproducts_list .= "<a href=".vam_href_link('' .$xproducts_data["products_page_url"]).">" .$xproducts_data["products_name"]. "</a> <br>";
}




$info->assign('XPRODUCTS_LIST', $xproducts_list);

[/code] теперь, я хочу что бы список, который выводится в product_info.html(около 30 товаров выводится), делился на столбцы. Это я делаю следующим кодом:
[code]{foreach name=aussen item=list from=$XPRODUCTS_LIST}
{php} $col++;
  {/php}
 
  {$list.XPRODUCTS_LIST} 
 
  {php}
  if ($col>=5) {
  $col=0;
  echo '</tr><tr>';
  }
  {/php}
  {/foreach}

Но foreach я явно сделал неверно... какой формат у foreach будет в данный момент что бы начало дилится на столбики?

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

Не знаю, неправильно что-то делаешь.

Ты посмотри пример какой-нибудь, например /templates/шаблон/source/boxes/bese_sellers.php и шаблон /templates/шаблон/boxes/box_best_sellers.html

Что б для начала разобраться как с foreach работать.

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

тут какбы не в foreach проблемка... хоть я и сам не знаю как она работает ) но работает она явно с МАСИВОМ данных!? мб я и не прав (но так должно быть :) ) а ты в foreach кладеш просто строковую переменную...

пс пора задуматся :D

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

все, додумал я... если кому надо то вот каким способом:

		$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)){
    $rows ++;
    $cols ++;
$xproducts_list .= "<a href=".vam_href_link('' .$xproducts_data["products_page_url"]).">" .$xproducts_data["products_name"]. "</a> <br>";
if ($cols>=5) {
  $cols=0;
$xproducts_list .= "</td><td style='padding-left:80px;'>";
  } 
 
if ($rows>=20) {
$rows=0;
$xproducts_list .= "</td></tr><br><tr><td>";
  }
}




$info->assign('XPRODUCTS_LIST', $xproducts_list);[/code]

На всякий случай напомню что делает данный скрипт:

Расположен этот код в includes/modules/product_info.php

После строки $info->assign('PRODUCTS_MODEL', $product->data['products_model']);

Функции: Выводит список всех товаров из категории и производителя, в котором вы находитесь.

Например: Захожу в производитель Colgate, выбираю зубные пасты, там 3 пасты(паста1, паста2,паста3) захожу в паста1, а в ней список других двух паст.

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

Спасибо, что поделился готовым кодом.

P.S. Правильней конечно html тэги в шаблон выносить, но конечно если один раз делается и навегда, наверное и так нормально.

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

Нет.

Только если шаблон таким образом сделать, т.е. {$main_content} метку в /tempaltes/шаблон/index.html вставить под боксы.

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

Такая ошибка на некоторых хостингах возникает при включении опции короткие url в Админке - Настройки - Мета-тэги - Использовать короткие URL, попробуйте выключить эту опцию.

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

Мне короткие урл очень нужны... Легче думаю хостинг куда подальше послать. Очень жаль что так получается.

Хостинг Majordomo, ну так если что. Не советую... =)

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

Есть и другие короткие url, заполняете поля SEO URL товара, категории и т.д. и тогда у Вас будет свой адрес, какой укажите.

Вобщем, прочитайте описание колонки SEO URL товара - http://vamshop.ru/manual/catalog.html#id2569377

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

Отключил короткие урл, но проблема осталась. На какие то товары заходит, а на какие то выдаёт ошибку "Error!

Unable to determine the page link!"

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

Всё разобрался. Если допустим в категории "телефоны Nokia" есть хоть один товар без seo url то весь товар в данной категории не будет открываться.

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

Странно, такой проблемы по умолчанию нет.

Единственное, что  с включенной опцией короткие url на некоторых хостингах может быть такая проблема, но если выключить опцию, всё нормально работает.

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

Подскажите пожалуйста, если это реально сделать. Как сделать так чтобы тот товар в карточке которой находишься не показывался в этом списке или хотя бы не был ссылкой на самого себя, а просто был обычным текстом?

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

Допилил данный код, изменив в нём один фрагмент:

$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='item span4 catlist first'><div class='thumbnail text-center'><div class='inner notop nobottom text-left'><h4 class='title'><a href=".vam_href_link('' .$xproducts_data["products_page_url"]).">" .$xproducts_data["products_name"]."</a></h4></div><a class='image' href=".vam_href_link('' .$xproducts_data["products_page_url"])."><img src='images/product_images/thumbnail_images/".$xproducts_data["products_image"]."' border='0'><span class='frame-overlay'></span><span class='price'>" .$xproducts_data["products_price"]."</span></a></div></li>";
		}

		$info->assign('XPRODUCTS_LIST', $xproducts_list);

В результате выводится не только список товаров данной категории, но и их изображение и цена. Чего я не смог сделать, но что хотелось бы:

1. Цена почему то выводится с разделителем и четырьмя нулями после него. То есть не 25400, а 25400.0000

2. Соображения хватило на вывод главной картинки товара, а очень хочется вывести ещё одну из дополнительных картинок (если у товара они есть)

Если кто сочтёт возможным, буду рад помощи.

Да. Ещё момент. Только сейчас его заметил.  Я правильно понимаю, что в моём варианте кода эти две строки:

$rows = 0;
$cols = 0;

не нужны?

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

Что б цена формитировалась, надо использовать класс $vamPrice, смотрите как сделан вывод цены и вывод доп. картинок например в карточке товара /includes/modules/product_info.php.

Цена форматируется примерно так:

$vamPrice->GetPrice($xproducts_data["products_id"], $format = true, 1, $xproducts_data["products_tax_class_id"], $xproducts_data["products_price"], 1);

 

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

Надеюсь, что разберётесь.

В общем, смотрите готовый примре карточки товара, там всё есть - и форматирование цены и доп. картинки.

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

×
×
  • Создать...