2012-07-31 10 views
6

私はクリスによって、ここで説明するようにコンポーネントのカスタムリゾルバを実装やろうとしています: http://www.tridiondeveloper.com/the-story-of-sdl-tridion-2011-custom-resolver-and-the-allowwriteoperationsintemplates-attributeTridion Resolverを使用して公開アイテムを削除するにはどうすればよいですか?

私はコンポーネントで使用されるバイナリの一部(主にPDFファイルの)を削除し、出版からそれらを防ぐためにしたいです。 item.GetListUsedItemsメソッドを使用して、使用済みアイテムのリストを取得できました。どうすれば削除できますか?

使用:Tridionの2009

+0

[Area 51 Tridion特有の提案](http://area51.stackexchange.com/proposals/38335/tridion?referrer=gPujQMxthNCNn9xqeeO2NA2)に関心をお寄せください。同じSOアカウントでサインアップしてください。 –

答えて

9

公開時にはリゾルバ・プロセスを使用すると、構造群を公開するときに、デフォルトのリゾルバが公開取引に構造グループ内のすべてのページが追加されますよう、公表すべき項目を決定します。

リゾルバーは、直接パブリッシュ可能で、ページおよびダイナミックコンポーネントプレゼンテーションであるパブリッシュトランザクション内のアイテムのみを処理します。したがって、リゾルバーは、AddBinary()メソッドを呼び出すことによってテンプレートコードによって公開されている、リンクされたマルチメディアコンポーネントを処理していません。

パブリッシュアクションからマルチメディアコンポーネントを削除する場合は、コンポーネントテンプレートを参照する必要があります(パッケージに追加されている場合は、デフォルトの完了アクションTBBが通常それらを選択してパブリッシュします)。しかし、マルチメディアコンポーネントは少なくとも1回公開する必要があることを覚えておいてください。それ以外の場合は、プレゼンテーションサーバーで取得できません。

+1

+1の違いを示すため、@Bart。 Frank van Puffelenは、[TridionWorld](http://www.sdltridionworld.com/community/2011_extensions/binaryeventtracker)の2つのアプローチ(テンプレートコード/ AddBinary()と_explicit_を介してマルチメディアパブリッシュとダイナミックコンポーネントテンプレートを使用して_implicit_) aspx)。 –

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

解決済みアイテムリストにはコンポーネントがあると思います。コンポーネント内のバイナリ項目を削除しようとしています – user1373140

+0

コンポーネント内でバイナリをどのように公開していますか?それはDWTコード経由ですか? DWT経由の場合は、なぜバイナリリンクが壊れてしまうので、リゾルバを使ってバイナリを削除したいのですか?バイナリを公開している場合は、上記のコードでは、 'ComponentType.Multimedia'のチェック条件で必要なだけで十分でしょう。 –