【问题标题】:Umbraco - Get All tags used in a node/groupUmbraco - 获取节点/组中使用的所有标签
【发布时间】:2015-03-30 08:44:26
【问题描述】:

我已经使用umbraco.cms.businesslogic.Tags.Tag下的GetTags()方法来获取组或节点下的所有标签。

var tags = umbraco.cms.businesslogic.Tags.Tag.GetTags("default");

但是umbraco.cms.businesslogic.Tags.Tag 现在已经过时了,还有其他更好的选择吗?

另外,新库是否提供基于标签的节点查询?

【问题讨论】:

    标签: umbraco umbraco7 umbraco-tags


    【解决方案1】:

    好的,所以 Umbraco 7 有新的 TagService 库来处理标签。

    要使用所有标签,

    var service = UmbracoContext.Application.Services.TagService;
    var blogTags = service.GetAllTags("default");
    

    要获取具体的标签内容GetTaggedContentByTag()是暴露的方法,

    var sports = service.TagService.GetTaggedContentByTag("Gaming");
    

    它返回 TaggedEntity 列表和具有 EntityId 属性的 TaggedEntity 对象。

    Source 礼貌:Jimbo Jones

    【讨论】:

    【解决方案2】:

    无需调用标签服务。

    在 umbraco 7 中你可以使用这个:

    var tags = Umbraco.TagQuery.GetAllTags();
    

    var tags = Umbraco.TagQuery.GetAllTags(group);
    

    你可以使用

    var mycontents = Umbraco.TagQuery.GetContentByTag("mytag")
    

    获取您的数据

    【讨论】:

      【解决方案3】:

      我发现了 TagService 的限制,并使用以下内容从一组特定节点中获取标签列表。仅按组查询标签对我不起作用。

      var pages = parentpage.Children;   
      var allNodesWithTags = pages.Where("tags != \"\"");
      
      List<string> taglist = new List<string>();      
      foreach (var node in allNodesWithTags)
      {
          taglist.AddRange(node.tags.ToString().Split(','));
      }
      
      taglist = taglist.OrderBy(q => q).ToList();
      

      然后从子节点输出标签列表就很简单了:

      @foreach (string tag in taglist.Distinct())
      {
          <li><a href="#" class="">@tag</a></li>
      } 
      

      【讨论】:

        猜你喜欢
        • 2011-06-28
        • 1970-01-01
        • 2020-09-17
        • 1970-01-01
        • 2015-02-16
        • 1970-01-01
        • 1970-01-01
        • 2019-02-14
        • 1970-01-01
        相关资源
        最近更新 更多