2017-05-11 13 views
1

私はJoomla 3.7用のテンプレートをカスタマイズして、Joomla 3.7、カスタムフィールド(com_fields)の新機能を使用して、必要なテンプレートにCSSを使用して表示および書式設定できますそれらを表示します。テンプレート内のJoomlaカスタムフィールド

フィールドを表示するためにテンプレートで使用するPHPコードを教えてもらえますか、いくつかの例を挙げてください。

ありがとうございます。

答えて

2
確か

ない、それを行うための正しい方法が、私は同じニーズを持っていたし、私の周り/components/com_content/views/article/tmpl/default.phpからhttps://www.giudansky.com/news/12-coding/146-joomla-custom-fields

Copieのdefault.phpに基づいて仕事を見つけました テンプレート/ YOUR_THEME/HTML/com_content /記事/ default.php

追加次のコード行25に:

$myCustomFields = array(); 
    foreach($this->item->jcfields as $field) { 
     $myCustomFields[$field->name] = $field->value; 
    } 

$GLOBALS['myCustomFields'] = $myCustomFields; 

は、通常は、グローバルVARにあなたの記事に添付フィールドの内容を置きます。 テンプレートページでは、検索したフィールドの価値を知ることができます。 print_r($ GLOBALS ['myCustomFields']);配列の内容を表示します。良い答えを待っているトリックを行います

..

1

これは絶対にこれを行うには間違った方法であると思いますが、私は私の髪を引き裂くたので、私はカスタム戻すには、この迅速なDBクエリを思い付いテンプレート内のフィールド値。確かに、これは何らかのjoomlaプロトコルに違反していますか? 明らかに、これはあなたのテンプレートの$ articleidをあなたの記事のCurrent IDであるとみなしていることを前提としています。

私もよりよい解決策を待っているが、これは誰もがパーティーに遅れて取得するための

$db =& JFactory::getDBO(); 

$sql = "select * from #__fields_values where `item_id` = $articleid";                    
$db->setQuery($sql); 
$fieldslist = $db->loadObjectList(); 

echo $fieldslist[0]->value; 
echo $fieldslist[1]->value; 
echo $fieldslist[your field ID here]->value; 
3

を役に立てば幸いしています。

<?php 
    JLoader::register('FieldsHelper', JPATH_ADMINISTRATOR . '/components/com_fields/helpers/fields.php'); 
    $jcFields = FieldsHelper::getFields('com_content.article', $item, true); 
    $itemCustomFields = array(); 
    foreach($jcFields as $field) { 
     $itemCustomFields[$field->name] = $field->rawvalue; 
    } 
?> 
:場合は、あなたがこの便利なスニペットを使用することができます(!-templates本当にJを変更する唯一の方法であるので、「Joomlaのテンプレートのオーバーライド」をグーグル)モジュール・オーバーライドでカスタムフォームフィールドを使用したいです

これでカスタムフィールドを使用できます:itemCustomFields['customFieldName1']

記事の上書きはテストされていません。すぐに、もしそうなら、これは更新されます。

0

com_fieldsがどのようにレンダリングコードでそれを行うのかがわかりました。 Joomla!3.7以降では、[joomla_root] /components/com_fields/layouts/fields/render.phpにあります。ここで

あなたはJoomlaのは、持っている書式設定を再現するために必要な主な部品です:

JLoader::register('FieldsHelper', JPATH_ADMINISTRATOR . '/components/com_fields/helpers/fields.php'); 
<dl class="fields-container"> 
<?php foreach ($this->item->jcfields as $field) : ?> 
    <?php // If the value is empty do nothing ?> 
    <?php if (!isset($field->value) || $field->value == '') : ?> 
    <?php continue; ?> 
    <?php endif; ?> 
    <?php $class = $field->params->get('render_class'); ?> 
    <dd class="field-entry <?php echo $class; ?>"> 
    <?php echo FieldsHelper::render($context, 'field.render', array('field' => $field)); ?> 
    </dd> 
<?php endforeach; ?> 
</dl> 

これは、コンポーネントまたはアーティクルで使用可能なすべてのタグをループ。このメソッドの素晴らしい点は、フィールドにインクルードするレンダリングクラスがまだ適用されていることです。

は自動的にフィールド上を表示しません自動表示を設定してください。それ以外の場合は、ページビューに2回表示されます。

表示する特定のフィールドをターゲットにする場合は、フィールドの名前を使用してターゲットを表示できます。 (ラベルと値のペアは下にあります)。詳細についてはthe field Joomla docsを参照してください。

関連する問題