繁体   English   中英

在Ektron CMS 8.6+中,如何获得任意内容的有效别名?

[英]In Ektron CMS 8.6+, how can I get a valid alias for an arbitrary piece of content?

我已经尝试了Ektron论坛上建议的答案, 网址http://dev.ektron.com/forum.aspx?g=posts&t=29497

这些使用

Ektron.Cms.API.UrlAliasing.UrlAliasManual

Ektron.Cms.API.UrlAliasing.UrlAliasAuto

对象。 但是,我正在使用Ektron 8.6 sp1,并且方法GetItemForContent和GetDefaultAlias分别抛出“未实现”异常,使我相信它们不再起作用。

除此之外,我什至不清楚它们是否可以通用,因为在没有先调用这些方法的情况下,我看不到检测特定内容是否具有手动,自动或任何别名的方法。 有谁知道检索这些别名的当前最佳实践?

好吧,经过一些工作区文件的挖掘(答案在\\ Workarea \\ controls \\ content \\ UrlAliasing \\ editAliasesTab.ascx.cs中),当前方法使用命名空间Ektron.Cms.Framework.Settings.UrlAliasing的frameworkAPI管理器对象。

尽管该对象的标准“ get”方法仅在我的测试中返回自动别名,并且getDefaultAlias方法始终返回一个空字符串,但它似乎能够处理手动和自动别名。 使用位于“ Ektron.Cms.Settings.UrlAliasing.DataObjects.AliasCriteria”中的Alias Criteria对象时,管理器确实按预期工作,并返回所有关联的别名。 返回的对象是别名类型的通用对象,并将使用isDefault属性指示它们是否为默认对象。

以下内容将提取所有别名,而不管类型如何:

Ektron.Cms.Framework.Settings.UrlAliasing.AliasManager aCRUD = new ektron.Cms.Framework.Settings.UrlAliasing.AliasManager();
Ektron.Cms.Settings.UrlAliasing.DataObjects.AliasCriteria aSelector = new Ektron.Cms.Settings.UrlAliasing.DataObjects.AliasCriteria();
aSelector.AddFilter(Ektron.Cms.Settings.UrlAliasing.DataObjects.AliasProperty.TargetId, Ektron.Cms.Common.CriteriaFilterOperator.EqualTo, contentId);
var allAlias = aCRUD.GetList(aSelector);

如果您正在寻找内容的直接链接(可以是任何别名),那么以下代码将起作用:

ContentManager cm = new ContentManager();
ContentData cd = cm.GetItem(contentId);
string link = cd.QuickLink();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM