2011-07-26 4 views
0

私はエントリーに使用されるテンプレートを持っています。エントリには常に1の2つの値を持つフィールドがあります。フィールド値によって異なるものを表示するPHPを書くことはできますか?ExpressionEngine - テンプレート内のPHP、項目に特定のフィールド値がある場合は何かを印刷しますか?

アイブ氏は、次のことを試してみましたが、それは私のPHPエラーを与える:

<?php if($my_field == 'value1') { ?> 
    <h3>Value 1</h3> 
    <?php } else { ?> 
    <h3>Value 2</h3> 
<?php } ?> 

おかげ

答えて

0

をあなたがPHPを使用する必要はありません。あなたはこれらの条件文内の任意のEEタグの処理を行う上で計画している場合は、あなたがあれば使うべきではありません

{if my_field == 'foo'} 
    Value 1 
{if:else} 
    Value 2 
{/if} 

:それのように、条件文の間でコンテンツが常にが解析され、それ以外の構文を、しかし、不必要にサーバリソースを使用し、ロード時間を増加させます。

だから、その場合には、代わりに簡単な条件文を使用します。

{if my_field == 'foo'} 
    Value 1 
{/if} 
{if my_field == 'bar'} 
    Value 2 
{/if} 

参照:http://expressionengine.com/user_guide/templates/globals/conditionals.html

+0

私のために働いていませんが、EEのサイトやフォーラムを見ていて、私はそれを知っています。任意のアイデアをどのようにこれをデバッグする?ありがとう – Evans

+0

テンプレート( '{my_field}')に変数の値を出力することから始めて、それがあなたの考えであることを確かめることができます。 –

+0

私のテンプレートでは、{job_type}を使用するのは、チャネルタグ内で、 'value1'と 'value2'を複数回(それぞれのエントリに対して)出力する場合にのみ機能します。 – Evans

0

あなたのテンプレートでPHPを使用することなく、あなたのコンテンツを表示するには、ExpressionEngineののConditional Global Variablesを使用することができます。

次につながるネイティブExpressionEngineのの簡単な条件タグを使用して、あなたの例を書き換え:

{exp:channel:entries channel="channel_name" dynamic="off"} 
    {if "my_field" == "value1"} 
     Value 1 
    {/if} 

    {if "my_field" == "value2"} 
     Value 2 
    {/if} 
{/exp:channel:entries} 

あなたは前者が少ないリソース高価であることと、お使いのテンプレートのどこにでもsimple or complex conditionalsを使用することができますが、ExpressionEngine's Parse Order(PDF 、32 KB)は、評価方法や交換方法に影響することがあります。

ほとんどの場合、カスタムフィールドと条件文が{exp:channel:entries}タグループ内にあるようにして、ページの作成時に値を正しく出力してテストする必要があります。

+0

コードは、すべてのエントリに対して '値1'と '値2'のテキストを返します。このフィールドの値が、あなたのページにいるコンテンツのものであるかどうかは考慮されません。ありがとう – Evans

+0

カスタムフィールド 'my_field'を引用符で囲むのを忘れました。それは今正しく評価されるべきです。 – rjb

+0

ページ上で何も結果が得られません:( – Evans

関連する問題