質問: 配列であるk2追加フィールドからデータをプルするにはどうすればよいですか? k2の追加フィールドを使用するサイトを構築していますが、出力をカスタマイズして、追加のフィールドブロック全体をプルするだけではありません。通常、次のようなものが単一のエントリフィールドに対して機能します。<?php if($this->item->extrafields->streetaddressone->value != ''): ?> <span class="itemextrafieldsvalue address1"><?php echo $this->item->extrafields->streetaddressone->value ?></span> <?php endif; ?> しかし、私は複数選択リストであるフィールドがあり、配列全体をアイテムページの行にプルしたいと考えています。私はちょっとハックしているので、これにこだわっただけです。
回答: これは、使用している.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 ;?> お役に立てば幸いです。