【问题标题】:Combining tags from children in Umbraco结合 Umbraco 中儿童的标签
【发布时间】:2018-02-20 12:06:03
【问题描述】:

我在 Umbraco 网站上有一个博客部分,我想从每个博客项目中获取所有标签并将它们组合在一个列表中而不重复,以便我可以使用标签列表作为过滤器。

我有这个部分将列出标签

<ul id="blogTags" class="inline-list">
   <li class="tag-item"><a href="#">Tag 1</a></li>
   <li class="tag-item"><a href="#">Tag 2</a></li>
   <li class="tag-item"><a href="#">Tag 3</a></li>
   <li class="tag-item"><a href="#">Tag 4</a></li>
</ul>

在我的 BlogItem 文档类型中,我有一个字段 tagsList,编辑器可以在其中输入以逗号分隔的标签列表。

所以基本上我想从所有 BlogItems 中获取所有标签,并将它们组合成一个删除重复项的列表。

我正在使用以下方式获取所有博客项目:

 var blogItems = Umbraco.TypedContent(Model.Content.Id).Children.Where(x => x.DocumentTypeAlias == "BlogItem" && x.IsVisible());

但我不确定如何获取所有标签、合并和删除重复项。

【问题讨论】:

  • tagsList 是什么类型 - 文本字符串还是?
  • tagsList 是一个文本字符串

标签: c# html asp.net razor umbraco


【解决方案1】:

一种方法是创建一个 Hashset 来存储标签并使用 foreach 添加它。

所以你可以这样做:

HashSet<string> uniqueTagList = new HashSet<string>();

var blogItems = Umbraco.TypedContent(Model.Content.Id).Children.Where(x => x.DocumentTypeAlias == "BlogItem" && x.IsVisible());

var tags = blogItems.Select(x => x.GetPropertyValue<string>("tagsList"));

foreach(var tag in tags)
{
    var splitTag = tag.Split(',');
    foreach(var singleTag in splitTag)
    {
        uniqueTagList.Add(singleTag);
    }
}

那么您的uniqueTagList 是所有标签的列表,您可以使用它来创建您的列表

<ul id="blogTags" class="inline-list">
    @foreach(var tag in uniqueTagList)
    {
        <li class="tag-item"><a href="#">@tag</a></li>
    }
</ul>

但请注意,如果您有很多孩子,这可能需要一些时间。

所以我建议检查 Umbraco 标签数据类型来做这样的事情:

https://shermandigital.com/blog/display-umbraco-tags-on-razor-templates/

https://shermandigital.com/blog/get-umbraco-content-by-tag/

【讨论】:

    【解决方案2】:

    您可以使用内置的 Umbraco 标记控件,而不是逗号分隔的列表,这应该可以让您做自己想做的事情。

    标签的 API 方法允许您获取特定组的所有标签等。因此您可以设置一个标签属性编辑器,其中包含一个名为“blog”的组,您可以将其分配给您的博客文章,然后您可以使用标签 API 从该组中提取所有唯一标签来构建您的云。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-06
      相关资源
      最近更新 更多