Перейти к содержанию
Официальный форум поддержки Simpla

Вывод всех товаров категории на странице товара


Перейти к решению Решено DaVinci,

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

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

Может есть вариант с "$related_products_2" в котором сделать вывод?

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

открываем view/View.php регистрируем функцию:

 

$this->design->smarty->registerPlugin("function", "get_products", array($this, 'get_products_plugin'));

ниже вставляем функцию

 

	public function get_products_plugin($params, &$smarty)
	{
		if(!empty($params['var']))
		{
			foreach($this->products->get_products($params) as $p)
				$products[$p->id] = $p;

			if(!empty($products))
			{
				// id выбраных товаров
				$products_ids = array_keys($products);

				// Выбираем варианты товаров
				$variants = $this->variants->get_variants(array('product_id'=>$products_ids, 'in_stock'=>true));

				// Для каждого варианта
				foreach($variants as &$variant)
				{
					// добавляем вариант в соответствующий товар
					$products[$variant->product_id]->variants[] = $variant;
				}

				// Выбираем изображения товаров
				$images = $this->products->get_images(array('product_id'=>$products_ids));
				foreach($images as $image)
					$products[$image->product_id]->images[] = $image;

				foreach($products as &$product)
				{
					if(isset($product->variants[0]))
						$product->variant = $product->variants[0];
					if(isset($product->images[0]))
						$product->image = $product->images[0];
				}
			}

			$smarty->assign($params['var'], $products);

		}
	}

 

открываем design/.../html/product.tpl

 

вызываем нашу функцию и выводим в шаблон товары

 

{* Товары категории *}
{get_products var=category_products category_id=$category->id limit=100}
{if $category_products}
<h2>Другие товары категории {$category->name|escape}</h2>
<!-- Список товаров-->
<ul class="tiny_products">

	{foreach $category_products as $cproduct}

	<!-- Товар-->
	<li class="product">

		<!-- Фото товара -->
		{if $cproduct->image}
		<div class="image">
			<a href="products/{$cproduct->url}"><img src="{$cproduct->image->filename|resize:200:200}" alt="{$cproduct->name|escape}"/></a>
		</div>
		{/if}
		<!-- Фото товара (The End) -->

		<!-- Название товара -->
		<h3><a data-product="{$cproduct->id}" href="products/{$cproduct->url}">{$cproduct->name|escape}</a></h3>
		<!-- Название товара (The End) -->

		{if $cproduct->variants|count > 0}
		<!-- Выбор варианта товара -->
		<form class="variants" action="/cart">
			<table>
			{foreach $cproduct->variants as $v}
			<tr class="variant">
				<td>
					<input id="new_{$v->id}" name="variant" value="{$v->id}" type="radio" class="variant_radiobutton" {if $v@first}checked{/if} {if $product->variants|count<2}style="display:none;"{/if}/>
				</td>
				<td>
					{if $v->name}<label class="variant_name" for="new_{$v->id}">{$v->name}</label>{/if}
				</td>
				<td>
					{if $v->compare_price > 0}<span class="compare_price">{$v->compare_price|convert}</span>{/if}
					<span class="price">{$v->price|convert} <span class="currency">{$currency->sign|escape}</span></span>
				</td>
			</tr>
			{/foreach}
			</table>
			<input type="submit" class="button" value="в корзину" data-result-text="добавлено"/>
		</form>
		<!-- Выбор варианта товара (The End) -->
		{else}
			Нет в наличии
		{/if}

	</li>
	<!-- Товар (The End)-->
	{/foreach}

</ul>
{/if}
Ссылка на сообщение
Поделиться на другие сайты

To DaVinci:

Во-первых, если Вы репостите статью, то перепечатывайте ее правильно: вместо

{get_new_products var=category_products category_id=$category limit=100} 

надо вызывать (раз уж Вы описываете виджет get_products)

{get_products var=category_products category_id=$category limit=100} 

Во-вторых, почему бы просто не расместить ссылку на оригинал статьи - http://www.simplashop.com/article/universalnyj-vidzhet-get_products

 

Мне тоже хочется признания моих заслуг :)

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

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...