Joomla 3.x k2 Вывести Extra Fields в category.php

Тема в разделе "Модернизация расширений", создана пользователем Virall, 10.01.2016.

  1. Virall
    Offline

    Virall Недавно здесь

    Регистрация:
    03.12.2014
    Сообщения:
    3
    Симпатии:
    0
    Пол:
    Женский
    Здравствуйте! Не могу найти решение проблемы. Может тут подскажут.
    Необходимо вывести extraField в шаблоне category.php, то есть чтобы поля работали, как и в шаблоне материала item.php.
     
  2.  
  3. |title|
    Offline

    |title| Активист

    Регистрация:
    19.09.2014
    Сообщения:
    105
    Симпатии:
    26
    Пол:
    Мужской
    Я смастери для себя такой вот вариант

    Код (PHP):
    1. $modelItem = new K2ModelItem();
    2.  
    3. // extra field alias
    4. $customLinkAlias = "_custom_link";
    5.  
    6. function getAssocArrayInObj($extraFields)
    7.     {
    8.         foreach( $extraFields as $key => $item )
    9.         {
    10.             $buffer = $item->alias;
    11.             unset($item->alias);
    12.             $extraFields[$buffer] = $item;
    13.             unset($extraFields[$key]);
    14.         }
    15.         return $extraFields;
    16.     }
    17.  
    18. function getExtraFieldByAlias($itemExtraFields, $alias)
    19.     {
    20.         if( !empty($itemExtraFields[$alias]) && isset($itemExtraFields[$alias]->value) )
    21.         {
    22.             return $itemExtraFields[$alias]->value;
    23.         }
    24.         else
    25.         {
    26.             return NULL;
    27.         }
    28.     }
    29.  
    30. foreach ( $this->leading as $key => $item ) :
    31.  
    32.         /* GET ASSOCIATIVE EXTRA FIELDS ARRAY */
    33.         $item->extraFields = $modelItem->getItemExtraFields($item->extra_fields, $item);
    34.         $item->extraFields = getAssocArrayInObj($item->extraFields);
    35.    
    36.         /* CHECK CUSTOM FIELD ( CUSTOM LINK ) */
    37. /*получаем значение поля кастом линк вот так*/
    38.         $exLink = getExtraFieldByAlias($item->extraFields, $customLinkAlias);
    39. /*или напрямую */
    40. $exLink = $item->extraFields['_custom_link']->value;
    41.  
    42. endforeach;

    --- добавлено: 13.01.2016, первое сообщение размещено: 13.01.2016 ---
    Переосмыслил))
    Код (PHP):
    1. $modelItem = new K2ModelItem();
    2.  
    3. function getItemExtraFieldsForCategory($extraFields)
    4. {
    5.         if(empty($extraFields))
    6.         {
    7.             return;
    8.         }
    9.      
    10.         $extraFieldsObj = new stdClass();
    11.      
    12.         foreach ($extraFields as $key => $value)
    13.             {
    14.                 $extraFieldsObj->{$value->alias} = $value;
    15.             }
    16.         return $extraFieldsObj;
    17. }
    18.  
    19. /* EXTRA FIELDS ALIAS */
    20. $customLinkAlias = "_customlink";
    21. $customImageAlias = "_customimage";
    22.  
    23. foreach ( $this->leading as $key => $item ) :
    24.      
    25.         /* GET EXTRA FIELDS */
    26.         $item->extraFields = $modelItem->getItemExtraFields($item->extra_fields, $item);
    27.         $item->extraFields = getItemExtraFieldsForCategory($item->extraFields);  
    28.  
    29.         /* CHECK CUSTOM FIELD ( CUSTOM UPPER IMAGE ) */
    30.         $customImage = $item->extraFields->$customImageAlias->value;
    31.         /* ИЛИ
    32.         $customImage = $item->extraFields->_customimage->value;
    33.         */
    34.  
    35. endforeach;
     
    Последнее редактирование: 13.01.2016
    Virall нравится это.
  4. Virall
    Offline

    Virall Недавно здесь

    Регистрация:
    03.12.2014
    Сообщения:
    3
    Симпатии:
    0
    Пол:
    Женский
    Спасибо огромное за ответ) Но собственно затык теперь в выводе самого поля в шаблоне(какие переменные использовать, хотя б маленький кусочек foreach), не поможете?
     
  5. |title|
    Offline

    |title| Активист

    Регистрация:
    19.09.2014
    Сообщения:
    105
    Симпатии:
    26
    Пол:
    Мужской
    Если правильно понял
    Код (PHP):
    1. foreach ( $this->leading as $key => $item ) :
    2.    
    3.         /* GET EXTRA FIELDS */
    4.         $item->extraFields = $modelItem->getItemExtraFields($item->extra_fields, $item);
    5.         $item->extraFields = getItemExtraFieldsForCategory($item->extraFields);
    6.  
    7.         /* CHECK CUSTOM FIELD ( CUSTOM UPPER IMAGE ) */
    8.         $customImage = $item->extraFields->$customImageAlias->value;
    9.         /* ИЛИ
    10.         $customImage = $item->extraFields->_customimage->value;
    11.         */
    12.  
    13. /*------------*/
    14. foreach($item->extraFields as $eKey=>$eItem):
    15. echo $eItem->name.'<br>';
    16. echo $eItem->value;
    17. endforeach;
    18. /*------------*/
    19.  
    20. endforeach;
     

Поделиться этой страницей

Загрузка...