Перейти к содержимому


Фото
- - - - -

Вывод цены у просмотренных товаров?


Best Answer mishanya , 06.07.2015 - 11:13

А вы проверили?
Не будет так работать потому как во вью нет выборки по вариантам.

 

 

 

да, нужно добавить в плагин get_browsed_products перед:

$browsed_products_images = $this->products->get_images(array('product_id'=>$browsed_products_ids));

выборку вариантов:

	$variants = $this->variants->get_variants(array('product_id'=>$browsed_products_ids, 'in_stock'=>true));
			foreach($variants as &$variant)
			{
				$products[$variant->product_id]->variants[] = $variant;
			}

 

и после

if(isset($products[$id]->images[0]))
	$products[$id]->image = $products[$id]->images[0];

добавить

if(isset($products[$id]->variants[0]))
	$products[$id]->variant = $products[$id]->variants[0];

 

затем можно вызывать в цикле:

{foreach $browsed_product->variants as $v}{$v->price}{/foreach}
Перейти к посту


  • Чтобы отвечать, сперва войдите на форум
8 ответов в теме

#1 shooroop

shooroop
  • Фрилансер
  • 1 066 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Antarktida

Опубликовано 06.07.2015 - 01:18

Запутался совсем, как вывести цену у просмотренных товаров?

 

 

f3891adf_o.png

 

 

 

<!-- Просмотренные товары -->
			{get_browsed_products var=browsed_products limit=20}
			{if $browsed_products}
			
				<h2>Вы просматривали:</h2>
				<ul id="browsed_products">
				{foreach $browsed_products as $browsed_product}
					<li>
					<a href="products/{$browsed_product->url}"><img src="{$browsed_product->image->filename|resize:50:50}" alt="{$browsed_product->name|escape}" title="{$browsed_product->name|escape}"></a>
					</li>
				{/foreach}
				</ul>
			{/if}
			<!-- Просмотренные товары (The End)-->
			

 


Изменено: shooroop, 06.07.2015 - 01:20


#2 mishanya

mishanya
  • Фрилансер
  • 2 575 сообщений
  • Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Ukraine

Опубликовано 06.07.2015 - 01:47

{$browsed_product->price}



#3 Noxter

Noxter
  • Забаненый
  • 1 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 06.07.2015 - 02:22

{$browsed_product->price}

А вы проверили?
Не будет так работать потому как во вью нет выборки по вариантам.

#4 Kors

Kors
  • Фрилансер
  • 3 522 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Россия

Опубликовано 06.07.2015 - 08:42

Это маленький недостаток, проистекающий из принципиально неверного общего построения view/View.php -  там код дублирован просто ужасно. Кроме get_browsed_products, есть еще 3 очень похожие функции. Это тот случай, когда Simpla неоправданно усложнена на ровном месте. И в соответствии в общими законами программирования при таком подходе возрастает риск ошибок и усложняются изменения. Говорилось про это и раньше. Пора бы автору обратить внимание и эти 4 функции оформить правильным образом...



#5 mishanya

mishanya
  • Фрилансер
  • 2 575 сообщений
  • Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Ukraine

Опубликовано 06.07.2015 - 11:13   Best Answer

А вы проверили?
Не будет так работать потому как во вью нет выборки по вариантам.

 

 

 

да, нужно добавить в плагин get_browsed_products перед:

$browsed_products_images = $this->products->get_images(array('product_id'=>$browsed_products_ids));

выборку вариантов:

	$variants = $this->variants->get_variants(array('product_id'=>$browsed_products_ids, 'in_stock'=>true));
			foreach($variants as &$variant)
			{
				$products[$variant->product_id]->variants[] = $variant;
			}

 

и после

if(isset($products[$id]->images[0]))
	$products[$id]->image = $products[$id]->images[0];

добавить

if(isset($products[$id]->variants[0]))
	$products[$id]->variant = $products[$id]->variants[0];

 

затем можно вызывать в цикле:

{foreach $browsed_product->variants as $v}{$v->price}{/foreach}

Изменено: mishanya, 18.09.2018 - 00:03


#6 Dmitry86

Dmitry86
  • Пользователь
  • 158 сообщений
  • Пользователь
  • Откуда:Мск

Опубликовано 17.09.2018 - 23:53

и после

if(isset($products[$id]->images[0]))
	$products[$id]->image = $products[$id]->images[0];

добавить

if(isset($product[$id]->variants[0]))
	$product[$id]->variant = $products[$id]->variants[0];

 

Можно поинтересоваться, почему в случае с вариантами используется $product[$id], а не $products[$id] ?

 

Разве не так должно быть:

if(isset($products[$id]->variants[0]))
	$products[$id]->variant = $products[$id]->variants[0];

?



#7 mishanya

mishanya
  • Фрилансер
  • 2 575 сообщений
  • Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Ukraine

Опубликовано 18.09.2018 - 00:03

Можно поинтересоваться, почему в случае с вариантами используется $product[$id], а не $products[$id] ?

 

Разве не так должно быть:

if(isset($products[$id]->variants[0]))
	$products[$id]->variant = $products[$id]->variants[0];

?

 

да. опечатка.



#8 Dmitry86

Dmitry86
  • Пользователь
  • 158 сообщений
  • Пользователь
  • Откуда:Мск

Опубликовано 18.09.2018 - 22:02

да. опечатка.

 

Спасибо, Mishanya. Есть ещё такой вопрос: Допустим, я зашел в карточку одного товара, потом перешел ещё в какую-то, и вернулся на карточку первого. В результате на карточке с первым товаром в блоке "недавно просмотренных" показывается этот же товар. Можно как-то этого избежать, чтобы  в карточке товара не дублировался в блоке "просмотренных товаров" этот же товар?


Изменено: Dmitry86, 18.09.2018 - 22:03


#9 phukortsin

phukortsin
  • Фрилансер
  • 1 040 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Львов

Опубликовано 19.09.2018 - 09:50

Если уж ставить такую задачу, то дополнительно надо бы сделать, чтобы в просмотренных

1. на страницах каталога - не показывался товар, который есть списке товаров,

2. на странице товара - не показывался товар, который есть в сопутствующих,

3. на странице корзины - не показывался товар, который есть в корзине.

4. возможно, и еще где...






0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых