所以我是EE开发的新手,但我在CI方面有相当丰富的经验。
我想设置一个像这样的网址结构:
/channel-name/*
/channel-name/*/videos
/channel-name/*/shows
/channel-name/*/awards
我现在能想到的唯一方法就是在模板中使用条件。有没有办法路由URL类似于CodeIgniter允许我这样做的方式?
如果我遗漏了一些明显的东西,请原谅我的无知!
感谢。
答案 0 :(得分:3)
在你的情况下,我可能会非常使用嵌入式标签。嵌入是在EE中完成大量工作的好方法,因为它们可以帮助您绕过EE与嵌套循环相关的一些奇怪的解析顺序问题。例如:
{exp:channel:entries channel="my_channel_name" url_title="{segment_2}" limit="1"}
{if segment_3 == "awards"}
{embed="channel/awards" entry_id="{entry_id}"
{if:elseif segment_3 == "shows"}
...
{if:else}
{embed="/channel/basic_entry" entry_id="{entry_id}"}
{/if}
{exp:channel:entries}
像Switchee这样的东西可以使这样的控制语句更好一些。 http://www.google.ca/search?gcx=c&sourceid=chrome&ie=UTF-8&q=switchee
你也可以使用Freebie http://devot-ee.com/add-ons/freebie(完全披露,我这样做)告诉EE不要解析URL的某些部分,这样你就可以更自由地玩它了。
答案 1 :(得分:1)
这是EE中路线的一个很好的解释。既然EE现在是CI2,那么路由的工作方式非常接近:
http://venodesigns.net/2011/05/07/when-expressionengine-defaults-are-not-enough/
答案 2 :(得分:1)
使用类别将是ExpressionEngine中最符合您需求的逻辑分类法,并为您提供所需的URL结构。
默认情况下,ExpressionEngine URL类别段如下所示:
/index.php/template_group/template_name/CategoryID
使用您的示例,您将使用以下类别创建Category Group:
许多开发人员将其模板组命名为与频道名称匹配,这使understanding ExpressionEngine URLs符合逻辑。
开箱即用,您的网址段如下所示:
/index.php/channel-name/template-name/C1
我建议您设置一个Category URL Indicator,这样您就可以在您的网址中使用标识符(例如category
)代替非语义类别ID。
类别URLS将类似于:
/index.php/channel-name/category/videos
通过removing index.php from ExpressionEngine URLs更进一步,您可以实现:
/channel-name/category/videos
正如您在ExpressionEngine中发现的那样,URL和模板的灵活性允许组织和显示数据的多种方式。
例如,您可以使用标记而不是类别来对数据进行分组,但是您需要使用第三方加载项,因为标记是不包括在ExpressionEngine的核心功能中。
Solspace Tag Module,DevDemon的Tagger和Jamie Rumbelow的Taggable都是三个合适的候选人。