【问题标题】:ExpressionEngine template and PHP parsing orderExpressionEngine 模板和 PHP 解析顺序
【发布时间】:2013-08-15 20:49:14
【问题描述】:

我正在尝试自动化一些列表,因此需要运行一些 PHP,PHP 用于检测哪个类别与当前页面的 url 标题相同,然后输出具有相同 url 的类别的 ID标题。

然后我想将此 ID 应用于产品列表,以便它输出相关项目(如类别,但提供使用结构的灵活性)。

但是我猜是因为我在同一页面上定义变量它由于某种原因不起作用,有什么想法吗?我在模板中的 PHP 解析设置为“输出”。

         {exp:channel:entries}
           {categories}{if category_url_title == "{last_segment}"}<?php $category = '{category_id}'; ?>{/if}{/categories}
        {/exp:channel:entries}

        {exp:channel:entries category="<?php echo $category; ?>" dynamic="no" channel="products"}
          <h2>{title}</h2>
        {/exp:channel:entries}

【问题讨论】:

    标签: php parsing expressionengine categories


    【解决方案1】:

    别打扰!保持简单:

    Low's Seg2Cat

    使用{last_segment_category_id} 将上面的所有代码替换为:

    {exp:channel:entries category="{last_segment_category_id}" dynamic="no" channel="products"}
        <h2>{title}</h2>
    {/exp:channel:entries}
    

    您的代码永远无法工作的原因是因为您希望第一部分首先运行 EE,然后 PHP 保存变量,然后您希望 PHP 继续并设置第二部分,然后您想要 EE再次启动并使用 PHP 变量。一个接着一个,恐怕不是在两个之间跳跃。

    解决此问题的另一种方法是利用嵌入:

    第一个模板:

    {exp:channel:entries}
        {categories}{if category_url_title == "{last_segment}"}{embed="my-templates/2nd-template" category="{category_id}"}{/if}{/categories}
    {/exp:channel:entries}
    

    第二个模板:

    {exp:channel:entries category="{embed:category}" dynamic="no" channel="products"}
        <h2>{title}</h2>
    {/exp:channel:entries}
    

    【讨论】:

    • 谢谢,我最终使用了免费赠品类别 ID,但低 seg2cat 看起来非常相似,必须检查一下!
    猜你喜欢
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    • 2019-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-23
    相关资源
    最近更新 更多