Вывести свойства товара Simpla
В замечательном движке для Интернет-магазинов Simpla есть отличная возможность задать товару некоторые свойства. Например, для мебели это может быть: размеры, материал, цвет и другие. На мой взгляд, это очень нужная возможность. Но есть очевидные минусы реализации...
Например, по-умолчанию можно вывести список этих свойств (вида: Имя и Значение) только в карточку товара. А иногда появляется необходимость отобразить эти свойства в категории, общем списке товаров или на главной странице (в новинках, рекомендуемых или акционных товарах). Сейчас мы научимся это делать.
Для начала вспомним, как вывести список свойств в карточку товара (выводится просто, без изменений в файлах сборки). Заходим в административную часть сайта, шаблоны, product.tpl и в нужное место вставляем:
{if $product->features} <!-- Характеристики товара --> <h2>Характеристики</h2> <ul class="features"> {foreach $product->features as $f} <li> <label>{$f->name}</label> <span>{$f->value}</span> </li> {/foreach} </ul> <!-- Характеристики товара (The End)--> {/if}
Обратите внимание, что в стандартном шаблоне этот вывод уже сделан.
Разберемся, как вывести те же свойства в категорию (или общую ленту) товаров
Я делаю все изменения на версии Simpla CMS 2.3.3. Открываем файл на фтп - /view/ProductsView.php. Находим следующий отрывок кода (он закомментирован, у меня располагается на 178-182 строчках кода):
/* $properties = $this->features->get_options(array('product_id'=>$products_ids)); foreach($properties as $property) $products[$property->product_id]->options[] = $property; */
Теперь меняем его (вместе с комментариями) на:
$properties = $this->features->get_product_options($products_ids); foreach($properties as $property) { $products[$property->product_id]->options[] = $property; }
Вот и все. Теперь в шаблон products.tpl в нужное место пишем:
{if $product->options} <!-- Характеристики товара --> <ul class="features"> {foreach $product->options as $f} <li> <label>{$f->name}</label> <span>{$f->value}</span> </li> {/foreach} </ul> <!-- Характеристики товара (The End)--> {/if}
Отлично, все работает:)
Обновлено 12.02.2015
В особых случаях в связи с нюансом переноса характеристик (а именно при использовании импорта), данный код может не работать (или выводить лишнюю информацию). Тогда можно воспользоваться следующим кодом:
<!-- Характеристики товара --> <ul class="features"> {if $product->options} {foreach $product->options as $f} {if ($f->name) and ($f->value)} <li> <label>{$f->name}</label> <span>{$f->value}</span> </li> {/if} {/foreach} {/if} </ul> <!-- Характеристики товара (The End)-->
Здесь выполняется проверка на наличие названия свойства и значения. Если чего-то не хватает, то свойство не выводится.
Вывод характеристик (свойств) товара на главную страницу
1. В блок Рекомендуемые товары:
Открываем на фтп файл /view/View.php, находим функцию get_featured_products_plugin и в нее вставляем:
$properties = $this->features->get_product_options($products_ids); foreach($properties as $property) { $products[$property->product_id]->options[] = $property; }
Я вставил на 208 строку.
2. В блок Новинки:
Открываем тот же файл (/view/View.php), находим функцию get_new_products_plugin и в нее вставляем:
$properties = $this->features->get_product_options($products_ids); foreach($properties as $property) { $products[$property->product_id]->options[] = $property; }
Я вставил на 254 строку (без учета вставки кода в рекомендуемые товары).
3. В блок Акционные товары:
Все тот же файл /view/View.php, находим функцию get_discounted_products_plugin, вставляем в нее код:
$properties = $this->features->get_product_options($products_ids); foreach($properties as $property) { $products[$property->product_id]->options[] = $property; }
Я вставил на 299 строку кода (без учета 2-х предыдущих правок).
Как теперь вывести добавленные свойства на главную страницу? Очень просто. В шаблоне main.tpl в нужное место (в блок Рекомендуемые товары, Новинки или Акционные товары, а можно сразу во все) добавляем следующий код:
{if $product->options} <!-- Характеристики товара --> <ul class="features"> {foreach $product->options as $f} <li> <label>{$f->name}</label> <span>{$f->value}</span> </li> {/foreach} </ul> <!-- Характеристики товара (The End)--> {/if}
Вот и все:) Радуемся.
P.S. Если кто-то испытывает трудности с редактированием вышеописанных файлов на фтп, можете скачать мои, в которых сделан вывод везде (категории товаров, новинки, рекомендуемые и акционные товары). Не забывайте только, что мои файлы взяты с версии движка 2.3.3