5

Tôi đang chơi với các trình giữ chỗ động và bị tấn công bởi khái niệm prefilling. Có cách nào để chọn hiển thị mặc định cho một trong các trình giữ chỗ của tôi. "hộp thoại trong trình chỉnh sửa trải nghiệm ??Sitecore 8: Tự động điền trình giữ chỗ bằng cách hiển thị mặc định

Tình huống: Tôi có một rendeing được gọi là "PageHead" trong đó có ba render. Một trong số đó là trình giữ chỗ "PageTeaserPh" hiện cho phép hiển thị hai lần: một là "PageTeaser" và thứ hai "PageTeaserWithImage". Tôi muốn trình giữ chỗ "PageTeaserPh" luôn có kết xuất được chọn là "PageTeaser" và do đó tránh hộp thoại "Chọn hiển thị".

tôi đã làm một số bài tập về nhà và đã tự hỏi nếu điều này là một cái gì đó liên quan đến giá trị tiêu chuẩn (chúng ta có thể có nó ở cấp mẫu; không chắc chắn cho render mặc dù) và tôi cũng đã nghe nói về lệnh mẫu khái niệm (không phải trong -depth).

Bất kỳ và tất cả trợ giúp đều được đánh giá cao.

Trả lời

1

Bạn có thể có hiển thị được chỉ định trên các mẫu giá trị chuẩn, mỗi mục mới sẽ có hiển thị PageTeaser của bạn.

Nếu bạn muốn tự động hóa quá trình này, hãy xem đường ống <mvc.getXmlBasedLayoutDefinition>, chúng tôi sẽ được đưa vào các kết xuất phổ biến bằng cách mở rộng đường ống này.

Cập nhật

Tôi đã tìm thấy một số mẫu mã và bài đăng trên blog rằng sẽ giúp điểm bạn đi đúng hướng để thao tác với các chi tiết bố trí.

public void AddSublayoutToItem(string itemId, string sublayoutId) 
{ 
    using (new Sitecore.SecurityModel.SecurityDisabler()) 
    { 
     if (Sitecore.Data.ID.IsID(itemId) && Sitecore.Data.ID.IsID(sublayoutId)) 
     { 
      //Get the master database and get the item on which you want to add sublayout 
      Database masterDatabase = Database.GetDatabase("master"); 
      Item item = masterDatabase.GetItem(Sitecore.Data.ID.Parse(itemId)); 

      // Or you can also get Sitecore Item from Context Database as per your requirement 
      // Item item = Sitecore.Context.Database.GetItem(Sitecore.Data.ID.Parse(itemId)); 

      if (item != null) 
      { 
       // Get the layout definitions and the device definition 
       LayoutField layoutField = new LayoutField(item.Fields[Sitecore.FieldIDs.LayoutField]); 
       LayoutDefinition layoutDefinition = LayoutDefinition.Parse(layoutField.Value); 
       DeviceDefinition deviceDefinition = layoutDefinition.GetDevice(Sitecore.Context.Device.ID.ToString()); 

       //Create a RenderingDefinition and add the reference of sublayout or rendering 
       RenderingDefinition renderingDefinition = new RenderingDefinition(); 
       renderingDefinition.ItemID = sublayoutId; 
       //Set placeholder where the rendering should be displayed 
       renderingDefinition.Placeholder = "content"; 
       // Set the datasource of sublayout, if any 
       renderingDefinition.Datasource = "{24240FF2-B4AA-4EB2-B0A4-63E027934C38}"; 

       // you can also set datasource of sublayout using Sitecore Path 
       // renderingDefinition.Datasource = "/sitecore/content/Home/Books"; 

       //Add the RenderingReference to the DeviceDefinition 
       deviceDefinition.AddRendering(renderingDefinition); 

       // Save the layout changes 
       item.Editing.BeginEdit(); 
       layoutField.Value = layoutDefinition.ToXml(); ; 
       item.Editing.EndEdit(); 
      } 
     } 
    } 
} 

Taken từ đây - http://www.bugdebugzone.com/2014/06/how-to-add-sublayout-to-sitecore-item.html

Cũng là một vài blog khác về chủ đề

+0

Tất cả tôi có là một placeholder pageteaserPh và sublayout pagehead. Bạn không chắc chắn làm thế nào để thực hiện những gì bạn nói? –

Các vấn đề liên quan