从搜索结果中的变量解析变量

时间:2012-10-08 14:21:21

标签: php parsing expressionengine

为了创建搜索结果,我有一个存储页面路径的频道字段(例如/ products / bikes)。 每个条目都有自己的路径。

因为有不同的频道,每个频道都有它唯一命名的频道字段。 对于渠道"产品"它是:{products_search_path_nl}

在结果页面{exp:search:search_results}中,字段动态创建如下:{channel_short_name}_search_path_{language},显示为products_search_path_nl

问题是它无法解析。在查看EE的解析顺序之后,我尝试过:

  • 将其用作代码段
  • 将其分配给PHP变量并稍后在
  • 上输出
  • 更改PHP解析阶段(输入/输出)
  • 使用模板{embed="search/uri_embed"}
  • 嵌入它
  • 使用模板和模板变量{embed="search/uri_embed" passed_var="{channel_short_name}"}
  • 嵌入它
  • 在简单的条件语句{if "1" == "1"}
  • 中使用它

感谢阅读!任何帮助都会受到欢迎!

2 个答案:

答案 0 :(得分:1)

这是因为{channel_short_name}与所有自定义字段同时被解析,因为它们存在于同一个循环中。 {language}解析的原因是(我假设)它是一个早期解析的全局变量,由多语言模块或配置设置动态设置。

嵌入会工作,但是非常昂贵,因为你必须同时传递{channel_short_name}{entry_id},然后为每个结果运行一个完整的Channel Entries循环(例如,{{1 }})。

处理来自多个渠道多语言的搜索结果的首选方法是使用动态更改网站路径的多语言解决方案(因此所有{exp:channel:entries channel="{embed:channel_short_name}" entry_id="{embed:entry_id}" limit="1" disable="member_data|pagination|categories"}{{embed:channel_short_name}_search_path_{language}}{/exp:channel:entries}和{{ 1}}变量返回当前语言的正确URL,然后使用控制面板中每个通道的搜索结果路径设置(在管理→通道管理→通道→编辑→路径设置下) 。这样,您就可以在搜索结果中使用{path=""}和/或{permalink="}个变量。

希望有帮助吗?

答案 1 :(得分:0)

感谢Low's建议我使用了一个循环,因为这似乎不可能以一种适当的方式解决。

    {if "{channel_short_name}" == "news"}
        {if "{news_search_path_{language}}" != ""}
            <h3><a href="{base_url}{news_search_path_{language}}{url_title}">{title} </a></h3>
            {excerpt}
        {/if}

    {if:elseif "{channel_short_name}" == "products"}    
        {if "{products_search_path_{language}}" != ""}
            <h3><a href="{base_url}{products_search_path_{language}}{url_title}">{title} </a> </h3>
            {excerpt}
        {/if}

     // ....... and so on