【问题标题】:Redirect when last segment missing最后一段丢失时重定向
【发布时间】:2012-11-06 09:14:03
【问题描述】:

我有一个单一的条目 url 结构,例如:

www.site.com/template_group/template_1/entry_id

但我希望它是:

www.site.com/template_group/template_1/entry_id/url_title。

Entry_id 将是馈送 exp:channel:entries 的段。如何将 www.site.com/template_group/template_1/entry_id 重定向到 www.site.com/template_group/template_1/entry_id/url_title。

非常感谢!

【问题讨论】:

    标签: expressionengine


    【解决方案1】:

    类似下面的东西应该可以工作 - 它未经测试,但它可以让你很好地了解如何继续它。

    {if segment_4==""}
    {exp:channel:entries channel="x" limit="1" dynamic="no" entry_id="{segment_3}"}
        {redirect="template_group/template_1/{entry_id}/{url_title}"}
    {/exp:channel:entries}
    {/if}
    

    【讨论】:

    • 谢谢你!非常感谢。
    【解决方案2】:

    将其放在模板的最顶部:

    {if segment_4 == ""}
       {exp:channel:entries channel="channel_goes_here" entry_id="{segment_3}"}
           {redirect="{site_url}/{segment_1}/{segment_2}/{segment_3}/{url_title}
       {/exp:channel:entries}
    {/if}
    

    这将检查您是否设置了第四个片段,如果没有,它将获取包含您的 entry_id 的第三个片段,将其提供给频道条目标签,该标签会返回您需要的 url_title。使用这个 url_title 你可以很容易地重定向到正确的页面。

    【讨论】:

    • 跟进:您甚至不必将 entry_id 提供给频道条目标签,表达式引擎会处理这些。但是指定 entry_id 可能会导致更快的页面加载。
    • 使 seg1 到 seg3 动态化的奖励点。使用 preload_replace 使待检查段动态/可配置获得额外奖励。
    【解决方案3】:

    janvl 和 madebyhippo 的好答案

    如果您使用complex conditionals(答案中的答案很简单,因此您不会遇到这个问题)请注意,EE 将解析它们包含的频道条目标签,这会降低性能。

    如果您发现自己处于这种情况,最好使用诸如 switcheeifelse 之类的 Mark "The croxton" 插件来完全避免该问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-31
      • 2013-06-19
      相关资源
      最近更新 更多