我在这里没有使用Orchard术语,但是我有一段文本要包裹在一个形状中。这是博客详细信息页面上的一些社交分享网址。我想保持清洁,所以我决定做一个新的形状。从视图中添加到区域的形状的优先级
我已经发布的下方Content-BlogPost.Detail.cshtml
的全面上市,但思想是:
- 我做一个
cshtml
持有社交媒体标记 - 我预习的主帖详细视图中的数据
- 创建的形状,并将其添加到
Meta
区(这是一个本地区域不喜欢的元描述)使用Model.Meta.Add(socialShape, "1");
形状按预期添加,但第二个参数(优先级)不起作用。它必须是一个字符串,传递一个int
打破了页面。 Meta
区域中其他项目的默认优先级为5,因此它应该将其置于顶部,但始终在最后。
// Model.Meta.Add works but the priority seems to be ignored?
@using Orchard.ContentManagement;
@using Orchard.Utility.Extensions
@using Orchard.Blogs.Models
@functions{
void AddSocialMediaShareLinks() {
var socialShareUrl = new Uri(new Uri(WorkContext.CurrentSite.BaseUrl), Url.ItemDisplayUrl((IContent)Model.ContentItem)).ToString();
var socialShareTitle = Model.ContentItem.Title;
var socialShape = New.BlogPost_SocialMediaShareLinks(ShareUrl: socialShareUrl, ShareTitle: socialShareTitle);
Model.Meta.Add(socialShape, "1");
}
}
@{
if (Model.Title != null) {
Layout.Title = Model.Title;
}
BlogPart parentBlog = Model.Blog;
IContent contentItem = Model.ContentItem;
var contentTypeClassName = ((string)Model.ContentItem.ContentType).HtmlClassify();
AddSocialMediaShareLinks();
Model.Classes.Add("content-item");
Model.Classes.Add(contentTypeClassName);
var tag = Tag(Model, "article");
}
@tag.StartElement
<header>
@Display(Model.Header)
</header>
<div class="row row-blog-content">
<div class="col-sm-10 col-sm-offset-1 col-md-8 col-md-offset-2">
@if (Model.Meta != null) {
<div class="metadata">
@Display(Model.Meta)
</div>
}
@Display(Model.Content)
</div>
</div>
<div class="row row-blog-return-parent">
<div class="col-sm-12">
<p class="text-center"><a href="@Url.ItemDisplayUrl(parentBlog)" class="btn btn-default">@T("Go back to the news")</a></p>
</div>
</div>
@if (Model.Footer != null) {
<footer>
@Display(Model.Footer)
</footer>
}
@tag.EndElement
在阅读了一些文章后,我发现旧帖子是Bertrand post约customizing the first item template。
我想,也许我在那里将它添加到该区域是在这个过程中来不及了,所以我改变了代码下面的代码片段,但Model.Meta.Add
从来没有被击中在这样的场景:
@functions{
void AddSocialMediaShareLinks() {
var socialShareUrl = new Uri(new Uri(WorkContext.CurrentSite.BaseUrl), Url.ItemDisplayUrl((IContent)Model.ContentItem)).ToString();
var socialShareTitle = Model.ContentItem.Title;
var socialShape = New.BlogPost_SocialMediaShareLinks(ShareUrl: socialShareUrl, ShareTitle: socialShareTitle);
ShapeMetadata metadata = Model.Metadata;
metadata.OnDisplaying(ctx => {
Model.Meta.Add(socialShape, "1");
});
}
}
能
人告诉我我做错了什么?
谢谢,你是正确的,这是一个错误。在你的帮助下,我已经追踪到足以至少打开一个问题,但无法弄清楚它出错的地方:https://github.com/OrchardCMS/Orchard/issues/7258 – rtpHarry
这个错误将会是在下一版Orchard中解决。感谢您的帮助诊断。 https://github.com/OrchardCMS/Orchard/pull/7321 – rtpHarry