web-dev-qa-db-ja.com

配列であるK2追加フィールドからデータをプルするにはどうすればよいですか?

K2の追加フィールドを使用するサイトを構築していますが、出力をカスタマイズして、追加のフィールドブロック全体をプルするだけではありません。

通常、次のようなものが単一のエントリフィールドに対して機能します。

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

しかし、私は複数選択リストであるフィールドがあり、配列全体をアイテムページの行にプルしたいと考えています。

私はちょっとハックしているので、これにこだわっただけです。

8
Brian Peat

これは、使用している.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 ;?>

お役に立てば幸いです。

9
Faye

上記の@reactionfayeの回答は正しいです。参考までに、これは2012年11月以降、K2の一部となっています。

K2 v2.6.2のリリースに関するこのブログ投稿で最初に紹介されました( http://getk2.org/blog/1068-k2-v262-now-available ):

では、K2オーバーライドで個々の追加フィールドを直接出力するにはどうすればよいでしょうか。シンプル。追加のフィールド名を取得するには、次のように(例えば、item.phpで)してください:

$ this-> item-> extraFields-> EXTRAFIELDALIASHERE-> name

追加のフィールド値を取得するには、次のようにします。

$ this-> item-> extraFields-> EXTRAFIELDALIASHERE-> value

EXTRAFIELDALIASHEREを、出力する追加フ​​ィールドの実際のエイリアスに置き換えます。

1
fevangelou