6

ここでクリスが説明したように、コンポーネントのカスタムリゾルバーを実装しようとしています: http://www.tridiondeveloper.com/the-story-of-sdl-tridion-2011-custom-resolver-and-the-allowwriteoperationsintemplates-属性

コンポーネントで使用されている一部のバイナリ (主に pdf) を削除し、それらが公開されないようにしたいと考えています。item.GetListUsedItems メソッドを使用して、使用済みアイテムのリストを取得できます。どうすれば削除できますか?

使用: トリディオン 2009

4

2 に答える 2

9

公開時に、リゾルバープロセスは、構造グループを公開する場合のように、公開するアイテムを決定します。デフォルトのリゾルバーは、構造グループ内のすべてのページを公開トランザクションに追加します。

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

公開アクションからマルチメディアコンポーネントを削除する場合は、それらを処理しているコンポーネントテンプレートを調べる必要があります(パッケージに追加されている場合、デフォルトの終了アクションTBBは通常、それらを取得して公開します)。ただし、マルチメディアコンポーネントは、少なくとも1回は公開する必要があります。そうしないと、プレゼンテーションサーバーで取得できなくなります。

于 2012-08-01T07:48:33.933 に答える
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 ..
                }
            }
        }
于 2012-07-31T13:01:08.363 に答える