Content.ThumbnailSummary.cshtml
のマークアップです。ContentItemsをクリック可能なサムネイルとしてレンダリングするために使用するカスタムDisplayTypeのマークアップです。そのコンテンツは、コンテンツ上に絶対配置されています。オーチャードではレンダリングの直前に形状のHTMLを動的に変更することは可能ですか?
@using Orchard.Utility.Extensions;
@{
var contentTypeClassName = ((string)Model.ContentItem.ContentType).HtmlClassify();
}
<a class="content-item @contentTypeClassName thumbnail-summary">
@Display(Model.Header)
<div class="thumbnail-summary-inner">
@Display(Model.Content)
</div>
@Display(Model.Footer)
</a>
問題は、箱から出して、ほとんどの部品とフィールドがリンクまたはリンクを含む段落としてレンダリングされ、かなりひどく、ほとんどのブラウザでレンダリングDOMを<a>
タグの混乱を入れ子にしてしまうことがあります。 ThumbnailSummaryはになりません。にはリンクがありません。
私はすべてのフィールドとパーツの代替案を作成することができます。または、デフォルトではすべてをプレースメントで削除し、必要に応じて特定のケースのルールのみを追加できます。しかし、それはかなり退屈で配置のメリットが犠牲になるので、このDisplayTypeのシェイプのコード内のすべての<a>
タグを何とか取り除くか置き換えることができればと思っていました。
することは、私はこの方向で見てきたが、それは実行可能だ場合、私はわからない:
public class Shapes : IShapeTableProvider
{
public void Discover(ShapeTableBuilder builder)
{
builder.Describe("Content")
.OnDisplaying(displaying =>
{
if (displaying.ShapeMetadata.DisplayType == "ThumbnailSummary")
{
// Do something here???
}
});
}
}