Как отобразить дополнительные поля в статье с помощью K2 - PullRequest
4 голосов
/ 05 октября 2010

в настоящее время у меня установлен Jreviews, и я хотел бы заменить его на K2, чтобы перечислить специализированные магазины с адресами, телефонами, картами, часами работы ...

С K2 я думаю, мне нужно будет определить дополнительные пользовательские поля для хранения этой конкретной информации. Нет проблем.

Но как мне настроить отображение этих полей в подробном товаре / товарах для конкретного магазина?

Большое спасибо,

Тиби.

Ответы [ 5 ]

5 голосов
/ 16 декабря 2010
// In the item template you can skip this first line...
$this->item->extra_fields = K2ModelItem::getItemExtraFields($this->item->extra_fields);

$extraFlds = array();
if ( $this->item->extra_fields ){
  foreach ( $this->item->extra_fields as $key=>$extraField ){
     $extraFlds[ $extraField->name ] = $extraField->value;
  }
}

Затем вы можете получить доступ к вашим дополнительным полям в ассоциированном массиве, например $extraFlds['my field']

4 голосов
/ 13 августа 2013

После многих попыток, вот что я использовал и работал для меня

<?php 
// if form is empty show default form
$k2obj = new K2ModelItem(); 
$fields = $k2obj->getItemExtraFields($this->item->extra_fields, $this->item); 
//echo $this->item->extraFields->State->name; 
echo $this->item->extraFields->FIELD_ALIAS->value;

?>

Это работает и отметил, что все привязано к созданию экземпляра класса.

Примечание: я использую этов k2 item i версия 2.6.7 Joomla 2.5.14

1 голос
/ 11 апреля 2013

Проблема в том, что $this->item->extra_fields на самом деле является строкой JSON , полученной из базы данных, поэтому сначала необходимо ее декодировать.Его структура довольно сложна (и, к сожалению, каждое поле помечено его идентификатором, его имя вообще не отображается), вы увидите его, если выполните:

print_r($this->item->extra_fields);`

Если вы хотите вызвать полезначения по имени поля я бы сделал так:

if ($this->item->params->get('itemExtraFields')) {

$item_extra_fields = json_decode($this->item->extra_fields);

$put_your_extra_field1_name_here = $item_extra_fields[1]->value;
$put_your_extra_field2_name_here = $item_extra_fields[2]->value;
$put_your_extra_field3_name_here = $item_extra_fields[3]->value;
$put_your_extra_field4_name_here = $item_extra_fields[4]->value;
}

Обратите внимание, что это полезно, если дополнительное поле, которое вам нужно, это текст, но это может быть массив или что-то еще, поэтому вам может потребоваться коднемного больше.Надеюсь, это полезно!

1 голос
/ 29 мая 2011

Если вы хотите показать поле custum в списке таблиц k2, перейдите на:

компоненты \ com_k2 \ Шаблоны \ умолчанию \ category_item.php

и отредактируйте файл рядом со строкой 136 следующим образом:

<?php foreach ($this->item->extra_fields as $key=>$extraField):
            **if(strpos($extraField->name,"/")){**
            ?>
            <li class="<?php echo ($key%2) ? "odd" : "even"; ?> type<?php echo ucfirst($extraField->type); ?> group<?php echo $extraField->group; ?>">
                <span class="catItemExtraFieldsLabel"><?php echo $extraField->name; ?></span>
                <span class="catItemExtraFieldsValue"><?php echo $extraField->value; ?></span>
            </li>
            <?php **}** endforeach; ?>

я делаю это на своем сайте: www.joomir.com

0 голосов
/ 09 октября 2010

В K2 вы устанавливаете параметры для отображения элемента на уровне категории. Существует возможность отображать дополнительные поля как в параметрах представления элемента в списках категорий, так и в параметрах представления элемента.

По умолчанию встроенный шаблон K2 отображает дополнительные поля под заголовком «Дополнительная информация» с неупорядоченным списком имен и значений полей. Вы можете переопределить этот шаблон и сделать так, чтобы дополнительные поля отображались так, как вам нравится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...