私は少し前に同じ問題を抱えていました。ShapeDisplayEvents
クラスを実装することで、独自の代替を提供できます。
コンテンツ タイプ、表示タイプ、またはその両方に基づいて代替を提供する実装を次に示します。
public class PartContentTypeAlternateFactory : ShapeDisplayEvents {
public override void Displaying(ShapeDisplayingContext context) {
context.ShapeMetadata.OnDisplaying(displayedContext => {
var shapeType = displayedContext.ShapeMetadata.Type;
var contentItem = displayedContext.Shape.ContentItem;
var displayType = displayedContext.ShapeMetadata.DisplayType;
var contentType = contentItem.ContentType;
displayedContext.ShapeMetadata.Alternates.Add(
String.Format("{0}__{1}", shapeType, displayType));
displayedContext.ShapeMetadata.Alternates.Add(
String.Format("{0}__{1}__{2}", shapeType, (string)contentType, displayType));
});
}
}
次のように、形状トレーサーにいくつかの追加の代替が表示されることになります。

そして、代替の名前付きなどを使用できるFields.Contrib.TaxonomyField-Location-Summary
ようFields.Contrib.TaxonomyField-Location-Detail
になりました。このクラスを拡張して、必要な代替を追加できます。
編集
フィールド名を簡単に取得できないとは思いませんでした。次のようなことを試してみてくださいUrlAlternatesFactory
。つまり、既存の代替をループして、それらに displayType を追加します。これにより、フィールド名と表示タイプの両方を含む代替が得られます。
public class PartContentTypeAlternateFactory : ShapeDisplayEvents {
public override void Displaying(ShapeDisplayingContext context) {
context.ShapeMetadata.OnDisplaying(displayedContext => {
var alternates = displayedContext.ShapeMetadata.Alternates.Select(a => a + "__" + displayedContext.ShapeMetadata.DisplayType);
displayedContext.ShapeMetadata.Alternates = displayedContext.ShapeMetadata.Alternates.Union(alternates).ToList();
});
}
}