配列である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 ;?>

お役に立てば幸いです。


私はitem.phpにいて、それは完全に機能しました。ありがとうございました!
ブライアンピート2014

問題ない!!!私はこれを理解するのに何時間も費やしました、それが他の誰かを助けることができて嬉しかったです。
Faye 14

ちなみに、そのコードはもともとジョーダンが私のために書いたものです。彼もここにいます、彼は素晴らしいものを知っていて、私が泣きそうになったときに私のために物事がうまくいくようにします。joomla.stackexchange.com/users/75/jordan-ramstad
フェイ

1

上記の@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を、出力する追加フ​​ィールドの実際のエイリアスに置き換えます。


-3

これは、言語のオーバーライドで実行できます。K2をアップグレードするときにハックを上書きしないようにします。定数K2_DATE_FORMAT_LCを探します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.