DNN平台的原始和最好的优势是创建自己的内容是多么容易,以及扩展平台以创建特定的内容是多么容易,如博客、论坛、电子商务或任何你能想象到的东西。
继创建新内容的便利性之后,为网站创建新皮肤的便利性,为网站提供一致的外观和感觉,让设计师可以自由地为访问者创造引人注目的体验。
DNN的故事一直是使用的简单性,再加上在需要更多定制时的可扩展性。
当涉及到DNN站点的url时,DNN 7.1继续讲述这个故事。创建漂亮的url是DNN 7.1体验的一部分。对URL的控制还不止于此——那些希望自定义URL寻找更高级功能的方式的人现在有能力扩展URL行为,超出标准的DNN处理。拥有优秀的标准和简单的可扩展性的力量现在也适用于网站的URL方案。
一个新的可扩展性选项:扩展URL提供程序
扩展URL提供者是DNN扩展,就像皮肤或模块一样。它不改变内容的外观或页面的设计,而是允许修改页面的URL,或允许对URL进行特定的处理,例如返回重定向到不同的URL,或返回“404 page Not Found”错误。
这主要适用于用于DNN模块显示内容的url。默认情况下,任何能够改变DNN页面上显示内容的内容模块都包含一些与DNN页面路径混合的特定于模块的信息。
社交URL提供程序:一个扩展URL提供程序的例子
例如,DNN附带的Social Groups模块通过将模块的Group Id附加到DNN页面的末尾以创建应用于该组的URL来显示特定的Social Group。
为DNN 7.1创建了一个新的社交URL提供者,它可以转换社交组的URL,删除基于id的URL,并替换为基于社交组名称的URL。
http://example.com/social-groups/GroupId/365
扩展URL提供程序可以做的是:
—简化URL,去掉DNN Page Path (social-groups)
-将特定于数据库id的URL引用替换为显示更有意义内容的URL引用,例如社交组的名称
—从GroupId/xx样式的URL重定向到基于名称的URL。
安装扩展URL提供程序后,您可以为列出的社交组实现URL:
http://example.com/my-social-group-name
为了生成如上所示的简化URL,需要处理3个操作:
1.生成URL
2.重写URL
3.URL重定向
一代URL的所有内容都是关于URL的原始部分-域,指向DNN页面的路径段,以及指向URL的非DNN核心部分的URL段-通常是指博客文章,产品列表,论坛线程或DNN页面上显示的任何其他内容的部分。对于社交组,提供者获取GroupId并使用它来查找组名。然后它为URL目的“清除”该名称,删除URL中所有与id相关的部分,然后在URL形式的组名中进行替换。
重写URL的过程是获取友好的URL并将其转换回底层代码能够理解的内容。在Social Groups的例子中,这意味着获取Group Name,并将其转换回GroupId,以便底层Social Groups模块可以从数据库检索正确的内容并显示它。
重定向是允许从一个没有使用扩展URL提供程序的站点过渡到使用扩展URL提供程序的站点的任务。对于已经存在了一段时间的模块,通常有大量的现有内容,因此所有旧的url都需要重定向到更新、更好的url。这就是重定向的过程。此函数还可用于创建自定义迁移脚本——例如从一种模块类型迁移到另一种模块类型——例如,从一个博客模块重定向到另一个博客模块,并确保在新位置找到旧帖子。
更多细节:关于扩展URL提供程序
扩展URL提供程序是一个DNN扩展,通过在DNN平台的适当点直接链接到URL处理来处理这三个功能。它们是一个完全编译的解决方案,可以实现任何可以用。net代码编写的东西——这是一个无限的可能性。当友好URL提供程序模式被设置为“高级”时,扩展URL提供程序仅与DNN 7.1一起工作。
许多针对这个问题的解决方案都是从规则文件中嵌入的正则表达式集开始的——无论是使用内置的DNN功能,还是使用像IIS URL Rewrite模块这样的外部解决方案。在过去,我甚至构建过基于规则的解决方案。这就是DNN扩展URL提供者解决方案是头部和肩膀以上的其他方法解决URL难题。因为您可以使用更强大的技术,从数据库或配置文件读取数据,所以您可以创建更强大、解决方案更好的解决方案。
扩展URL提供程序是通过从内置DNN类型继承,并实现预定义的方法来构建的。提供程序可以通过指定模块名称与特定的DNN模块相关联。完成此操作后,底层URL框架可以将DNN页面上的URL与特定的提供者关联起来,并在需要时调用该提供者。这个过程对提供者是透明的——里面的代码只需要响应提供的参数并返回结果。
入门:下一步要去哪里?
方法可以更深入地了解技术细节扩展URL提供者维基的跳跃点。本文对扩展URL提供程序设计的细节进行了更深入的讨论。
你也会想去参观DNN扩展URL提供程序Codeplex项目page -你可以下载7.1版的Social URL Provider并将其安装到你的7.1版站点中,你可以下载源代码并查看它是如何组合在一起的。如果您正在考虑构建自己的提供程序,该提供程序与使用基于id的URL并将其替换为更具描述性的名称的用例相匹配,则该项目提供了一个适合复制的基础。
我将构建更多的提供商,并将它们托管在同一个Codeplex项目中——如果你有任何你想贡献的东西,请与我们联系,我们可以提供更多的提供商。我的希望和意图是为常见的DNN模块和任务创建一些这样的模块,并让商业供应商开始提供这些作为他们产品的一部分。
有什么意见吗?你能想到任何DNN模块哭喊着一个扩展URL提供程序吗?请在下面的评论框中分享。