web-gelistirme-sc.com

Dizi olan bir K2 ekstra alanından nasıl veri çekebilirim?

K2 ekstra alanları kullanan bir site inşa ediyorum, ancak çıktıyı özelleştiriyorum, bu yüzden sadece tüm ekstra alan bloğunu çekmiyorum.

Normalde böyle bir şey tek giriş alanları için çalışır:

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

Ancak çoklu seçim listesi olan bir alanım var ve tüm diziyi öğe sayfamdaki bir satıra çekmek istiyorum.

Ben biraz hack'im, bu yüzden buna takıldım.

8
Brian Peat

Hangi .php belgesinde bulunduğunuza bağlıdır - item.php veya category-item.php dosyalarındaysanız, aşağıdakilerin çalışması gerekir.

Dokümanın üstüne şu kodu ekleyin:

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

Ardından, doldurulmuş alanın değerini aramak istediğiniz her yerde şunu kullanın:

<?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 Modülleri gibi biraz farklı çalışır.

tag.php - kafanın içinde fazladan koda ihtiyacınız yoktur, aşağıdakiler alan verilerinizi çağırır.

<?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; ?>

Yine, module_k2_content ile en iyi veri çağrısına ihtiyacınız yoktur. Alan verilerinizi şu şekilde alın:

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

Umarım yardımcı olur.

9
Faye

@reactionfaye'nin yukarıdaki yanıtı doğru. Referans olarak, bu Kasım 2012'den beri K2'nin bir parçası oldu :)

Başlangıçta bu blog yazısında K2 v2.6.2'nin yayınlanması için tanıtıldı ( http://getk2.org/blog/1068-k2-v262-now-available ):

Peki, K2 geçersiz kılmalarınızdaki ayrı ayrı alanları doğrudan nasıl çıktılarsınız? Basit. Ek alan adını almak için böyle bir şey (ör. İtem.php'de) yapmanız yeterlidir:

$ This-> item-> extraFields-> EXTRAFIELDALIASHERE-> adı

Ek alan değerini elde etmek için bunu yapmanız yeterlidir:

this-> item-> extraFields-> EXTRAFIELDALIASHERE-> değerini, $

Şimdi EXTRAFIELDALIASHERE'i çıktısını almak istediğiniz ekstra alanın gerçek takma adı ile değiştirin.

1
fevangelou