SDL Tridion 2011 SP1 を使用しています。コンポーネント A、B、C があります。コンポーネント C は A & B にリンクされています。
C を発行すると、コンポーネント A と B の両方が発行されます。しかし、コンポーネント A のみを公開したいと考えています。
コンポーネント B を公開から除外する方法を説明できる人はいますか?
SDL Tridion 2011 SP1 を使用しています。コンポーネント A、B、C があります。コンポーネント C は A & B にリンクされています。
C を発行すると、コンポーネント A と B の両方が発行されます。しかし、コンポーネント A のみを公開したいと考えています。
コンポーネント B を公開から除外する方法を説明できる人はいますか?
発生しているのは、Tridion のデフォルトの動作です。これは、コンポーネントのコンテンツを変更したときに、それを公開すると Web サイト上のそのコンテンツのすべてのインスタンスが更新されるようにするための仕様です。
他の回答が示唆しているように、カスタム リゾルバーを使用してこの動作を変更できます。
using Tridion.ContentManager;
using Tridion.ContentManager.CommunicationManagement;
using Tridion.ContentManager.ContentManagement;
using Tridion.ContentManager.Publishing;
using Tridion.ContentManager.Publishing.Resolving;
public class UpdateResolvedItems : IResolver
{
public void Resolve(
IdentifiableObject item,
ResolveInstruction instruction,
PublishContext context,
Tridion.Collections.ISet<ResolvedItem> resolvedItems)
{
foreach (ResolvedItem resolvedItem in resolvedItems)
{
// Check resolved items, and remove accordingly
}
}
}
上記のコード例は、resolvedItems というコレクションにアクセスできることを示しています。これは、変更を行わない限り、公開予定のアイテムのリストです。
このリストを繰り返し処理し、必要に応じてアイテムを削除できます。
これまでのところ、これを行う簡単な方法がないことはわかっています。1 つのアイテムを公開すると、Tridion はすべての関連アイテムとリンクされたアイテムを解決して公開します。
イベントシステムまたはカスタムリゾルバーを使用して、求めていることを達成できます。このリンクが役立つかもしれません: http://nunolinhares.blogspot.com/2011/10/tridion-publisher-and-custom-resolvers.html
API から公開している場合は、IncludeComponentLinks
のプロパティをResolveInstruction
に設定できますfalse
。または、Bappi が指摘したように、イベント ハンドラでこれを行います。