Здравствуйте. Подскажите пожалуйста как сделать вывод характеристик товара на странице категории.
http://webkab.ru/vyvesti-svojstva-tovara-simpla/
Нашел решение для Simpla, но на импере реализовать по этой инструкции не выходит.
Здравствуйте. Подскажите пожалуйста как сделать вывод характеристик товара на странице категории.
http://webkab.ru/vyvesti-svojstva-tovara-simpla/
Нашел решение для Simpla, но на импере реализовать по этой инструкции не выходит.
Вопрос не понят, что вас интересовало:
Поэтому приведу примеры для каждого случая.
Характеристики в мини карточках Когда пользователь заходит в категорию, её страница отрисовывается шаблоном products.htm (или products.tpl, так как Импера поддерживает оба файловых расширения). Если на текущей странице категории присутствуют товары, значит в шаблоне доступна переменная $products - массив записей о товарах текущей страницы (то есть с учётом пагинации, фильтра, сортировки и т.п.).
{foreach $products as $item} <!-- мини карточка товара --> <div class="product-card"> ... ... <!-- характеристики --> {if !empty($item->properties_tree)} <ul class="features"> {foreach $item->properties_tree as $property_values} {$property = reset($property_values)} <li> <label>{$property->name}</label> <span>{$property->value}</span> </li> {/foreach} </ul> {/if} </div> {/foreach}
Характеристики категории На странице категории в шаблон также поступает переменная $properties - массив записей о характеристиках в текущей категории.
{if !empty($properties)} {foreach $properties as $item} {if !empty($item->options)} <h2>{$item->name}</h2> <ul class="features"> {foreach $item->options as $option} <li> <label>{$item->name}</label> <span>{$option->value}</span> </li> {/foreach} </ul> {/if} {/foreach} {/if}
О структурах переменных У каждой из переменных существует свой набор полей, а примеры выше показывают лишь общий процесс обработки конретной переменной. Узнать структуру полей можно так:
{dumpStructure from=properties}
{dumpStructure from=products}
Прошу подсказать, как можно сделать так, чтобы один (несколько) из блоков характеристик на странице категории уже был с отмеченным чекбоксом?
Например, есть набор характеристик: вес, цвет, наличие; как можно сделать так, чтобы в блоке-фильтре "наличие" при открытии категории уже стояла "галочка" "есть в наличии", и при этом на странице категории показывались бы товары с учётом этого фильтра?
Спасибо.
Все уже придумано за нас в бесплатных шаблонах.
Например разберите как устроен фильтр в шаблоне Bexam. Файл BexamDefault\html\products.htm.
Потом соберите свой прототип. Вот например.
{* <!-- =========================================================================== | | | Предполагаем, в запросе страницы поступили какие-то параметры фильтра. | | | ============================================================================ --> *} {$filter = $smarty.request.filter_property|default:[]} {* <!-- =========================================================================== | | | Перебираем свойства товаров в текущей категории. | | | ============================================================================ --> *} {if !empty($properties)} {foreach $properties as $item} {$id = $item->property_id} {$checked = (empty($filter.$id)) ? 'checked' : ''} {* <!-- =================================================================== | | | Берем URI текущей страницы без GET-параметра текущего свойства. | | | ==================================================================== --> *} {$param = "filter_property[$id]"} {requestUri except="$param*" nopages=TRUE assign=uri} {* <!-- =================================================================== | | | Название свойства. | | | ==================================================================== --> *} <div class="prop"> <h6>{name}</h6> <ul> {* <!-- =========================================================== | | | Флаг "Убрать свойство из фильтра". | | | ============================================================ --> *} <li> <a href="{$uri}"> <input type="checkbox" {$checked} /> Все </a> </li> {* <!-- =========================================================== | | | Планируем добавить GET-параметр в конец URI. | | | ============================================================ --> *} {$uri = (preg_match('/\?/u', $uri)) ? "$uri&" : "$uri?"} {* <!-- =========================================================== | | | Перебираем значения свойства. | | | ============================================================ --> *} {if !empty($item->options)} {foreach $item->options as $o} {$value = $o->value} {$checked = (isset($filter.$id.$value)) ? 'checked' : ''} {* <!-- =================================================== | | | Флаг "+ фильтровать по свойству с таким значением". | | | ==================================================== --> *} <li> <a href="{$uri}{$param}[{$value|escape}]"> <input type="checkbox" {$checked} /> {$value} </a> </li> {/foreach} {/if} </ul> </div> {/foreach} {/if}
<input> здесь выполняет декоративную функцию галочки как class="selected" в шаблоне Bexam.
От разработчика: Спасибо Ярику за ответ. Я позволил себе прокомментировать ваш код, чтобы посторонний человек мог понять, как работает фильтр и какой цели служит каждый блок кода.
Input декорация "флажок" ))) ну ваще. А css, не то, или специально хотели усложить html?