2014-02-13 90 views
2

在一把umbraco 6.1.6的開發者部分有一個關係類型節點。一把umbraco關係類型

有人能解釋什麼關係類型,如果他們有一個實際的應用。我看過一些文檔,但我仍然不確定爲什麼我需要使用它們。

它們在v6和v7中仍然相關嗎?

回答

5

我最近開始記錄了Relations Service,應提供一些見解,你可以用它做什麼。我偶爾使用它來維護內容樹中節點之間的關係。

如果你曾經在一把umbraco複製節點你到相關的新節點,它使用所謂的「相關文件在複製」的關係類型原來的選項。作爲一個例子,通過適當的關係,您可以掛鉤事件,例如保存事件,並且只要父代更新,您也可以更新相關的子節點。此技術有時用於希望內容在各種語言間同步的多語言網站。

以下是最近的一個項目,我的工作中重複發生的事件可能會創建一個簡短的例子。我們需要知道系列中的第一個事件以及事件(孩子)的所有後續事件。

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); 
      }  
     } 
    } 
}