2016-06-29 10 views
1

modular pageというテーマをgrav(テンプレートエンジンとしてtwigを使用)に作成しようとしています。twigで既存のオブジェクトにプロパティを追加

デフォルトでは、モジュラーテーマは少なくとも2つのツリーテンプレートファイルで構成されています.1つはヘッドを含むページフレームを提供し、もう1つはコンテンツモジュールのマークアップを提供するものです。 GRAVのstandard themeは、これらのテンプレートの例を示します。

  1. modular page frame example
  2. module example

あなたが見ることができるように、モジュール(例)はHTMLのheadにJavaScriptを追加するheadまたはjavascriptsブロックを持っていません。 (典型的なモジュラーページは複数のモジュールで構成されているので、これは不可能です.2つの異なるモジュールがjavascriptsブロックを変更しようとすると、最後のものは意図しない結果につながる最初の変更を上書きします) 。

しかし、私はモジュール内から自分のページの先頭にいくつかのJavaScriptコードを追加する必要があります。私は解決策を考え、javascriptコードをプロパティとして「サイトワイド」のオブジェクト、つまりpages objectに追加しました。

これは私の質問につながる:

どのように私は小枝の構文を使用して、既存のオブジェクトにプロパティを追加することができますか?

これ以外にも、このソリューションが機能しない理由が考えられるかどうかを知りたいと思っています。しかし、構文を教えてくれたら、試してみてください...

答えて

0

オブジェクトの状態を操作するのは、Twigテンプレートで行うべきではありません。ビューは、ビューに供給されたデータを出力する必要があります。

JavaScriptを変更しようとするが、最後の1が意図しない結果につながる最初の1によって行われた変更を上書きするブロック

複数のブロックを追加していする方法については、この答えhereを参照してください。コンテンツを上書きするのではなく、ブロックに追加します。あなたは単に 'extra_scripts'ブロックまたはそのようなものを用意して、特定のモジュールの必要なjavascriptを、記述されたリンクごとにそのブロックに追加することができます。基本的には、{{ parent() }}を使用して、コンテンツが親から含まれるようにする必要があります。

+0

まずはお返事いただきありがとうございます。しかし、追加すべきブロックが親から来ていないので、 '{{parent()}} 'を使ってブロックを追加することはできません。私はスケッチhttps://www.twiddla.com/xa84jmでそれを説明しようとします。しかし、それがうまくいく場合であっても、モジュールテンプレートはページフレームから継承されないので、理論的には親から継承することさえできません。 – speendo