这是 的标记Content.ThumbnailSummary.cshtml
,一个自定义的 DisplayType 我用来将 ContentItems 呈现为可点击的缩略图,其内容绝对位于它们之上。
@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>
问题在于,大多数 Parts 和 Fields 开箱即用地呈现为链接或包含链接的段落,并且嵌套<a>
标签在大多数浏览器中非常糟糕地扰乱了 DOM 呈现。ThumbnailSummary 不应包含任何链接。
我可以为每个字段和部分创建替代项,或者我可以默认删除放置中的所有内容,只在需要时为特定情况添加规则。但这会非常乏味,并且会破坏放置的许多好处,所以我希望我能以某种方式去除或替换代码中的所有<a>
标签,仅用于具有此 DisplayType 的形状。
我一直在寻找这个方向,但我不确定它是否可行:
public class Shapes : IShapeTableProvider
{
public void Discover(ShapeTableBuilder builder)
{
builder.Describe("Content")
.OnDisplaying(displaying =>
{
if (displaying.ShapeMetadata.DisplayType == "ThumbnailSummary")
{
// Do something here???
}
});
}
}