【发布时间】:2017-08-16 18:23:37
【问题描述】:
我正在尝试获取特定文档类型的所有项目,这些项目的标签与当前节点/项目上的一个标签相同。
我可以通过以下方式显式声明 one 标签的所有相关项:
var taggedContent = Umbraco.TagQuery.GetContentByTag("Tag1");
var taggedItems = taggedContent.Where(c => c.IsDocumentType("SpecificPageType", true) && c.IsVisible());
但是,由于GetContentByTag 只接受一个参数,我不确定如何构造 foreach 循环以使用我的标签列表。
我想创建一个 foreach 循环,生成一个相关项目列表,该列表结合了每个标签中的所有相关项目,以便我可以使用.OrderBy("Id descending") 对其进行排序。
这是我当前有效的静态代码:
var tags = Umbraco.TagQuery.GetTagsForEntity(Node.getCurrentNodeId()).DistinctBy(t => t.Text).OrderBy(t => t.Text);
var taggedContent = Umbraco.TagQuery.GetContentByTag("Tag1");
var taggedItems = taggedContent.Where(c => c.IsDocumentType("SpecificPageType", true) && c.IsVisible());
foreach (var relatedItem in taggedItems)
{
<a href="@relatedItem.Url">
@{
var pageTitle = relatedItem.GetPropertyValue("pageTitle").ToString();
}
<h6>@Umbraco.Truncate(pageTitle, 80, true)</h6>
</a>
}
我构建循环的失败尝试:
var tags = Umbraco.TagQuery.GetTagsForEntity(Node.getCurrentNodeId()).DistinctBy(t => t.Text).OrderBy(t => t.Text);
var listIWant = new List<IPublishedContent>();
foreach (var tag in tags)
{
var taggedContent = Umbraco.TagQuery.GetContentByTag(tag.ToString());
var taggedItems = taggedContent.Where(c => c.IsDocumentType("SpecificPageType", true) && c.IsVisible());
//How to modify the list here?
}
//OR
var tagsCount = tags.Count();
for (var i = 0; i < tagsCount; i++)
{
var taggedContent = Umbraco.TagQuery.GetContentByTag(tag.ToString());
var taggedItems = taggedContent.Where(c => c.IsDocumentType("SpecificPageType", true) && c.IsVisible());
//How to modify the list here?
}
// Modified the list to contain everything in the loop above, now order it
var orderedList = listIWant.OrderBy("Id descending");
// Create links from ordered list
foreach (var relatedItem in orderedList)
{
<a href="@relatedItem.Url">
@{
var pageTitle = relatedItem.GetPropertyValue("pageTitle").ToString();
}
<h6>@Umbraco.Truncate(pageTitle, 80, true)</h6>
</a>
}
感谢您的帮助,如果我不清楚或需要更多信息,请告诉我。
【问题讨论】:
标签: c# for-loop foreach umbraco umbraco7