1

http://dev.ektron.com/forum.aspx?g=posts&t=29497の Ektron フォーラムで提案された回答を試しました。

これらは

Ektron.Cms.API.UrlAliasing.UrlAliasManual

Ektron.Cms.API.UrlAliasing.UrlAliasAuto

オブジェクト。ただし、私は Ektron バージョン 8.6 sp1 で作業しており、メソッド GetItemForContent と GetDefaultAlias はそれぞれ「実装されていない」例外をスローするため、機能しなくなったと思います。

これを超えて、これらのメソッドを最初に呼び出さずに特定のコンテンツに手動、自動、また​​はエイリアスがあるかどうかを検出する方法がないため、これらが一般的に機能するかどうかは私には明らかではありません. これらのエイリアスを取得するための現在のベストプラクティスを知っている人はいますか?

4

2 に答える 2

2

ワークエリア ファイルを掘り下げた後 (答えは \Workarea\controls\content\UrlAliasing\editAliasesTab.ascx.cs にあります)、現在のアプローチでは、名前空間でフレームワークAPI マネージャー オブジェクトを使用します。Ektron.Cms.Framework.Settings.UrlAliasing

このオブジェクトは手動エイリアスと自動エイリアスの両方を処理できるようですが、標準の「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);
于 2013-07-24T14:57:39.883 に答える
0

エイリアスである可能性があるコンテンツへの直接リンクを探している場合は、次のコードが機能します。

ContentManager cm = new ContentManager();
ContentData cd = cm.GetItem(contentId);
string link = cd.QuickLink();
于 2013-07-24T17:12:07.027 に答える