これについてはArjenに同意します。説明するシナリオは、Publishing Securityモデルをハッキングして、PublicationsではなくStructureグループに適用するのではなく、別のPublicationとBluePrintingで解決する必要があります(設計どおり)。
しかし、構造グループに基づいて関連性のないターゲットを非表示にするUI拡張機能を試すというRobの回答の次に、他の唯一のオプションは、公開トランザクションからアイテムを削除するカスタムリゾルバーを作成することだと思います。
メモリが適切に機能する場合、SDL Tridion 2009ではカスタムリゾルバーがすでに可能でしたが、安全上の理由から、このソリューションはSDL Tridion 2011のみに対応しています(動作していることがわかっています)。
IResolver
カスタムリゾルバーは、メソッドを介してインターフェイスを実装するクラスですResolve()
。アイテムを削除するリゾルバーのサンプルコードは次のようになります。
public void Resolve(IdentifiableObject item, ResolveInstruction instruction, PublishContext context, Tridion.Collections.ISet<ResolvedItem> resolvedItems)
{
List<ResolvedItem> itemsToRemove = new List<ResolvedItem>();
foreach (ResolvedItem resolvedItem in resolvedItems)
{
// check if resolved item belongs here
if (MyResolvedItemCheck(resolvedItem.Item.Id))
{
itemsToRemove.Add(resolvedItem);
}
}
// remove all items that we need to discard
foreach (ResolvedItem itemToRemove in itemsToRemove)
{
resolvedItems.Remove(itemToRemove);
}
}
リゾルバーコードはおそらくUI拡張機能よりも記述が簡単で安価ですが、PublicationsやBluePrintingを使用するよりもコストがかかると思います(現在のSDL Tridionライセンスにブループリントの制限が含まれている場合でも)到達しました)。メソッドでかなりのコーディングを行う必要がありMyResolvedItemCheck()
、発行者が選択したターゲットによっては、この方法で発行トランザクションが空になり、編集者が不明確になる可能性があります。