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

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

открываем 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[]))
                              $product->variant = $product->variants[];
                         if(isset($product->images[]))
                              $product->image = $product->images[];
                    }
               }

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

          }
     }

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

Читайте также  Simpla валюта через select

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

{* Товары категории *}
{get_products var=category_products category_id=$category->id limit=100}
{if $category_products}
<h2>Другие товары категории {$category-&gt;name|escape}</h2>
<!-- Список товаров-->
<ul class="tiny_products">
<ul class="tiny_products">{foreach $category_products as $cproduct} <!-- Товар--></ul>
</ul>
&nbsp;
<ul class="tiny_products">
<ul class="tiny_products">
     <li class="product"><!-- Фото товара --> {if $cproduct-&gt;image}
<div class="image"><a href="products/{$cproduct-&gt;url}"><img src="{$cproduct-&gt;image-&gt;filename|resize:200:200}" alt="&quot;{$cproduct-" />name|escape}"/&gt;</a></div>
{/if} <!-- Фото товара (The End) --> <!-- Название товара -->
<h3><a href="
products/{$cproduct-&gt;url}" data-product="{$cproduct-&gt;id}">{$cproduct-&gt;name|escape}</a></h3>
<!-- Название товара (The End) --> {if $cproduct-&gt;variants|count &gt; 0} <!-- Выбор варианта товара -->

<form class="
variants" action="/cart">
{foreach $cproduct-&gt;variants as $v} {if $v-&gt;name}<label class="
variant_name" for="new_{$v-&gt;id}">{$v-&gt;name}</label>{/if} {if $v-&gt;compare_price &gt; 0}<span class="compare_price">{$v-&gt;compare_price|convert}</span>{/if} <span class="price">{$v-&gt;price|convert} <span class="currency">{$currency-&gt;sign|escape}</span></span>   {/foreach}
<table>
<tbody>
<tr class="
variant">
<td><input id="
new_{$v-&gt;id}" class="variant_radiobutton" checked="checked" name="variant" type="radio" value="{$v-&gt;id}" />variants|count&lt;2}style="display:none;"{/if}/&gt;</td>
</tr>
</tbody>
</table>
<input class="
button" type="submit" value="в корзину" data-result-text="добавлено" />

</form><!-- Выбор варианта товара (The End) --> {else} Нет в наличии {/if}</li>
</ul>
</ul>
<!-- Товар (The End)--> {/foreach}

{/if}
CSS Styling Radio Button and Checkboxes The idea is simple. We want to change the look and feel of existing radio buttons into more of a push button. The above image pretty much t...
Несколько полезностей для Simpla 2.x... Переносим выбор варианта оплаты на первую страницу оформления заказа Автоматически создаваемый артикул как ID товара Выбор количества товара перед п...
Количество товара перед помещением в корзину. Simp... В шаблоны добавляем: шт. Для добавления Ajax обновления корзины заменяем в файле /js/ajax-cart.js data: {variant: variant}, на data: {v...
Simpla валюта через select {if $currencies|count>1} {foreach from=$currencies item=c} {if $c->enabled} id==$currency->id} selected="selected"{/if}>{$c->name|esca...

Сохрани, чтобы не потерять