簡體   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