ExpressionEngine - 模板中的PHP,如果条目具有某些字段值,则打印一些东西?

时间:2011-07-26 11:18:04

标签: expressionengine

我有一个用于条目的模板。条目的字段始终具有2个值中的1个。我可以编写一些PHP来根据字段值显示不同的东西吗?

我尝试过以下但它给了我一个PHP错误:

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

谢谢

2 个答案:

答案 0 :(得分:0)

您不必使用PHP。

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

如果您计划在这些条件中进行任何EE标记处理,则不应使用if:else语法,因为条件之间的内容将始终进行解析,但只是没有显示,不必要地使用服务器资源并增加加载时间。

因此,在这种情况下,请使用简单的条件:

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

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

答案 1 :(得分:0)

您可以使用ExpressionEngine的Conditional Global Variables来显示您的内容,而无需在模板中使用PHP。

使用原生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}标记循环内,以便在构建页面时正确输出和测试值。