nitrol Опубликовано 15 августа, 2014 Жалоба Поделиться Опубликовано 15 августа, 2014 Подскажите пожалуйста, как можно реализовать вывод всех товаров одной категории под любым товаром этой категории? чтобы не затронуть остальные товары/категории? в ручную через связанные товары сделать не представляется возможным. Может есть вариант с "$related_products_2" в котором сделать вывод? Цитата Ссылка на сообщение Поделиться на другие сайты
Решение DaVinci Опубликовано 15 августа, 2014 Решение Жалоба Поделиться Опубликовано 15 августа, 2014 открываем 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} Цитата Ссылка на сообщение Поделиться на другие сайты
mart Опубликовано 15 августа, 2014 Жалоба Поделиться Опубликовано 15 августа, 2014 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 Мне тоже хочется признания моих заслуг Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 15 августа, 2014 Жалоба Поделиться Опубликовано 15 августа, 2014 была задача - вывод всех товаров категории на странице товара. как пример поставил 100 Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.