我目前正在研究一個事件處理程序,它將在保存事件上保存頁面的最新修訂日期,並將其組件到自定義數據庫中,這是行得通的,米麪臨一些性能問題。使用本地化組件獲取共享頁面
讓我給你舉個例子,對於它是如何工作的:
如果一個組件保存/更新(變更時),那麼我想更新我的自定義數據庫使用該組件的所有頁面。
基本藍圖設置: 200包含組件(200內在的組件)的組件 400翻譯出版 500主出版物頁 600本地站點發布400內在成分和頁面500)
所以讓假設我們在200中有組件X,這個組件包含在500中的一個頁面中,X在400中被本地化(我們稱它爲X(l)),並且600中的頁面不是本地化的(即它將使用組件x (l))
所以現在我的問題: 在我的拯救前夕NT處理,我檢查什麼網頁X(L)包括在通過使用:
var filter = new UsingItemsFilter(component.Session)
{
IncludeLocalCopies = true,
ItemTypes = new[] { ItemType.Page }
};
但這隻會給我引用頁從500 所以我然後做(這感覺挺傻的) (通過遍歷它們)是固有的這個頁面 創建的兒童出版物的所有頁面中醫ID(現在即時通訊使用一些psuedocodelike編碼):
foreach(var 500page in foundPages)
foreach(var publication in publications){
if(subject.Session.IsExistingObject(
new TcmUri(page.Id.ItemId,page.Id.ItemType,publication.Id.ItemId)
))
{
someListThatWillContainAllChildPagesFrom500.Add(TheAboveTcmUri);
}
}
然後爲每個頁面,檢查的組件頁面,最後將這個狀態保存到我的自定義數據庫中。
所以問題是,有沒有辦法通過使用TOM.NET api(沒有不是CoreServiceClient)來查詢所有使用本地化組件的頁面?
有沒有更好的方法來查找出版物的兒童出版物,所以我只需要檢查childPublication中的頁面?
溴馬丁
感謝您的Tridion相關的問題。如果您還沒有意識到,現在有一個專門的Tridion Stack Exchange站點http://tridion.stackexchange.com/。如果你在那裏發帖 – 2013-04-10 08:30:09
Thx,那麼你可能會得到一個更快/更大的迴應,那裏也不錯! – user1978413 2013-04-10 09:39:45