2017-01-27 7 views
0

単一のページビューに基づいてコンテンツ構造を動的に作成することを検討しています。Sitecore 7ツリー構造に基づいてサブレイアウトを動的に追加する

例:GALLERYテンプレートの子項目では、これは、カルーセルに表示される各画像を定義するGALLERY ITEMテンプレートを使用するサブ項目を持ちます。エディタで複数の項目を追加するだけで、固定されたフィールド(バナー、バナー2など)を持つのではなく、カルーセルが自動的に拡大されます。

現在ギャラリーのHTMLを定義するサブレイアウトが自動的に含まれる方法そのテンプレートが存在する場合、このメインページに表示されます。

エディタではなく、手動でSublayoutを追加してギャラリーノードにデータソースを定義する必要があります。メインページでツリーを繰り返して、ギャラリーのテンプレートがあることを確認して、サブレイアウトを使用する必要があることを確認します。メインページのプレースホルダーに追加する

この原則では、エディターがページに追加する項目に応じてページが自動的に作成されます。

アドバイスやサンプルコード(ウェブフォームを使用)は高く評価されます。現在、コンテンツエディタがページをアセンブルするのに直感的ではないように思われるサブレイアウトを手動で追加する必要があります。

おかげ

答えて

0

あなたが適切に使用します/経験エディタを設定している場合は、サブレイアウトやデータソースを追加すると、非常に直感的なプロセスであり、そしてあなたはサイトコアのすべての機能と能力をフルに活用することができます特にパーソナライゼーションとA/Bテストがあります。 これは、実行することをお勧めします。

あなたが本当にこれをやめさせないような天才的な状況があれば、 "Presentation Inversion of Control"と呼ばれる古いテクニックがあります。これはコンテンツツリーを介して関連付けられたアイテムからレンダリングを引き出します。 Sitecore 6.4に登場した「統一ページエディタ」とデータソースウィザードの前には便利でした。 There are various approaches to thisですが、最も簡単なのは、ページに配置するサブレイアウト/ Webコントロールです。

次のコードは、サイトコア7の上にあることによってテストされていません。

public partial class Gallery: System.Web.UI.UserControl 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     PageItem page = Sitecore.Context.Item; 
     //custom item contains logic for finding items to include 
     foreach (Item galleryItem in page.GalleryItems) 
     { 
      string strDataSource = galleryItem.ID.ToString(); 
      RenderingReference[] renderings = 
       galleryItem.Visualization.GetRenderings(Sitecore.Context.Device, false); 
      foreach (RenderingReference rendering in renderings) 
      { 
       rendering.Settings.DataSource = strDataSource; 
       this.Controls.Add(
        rendering.RenderingItem.GetControl(rendering.Settings)); 
      } 
     } 
    } 
} 

しかし、実際に、あなただけの適切ページエディタを実装する必要があります。

+0

ありがとうございました。ページエディタは過去の私たちにとっては信頼できませんでした。DOMからレンダリングされたjavascriptがフィールドに保存され、編集者は誤ってアイテムをドラッグしてページを簡単に破損させ、常に安定して動作しません。エディタはコンテンツエディタレイアウトの決定やインタフェースの問題には関係しないため、テンプレートとコンテンツタイプに基づいてページを自動構築するアプローチです。私たちはSC7を利用しているので、インターフェイスが改善されていることもありますが、時には編集者がウェブサイトのレイアウトをデザインするのではなく、コンテンツを編集したいことがあります。ありがとうございます。 – user3779703

+0

このようなアプローチをとることで、パーソナライゼーションとA/Bテストの使用を除外しているという事実を非常に意識してください。必然的にあなたのユーザーはこれらを使いたくない理由を尋ねる(何度も見られる)ことを願って戻ってくるでしょう。 – techphoria414

関連する問題