Я использую плагин, который позволяет назначать несколько дополнительных групп полей для категории K2 — плагин работает нормально, проблема в том, что я могу получить данные из определенной группы дополнительных полей, а не перебирать все группы.
Вот код, который у меня есть (который был указан на сайте разработчика):
<?php
$extraFieldsByGroup = JArrayHelper::pivot($this->item->extra_fields, 'group');
$db = JFactory::getDbo();
$query = "SELECT * FROM #__k2_extra_fields_groups";
$db->setQuery($query);
$groups = $db->loadAssocList('id');
foreach ($extraFieldsByGroup as $key=>$extrafields){
$defaultGroup = '';
if(!is_array($extrafields)) $extrafields = array($extrafields);
if($key == $this->item->category->extraFieldsGroup)
$defaultGroup = "class='mefg_default'";
?>
<div id="group" class="<?php echo $groups[$key]['name'];?>" >
<div class="<?php echo $groups[$key]['name'];?>">
<div>
<h3><?php echo JText::_($groups[$key]['name']); ?></h3>
</div>
<ul>
<?php foreach ($extrafields as $key=>$extraField): ?>
<?php if($extraField->value != ''): ?>
<?php if($extraField->type == 'header'): ?>
<h4 class="itemExtraFieldsHeader"><?php echo $extraField->name; ?></h4>
<?php else: ?>
<div>
<span class="itemExtraFieldsLabel"><?php echo JText::_($extraField->name); ?>:</span>
<span class="itemExtraFieldsValue <?php echo $extraField->alias; ?>"><?php echo $extraField->value; ?></span></div>
<?php endif; ?>
</li>
<?php endif; ?>
<?php endforeach; ?>
</ul>
</div></div>
<?php
}
?>
<div class="clr"></div>
То, что я хотел бы сделать, это извлечь дополнительные поля из определенной группы и отобразить только их (значения) в цикле.
Есть «определенные» способы сделать это, такие как
<?php echo $item->extraFields->EXTRA_FIELD_ALIAS_HERE->value; ?>
но некоторые поля будут пустыми или будут иметь нулевые значения, поэтому создание группы пустых div-ов на самом деле не вариант для меня.
Переменная $ extraFieldsByGroup извлекает данные из всех «групп», а я ищу «2». Мои навыки php ограничены, но если кто-нибудь может указать мне правильное направление, чтобы создать цикл для дополнительных значений поля внутри группы «2», это будет очень ценно. Спасибо!
Дополнительные поля K2 хранятся в формате json — и это, возможно, причина, по которой вам трудно их извлекать. Увидеть: http://www.itoctopus.com/on-leveraging-the-power-of-k2s-extra-items
Кроме того, если вы предоставите больше контекста для того, что именно нужно сделать, я уверен, что смогу ответить на ваш вопрос гораздо более тщательно.
Других решений пока нет …