2017-10-11 13 views
0

Umbracoを使い始めたばかりで、用語集にはちょっと混乱しています。私はページを作成し、フッタやナビゲーションなどのためにテンプレートを作成しています。しかし私が達成しようとしているのは、エンド・ユーザーが背景色、タイトル、段落、イメージ、イメージの配置、テキストの配置などのパラメータを含む1ページに何度も追加できるカスタム・セクションを追加することです。反復可能なコンテンツセクションの作成方法

私はマクロのようなものを読んでいて、YouTubeの動画を見ようとしていますが、これを実装するための正しい方向を示すものは何も見つかりません。私はマクロが正しいと仮定しています。私は、非デベロッパーが入ってセクションを追加/削除/編集できるようにするのは簡単なことです。私はまた、この方法が複数のページでも可能であることを期待しています。

答えて

1

Umbracoには繰り返し可能なセクションがいくつかあります。 1つに組み込まれている主要なメインはグリッドです。グリッドでは、タイトルブロック、イメージブロックなど、ページ上で使用できるリレーショナルブロックを作成して設定することができます。ボックスの外にはブートストラップマークアップが使用されますが、必要に応じて変更できます。ここのグリッドの詳細:https://our.umbraco.org/documentation/getting-started/backoffice/property-editors/built-in-property-editors/grid-layout

次はプラグインのオプションです。あなたが後にしているものの主なものはネストされたコンテンツ(Umbracoの最新バージョンのコアの一部になりました)です:https://our.umbraco.org/projects/backoffice-extensions/nested-content/これはグリッドのようにちょっとした働きをしますが、独自のビューテンプレートをゼロから作成する必要があります。

ネストされたコンテンツに似ていますが、少し異なります。スタックされたコンテンツです。https://github.com/umco/umbraco-stacked-contentこれはネストされたコンテンツに似ています。

+0

私は達成する必要があったものに類似したアーキタイプを発見しました - しかし、これはアーキタイプが開発をやめたのでより理想的です。 – Sparkz

1

各ページが利用する「テンプレート」の上にいくつか変更する場合は、Master Templateを使用することをおすすめします。これにより、ベースファイルからプロパティを継承し、ベースを上書きする独自のプロパティを子テンプレートに追加することができます。 1つのサイトに複数のマスターテンプレートを作成できます。たとえば、バナーを表示したくないページがあるので、これらのページに2番目のマスターテンプレートを使用します。

ただし、マスターテンプレートを使用することの欠点は、管理者が変更するためにTemplatesSettingsセクションの下)にアクセスする必要があることです。

管理者がページに含まれる「部分」を選択できるようにするには、Multinode Treepickerが必要です。これにより、ページに表示されるノードをContentセクションから選択することができます(これは、管理者が変更する方がはるかに安全です)。それは廃止されたと言われていますが、Umbraco 7(そして私が個人的に使っているもの)でもまだ利用可能です。

マルチノードトレパッカーは、特定の状況で表示する個々のノードを選択するか、Contentセクションの管理者が選択したすべてのノードをループします。

これは、いずれかで行うことができますを入力:

@{ 
    var typedMultiNodeTreePicker = Model.Content.GetPropertyValue<IEnumerable<IPublishedContent>>("banner"); 
    foreach (var item in typedMultiNodeTreePicker) 
    { 
     <p>@item.Name</p> 
    } 
} 

それとも動的

@{ 
    var bannerList = CurrentPage.banner.ToString().Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); 
    var bannerCollection = Umbraco.Content(bannerList); 
    foreach (var item in bannerCollection) 
    { 
     <p>@item.Name</p> 
    } 
} 

・ホープ、このことができます! :)

関連する問題