0

为了创建搜索结果,我有一个存储页面路径的频道字段(例如 /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"}

谢谢阅读!任何帮助将不胜感激!

4

2 回答 2

1

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

并且 embed 可以工作,但是非常昂贵,因为您必须同时传递{channel_short_name}and {entry_id},然后为每个结果运行整个 Channel Entries 循环(例如,{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})。

处理来自多个渠道多语言的搜索结果的首选方法是使用动态更改站点路径的多语言解决方案(因此所有{path=""}{permalink="}变量都返回当前语言的正确 URL),然后使用搜索结果控制面板中每个频道的路径设置(在Admin → Channel Administration → Channels → Edit → Path Settings下)。这将允许您在搜索结果中使用{auto_path}和/或{id_auto_path}变量。

希望有帮助吗?

于 2012-10-09T16:51:15.167 回答
0

感谢Low 的建议,我使用了一个循环,因为这似乎无法以适当的方式解决。

    {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
于 2012-10-10T08:30:13.677 回答