Как я могу получить данные из дополнительного поля K2, которое является массивом?

8

Я создаю сайт, который использует дополнительные поля K2, но я настраиваю вывод, чтобы я не просто извлекал весь блок дополнительных полей.

Обычно что-то подобное работает для отдельных полей:

<?php if($this->item->extraFields->streetaddressone->value != ''): ?>
 <span class="itemExtraFieldsValue Address1"><?php echo $this->item->extraFields->streetaddressone->value ?></span>
  <?php endif; ?>

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

Я немного взломан, поэтому я застрял на этом.

Брайан Пит
источник

Ответы:

9

Это зависит от того, в каком документе .php вы находитесь - если вы находитесь в item.php или в файлах category-item.php, должно работать следующее.

В верхней части документа добавьте этот код:

<!-- Call to prepare extra fields --> 
<?php  
$extrafields = array();
foreach($this->item->extra_fields as $item)
{    
$extrafields[$item->id] = $item->value;
}   
?>

Затем, где бы вы ни хотели вызвать значение заполненного поля, используйте это:

<?php if($extrafields[ID_NUMBER_OF_FIELD]!=''):?> <!-- if filled in, then call data -->
<?php echo $extrafields[ID_NUMBER_OF_FIELD];?> <!-- actual data call -->
<?php endif; ?>

tag.php работает немного по-другому, как и модули K2.

tag.php - вам не нужен дополнительный код в заголовке, следующий вызовет данные вашего поля.

<?php $extrafields = json_decode($item->extra_fields);?>
<?php foreach($extrafields as $key=>$value): ?>
<?php if($extrafields[$key]->id == 'ID_NUMBER_OF_FIELD'&&$extrafields[$key]->value!=''): ?>
<?php echo $extrafields[$key]->value; ?>,
<?php endif; ?> 
<?php endforeach; ?>

Опять же, с module_k2_content вам не нужен вызов данных верхнего уровня. Получите ваши полевые данные следующим образом:

<?php echo $item->extraFields->ALIAS_OF_FIELD->value ;?>

Надеюсь, это поможет.

Faye
источник
Я в item.php, и это полностью сработало. Спасибо!
Брайан Пит
Нет проблем!!! Я потратил много часов, чтобы понять это, рада, что это может помочь кому-то еще.
Фэй
К вашему сведению, этот код был изначально написан для меня Джорданом. Он тоже здесь, он знает потрясающие вещи и заставляет меня работать, когда я выгляжу так, словно собираюсь заплакать. joomla.stackexchange.com/users/75/jordan-ramstad
Фэй
1

Ответ @reactionfaye выше верен. Для справки: это часть K2 с ноября 2012 года :)

Первоначально представлен в этом блоге для выпуска K2 v2.6.2 ( http://getk2.org/blog/1068-k2-v262-now-available ):

Итак, как бы вы напрямую выводили отдельные дополнительные поля в ваших переопределениях K2? Просто. Просто сделайте что-то вроде этого (например, в item.php), чтобы получить дополнительное имя поля:

$ This-> item-> extraFields-> EXTRAFIELDALIASHERE-> имя

Чтобы получить дополнительное значение поля, вы просто сделаете это:

$ This-> item-> extraFields-> EXTRAFIELDALIASHERE-> значение

Теперь замените EXTRAFIELDALIASHERE фактическим псевдонимом дополнительного поля, которое вы хотите вывести.

fevangelou
источник
-3

Это можно сделать с помощью переопределения языка, избегая перезаписи ваших хаков при обновлении K2. Ищите константу K2_DATE_FORMAT_LC

shanDB
источник