2011-12-05 9 views
1

magnoliaのテンプレートスクリプトにmagnoliaのページを含めるにはどうすればよいですか?テンプレートスクリプトのページをmagnolia cmsに含めます

テンプレートスクリプトでは、特定のページのデータにアクセスできますが、そのページをテンプレートに読み込むにはどうすればよいですか?

自分のテンプレートが2ページずつあるとします。ページ1にはツリーページ2が含まれています。ページ1の2ページのテンプレートスクリプトにインクルードしたいが、機能しません。

はどうもありがとうございました:)

は私が実際に何をしたいのか

を更新し、私のプロジェクトのすべてのページで私のヘッダーが含まれています。しかし、ヘッダーを変更したい場合は、プロジェクトのすべてのページを編集する必要があるため、段落として配置したくありません。

私は何をしようとしていますが、これが正しいアプローチであるかどうかわからないのは、ヘッダーのページテンプレートを作成することです。このテンプレートには、ヘッダーのコードだけが含まれています。 私がしたいことは、そのモデルをヘッダにするために、magnoliaのページを作成することです。 次は、作成したばかりのページをプロジェクトのメインテンプレートモデルに含めたいと思いますが、その方法を理解することはできません。

私はMagnolia CMSには新しく、最初はstkを使用してデモサイトを作成しようとしました。唯一の問題は、jspをスクリプト言語として使用できなかったことです。少なくとも、インターネット上では解決策が見つかりませんでした。私はfreemarkerを本当に知っていませんが、それは本当に大きな問題ではありません。私はfreemarkerを使用することに本当に戸惑います。なぜなら、将来はより複雑なプロジェクトでfreemarkerがサポートしていない機能が必要になるかもしれないからです。私はjspを使って自分のサイトを構築したいのですが、これはmagnoliaで可能です。

この長い更新で申し訳ありませんが、誰かがベストプラクティスについて何か提案があり、もし私がjspで欲しいものを実装できたら、本当に感謝しています。実際には動作しません。他のページ内のページを含むあなたの時間:)

答えて

3

STKを使用している場合は、content-reuseのこのガイドをご覧ください。

cms tag-libを見ていない場合は、特にコンテンツを取得してJSP/JSTL変数として設定してからcms:includeTemplateを使用してレンダリングするタグcms:loadPageおよびcms:setNodeを参照してください。

一般的なシナリオは、親ページからコンテンツを継承することです。このヘッダーは、この優れた例です。あなたが行うのは、コンテンツ階層を歩き回って、そのエリア内の親ページからすべて同じ名前でレンダリングするエリアです。このようにして、トップページに追加したヘッダーはすべての子に含まれます。

別のオプションは、他のページに含めることができるだけの特殊なページを持つことです。ヘッダー、フッター、バナーなど、一部のページのサイドペインに移動する必要があります。

+0

私はcms:setNodeで必要なコンテンツを手に入れました。どうもありがとうございました。私はあなたの最後の提案に固執します、それはきれいに見えます。ありがとう – Marius

1

ため再び

感謝。ページ2はすでに<のhtml >タグ、それ自身の<スクリプト>タグ、および独自のCSSを持っているので、別のページに卸売りするだけで意味がありません。

ただし、オプションのカップルを持っています:

  1. はインラインフレームを使用してください。これにより、ページ2の全体をページ1の領域に含めることができます。
  2. 最近のバージョンのMagnoliaでは、個々の段落をレンダリングして別のページに含めることができます。たとえば、http://demopublic.magnolia-cms.com/demo-project/about/subsection-articles.htmlの単一の段落をhttp://demopublic.magnolia-cms.com/demo-project/about/subsection-articles/article/main/0.htmlに見ることができます。これは、データの構造について少し知っている必要がありますが、ページのビットを選択的に抽出できる非常に便利な方法です。
  3. モデルクラスのMagnolia APIを使用して、サブページからデータを取り出し、ビューテンプレートで使用できるようにすることができます。これはSTKが参照するページからのコンテンツを含むティーザーを作成する手法であり、おそらく最も強力で柔軟なアプローチですが、実際にはいくつかのJavaコードを記述する必要があります。 (このアプローチの使用方法の詳細については、http://documentation.magnolia-cms.com/templating/stk/templating.htmlおよびhttp://documentation.magnolia-cms.com/reference/templating.htmlを参照してください。)
  4. (質問が編集された後に追加されました)STKに含まれているフッター機能はほぼ正確にこれを行います。あなたはそれを見てそこにどのように実装されているか見ることに興味があるかもしれません。

少し助けてくれることを願っています!

+0

ありがとうございました。私はオプション3を見て、私が花の中でそれをどうやってできるかを見ていくつもりです。私は実際に私のサイトで何をしたいのかで自分の投稿を更新しました。たぶん誰かが私を正しい方向に導くことができました。再度、感謝します。 – Marius

+1

私はモデルクラスでコンテンツを取得できました。どうもありがとうございました。 – Marius

関連する問題