Здравствуйте! Не могу найти решение проблемы. Может тут подскажут. Необходимо вывести extraField в шаблоне category.php, то есть чтобы поля работали, как и в шаблоне материала item.php.
Я смастери для себя такой вот вариант Код (PHP): $modelItem = new K2ModelItem(); // extra field alias $customLinkAlias = "_custom_link"; function getAssocArrayInObj($extraFields) { foreach( $extraFields as $key => $item ) { $buffer = $item->alias; unset($item->alias); $extraFields[$buffer] = $item; unset($extraFields[$key]); } return $extraFields; } function getExtraFieldByAlias($itemExtraFields, $alias) { if( !empty($itemExtraFields[$alias]) && isset($itemExtraFields[$alias]->value) ) { return $itemExtraFields[$alias]->value; } else { return NULL; } } foreach ( $this->leading as $key => $item ) : /* GET ASSOCIATIVE EXTRA FIELDS ARRAY */ $item->extraFields = $modelItem->getItemExtraFields($item->extra_fields, $item); $item->extraFields = getAssocArrayInObj($item->extraFields); /* CHECK CUSTOM FIELD ( CUSTOM LINK ) */ /*получаем значение поля кастом линк вот так*/ $exLink = getExtraFieldByAlias($item->extraFields, $customLinkAlias); /*или напрямую */ $exLink = $item->extraFields['_custom_link']->value; endforeach; --- добавлено: 13.01.2016, первое сообщение размещено: 13.01.2016 --- Переосмыслил)) Код (PHP): $modelItem = new K2ModelItem(); function getItemExtraFieldsForCategory($extraFields) { if(empty($extraFields)) { return; } $extraFieldsObj = new stdClass(); foreach ($extraFields as $key => $value) { $extraFieldsObj->{$value->alias} = $value; } return $extraFieldsObj; } /* EXTRA FIELDS ALIAS */ $customLinkAlias = "_customlink"; $customImageAlias = "_customimage"; foreach ( $this->leading as $key => $item ) : /* GET EXTRA FIELDS */ $item->extraFields = $modelItem->getItemExtraFields($item->extra_fields, $item); $item->extraFields = getItemExtraFieldsForCategory($item->extraFields); /* CHECK CUSTOM FIELD ( CUSTOM UPPER IMAGE ) */ $customImage = $item->extraFields->$customImageAlias->value; /* ИЛИ $customImage = $item->extraFields->_customimage->value; */ endforeach;
Спасибо огромное за ответ) Но собственно затык теперь в выводе самого поля в шаблоне(какие переменные использовать, хотя б маленький кусочек foreach), не поможете?
Если правильно понял Код (PHP): foreach ( $this->leading as $key => $item ) : /* GET EXTRA FIELDS */ $item->extraFields = $modelItem->getItemExtraFields($item->extra_fields, $item); $item->extraFields = getItemExtraFieldsForCategory($item->extraFields); /* CHECK CUSTOM FIELD ( CUSTOM UPPER IMAGE ) */ $customImage = $item->extraFields->$customImageAlias->value; /* ИЛИ $customImage = $item->extraFields->_customimage->value; */ /*------------*/ foreach($item->extraFields as $eKey=>$eItem): echo $eItem->name.'<br>'; echo $eItem->value; endforeach; /*------------*/ endforeach;