【问题标题】:Umbraco Relation TypesUmbraco 关系类型
【发布时间】:2014-02-14 04:38:13
【问题描述】:

在 Umbraco 6.1.6 的开发者部分有一个 Relation Types 节点。

任何人都可以解释什么是关系类型以及它们是否有实际应用。我看过一些文档,但仍然不确定我为什么需要使用它们。

它们在 v6 和 v7 中仍然相关吗?

【问题讨论】:

    标签: umbraco umbraco6


    【解决方案1】:

    我最近开始记录Relations Service,它应该可以让您深入了解您可以使用它做什么。我偶尔使用它来维护内容树中节点之间的关系。

    如果您曾经在 Umbraco 中复制一个节点,您可以选择将新节点与原始节点相关联,该节点使用称为“复制时关联文档”的关系类型。例如,在关系到位后,您可以挂钩到诸如 Save 事件之类的事件,并且每当更新父节点时,您还可以更新相关的子节点。这种技术有时用于希望跨每种语言同步内容的多语言网站。

    以下是我最近工作的一个项目的缩略示例,其中可能会创建一个重复事件。我们需要知道该系列中的第一个事件以及该事件的所有后续事件(孩子)。

      public class Events : ApplicationEventHandler
      {
        protected override void ApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
        {
          ContentService.Saved += ContentServiceSaved;
        }
    
        private void ContentServiceSaved(IContentService sender, SaveEventArgs<IContent> e)
        {
            var rs = ApplicationContext.Current.Services.RelationService;
            var relationType = rs.GetRelationTypeByAlias("repeatedEventOccurence");
    
            foreach (IContent content in e.SavedEntities)
            {
                var occurences = rs.GetByParentId(content.Id).Where(r => r.RelationType.Alias == "repeatedEventOccurence");
                bool exists = false;
    
                foreach (var doc in occurences.Select(o => sender.GetById(o.ChildId)))
                {
                    // Check if there is already an occurence of this event with a matching date
                }
    
                if (!exists)
                {
                    var newDoc = sender.Copy(content, eventsDoc.Id, true, User.GetCurrent().Id);
    
                    // Set any properties you need to on the new node
                    ...
    
                    rs.Relate(content, newDoc, relationType);
                }       
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多