2012-07-31 48 views
6

我試圖做實現由克里斯這裏所描述的組件自定義解析: http://www.tridiondeveloper.com/the-story-of-sdl-tridion-2011-custom-resolver-and-the-allowwriteoperationsintemplates-attribute如何使用Tridion Resolver從發佈中刪除項目?

我想刪除一些組件所使用的二進制文件(主要是PDF格式的),並防止他們出版。我能夠使用item.GetListUsedItems方法獲取使用的項目列表。我如何刪除它們?使用

:2009年的tridion

+0

我們可以讓你感興趣的是承諾[51區Tridion特定提案](http://area51.stackexchange.com/proposals/38335/tridion?referrer=gPujQMxthNCNn9xqeeO2NA2)。如果您有時間,請使用同一個SO帳戶註冊。 – 2012-08-01 08:00:57

回答

9

在發佈時的分解過程決定哪些項目應該被公佈,當你發佈一個結構組一樣,默認的解析器將在結構組添加所有頁面的發佈交易。

解析器僅處理髮布事務中可直接發佈的項目,這些項目是頁面和動態組件演示。因此,解析器不處理鏈接的多媒體組件,這些由模板代碼通過調用AddBinary()方法發佈。

如果您想要從發佈操作中刪除多媒體組件,您應該查看正在處理這些組件的組件模板(如果將它們添加到軟件包中,TBB通常將其選中併發布它們)。但請記住,多媒體組件至少需要發佈一次,否則您將永遠無法在您的演示服務器上獲取它。

+1

+1,以指出區別@Bart。 Frank van Puffelen在[TridionWorld](http://www.sdltridionworld.com/community/2011_extensions/binaryeventtracker)上繪製了兩種方法(通過模板代碼/ _ Add_inary()_和_explicit_通過多媒體發佈和動態組件模板) ASPX)。 – 2012-08-02 00:42:42

3

檢查下面的代碼片段刪除,您需要檢查是否多媒體爲PDF時或沒有,但將讓你去。這裏是引用鏈接,很好地解釋了示例代碼(下面的代碼來自同一篇文章)。

http://www.tridiondeveloper.com/a-custom-resolver-in-practice

 Component component = (Component)item; 
     if (component.ComponentType == ComponentType.Multimedia) 
     { 
      foreach (ResolvedItem resolvedItem in originalResolveItemList) 
      { 
       if (resolvedItem.Item.Id != item.Id) 
       { 
        resolvedItems.Remove(resolvedItem); // to remove .. 
       } 
      } 
     } 
+0

我認爲resolveditems列表包含組件。我試圖刪除組件內的二進制文件 – user1373140 2012-07-31 14:04:36

+0

如何在組件內發佈二進制文件?它是通過DWT代碼嗎?如果是通過DWT,那麼爲什麼要使用解析器移除二進制文件,因爲最終會導致破壞的二進制鏈接。如果您正在發佈二進制文件,上面的代碼將滿足您的需求,並檢查條件「ComponentType.Multimedia」 – 2012-07-31 18:20:47