В данной статье расскажу о том, как автоматизировать кастомизацию элементов в магазине K2.
Рассмотрим вывод опций, цель - привлечь внимание, для этого на плитке товара выводим опцию "Бесплатная доставка".
Подготовка:
1.Создаем дополнительное поле, тип "мультисписок". Нам необходимо будет обработать условие, когда выбрано значение "Нет"
2.Назначаем опцию товару
Теперь необходимо настроить вывод этой опции, открываем файл:
/components/com_k2/templates/default/category_item.php
Ищем блок :
<?php if($this->item->params->get('catItemExtraFields') && count($this->item->extra_fields)): ?>
<!-- Item extra fields -->
<div class="catItemExtraFields">
<h4><?php echo JText::_('K2_ADDITIONAL_INFO'); ?></h4>
<ul>
<?php foreach ($this->item->extra_fields as $key=>$extraField): ?>
<?php if($extraField->value != ''): ?>
<li class="<?php echo ($key%2) ? "odd" : "even"; ?> type<?php echo ucfirst($extraField->type); ?> group<?php echo $extraField->group; ?>">
<?php if($extraField->type == 'header'): ?>
<h4 class="catItemExtraFieldsHeader"><?php echo $extraField->name; ?></h4>
<?php else: ?>
<span class="catItemExtraFieldsLabel"><?php echo $extraField->name; ?></span>
<span class="catItemExtraFieldsValue"><?php echo $extraField->value; ?></span>
<?php endif; ?>
</li>
<?php endif; ?>
<?php endforeach; ?>
</ul>
<div class="clr"></div>
</div>
<?php endif; ?>
В своем примере я предполагаю, что других дополнительных полей на товаре не будет, иначе можно добавить поиск по алиасу:
Для алиаса "op", если нет значения "нет", то вывести блок со значением опции:
<?php if($extraField->alias != 'op'): ?>
Далее необходимо добавить условия:
<?php if($this->item->params->get('catItemExtraFields')): ?>
<!-- Item extra fields -->
<?php foreach ($this->item->extra_fields as $key=>$extraField): ?>
<?php if($extraField->value != ''): ?>
<?php if($extraField->type == 'header'): ?>
<h4 class="catItemExtraFieldsHeader"><?php echo $extraField->name; ?></h4>
<?php else: ?>
<?php if($extraField->value != 'нет'): ?>
<div class="catItemExtraFields" id="ef">
<span class="catItemExtraFieldsValue"><?php echo $extraField->value; ?></span>
</div>
<?php endif; ?>
<?php endif; ?>
<?php endif; ?>
<?php endif; ?>
<?php endforeach; ?>
<div class="clr"></div>
<?php endif; ?>
Еще необходимо добавить css правило для блока <div class="catItemExtraFields" id="ef">:
#ef {
background: rgb(218,251,198);
}
Результат:
Можно также сделать вывод не текстового значения, а блока div со встроенным правилом, в котором будет ссылка на изображение. Значение поля будет имя файла.
<div style="background: url(/images/lent-iphone.png);" class="catItemExtraFields" id="ef"></div>
И добавить css правило:
#ef {
max-width: 261px;
height: 64px;
background-repeat: no-repeat;
}
Получаем: