特定のノードIDのテンプレートファイルを定義するにはどうすればよいですか?


7

ノードIDを使用して、特定のノードのカスタムテンプレートファイルを定義しようとしています。テンプレートフォルダーにnode--X.tpl.phpファイルを作成すると言っている多くのトピックを読みました。

それが私がしたことです。残念ながら、テーマキャッシュを何度もフラッシュした後でも、何も変わりません。

他に何かしなければならないことはありますか?

Drupal 7を使用しています。


2
標準のnode.tpl.phpファイルのコピーをテーマフォルダーにも追加しましたか?ノードテンプレートをまったく上書きする場合に必要です
Clive

はい、そうしました。コンテンツタイプのテーマを設定するために、node--content_type_name.tpl.phpファイルをすでに追加しました。私の問題は、特定のノードIDテーマに関するものです。
Ludovic

Cliveのポイントは、これが機能するために、テーマフォルダーにnode.tpl.phpと呼ばれる基本的なノードテーマファイルも必要であることです。命名規則は正しく(D7を使用している場合)、node.tpl.phpが存在する限り機能します。
keva 2012

すみません、私の答えははっきりしていませんでした。はい、node.tpl.phpファイルをテーマフォルダーにコピーしました。D7を使用していることを追加する必要があります。
Ludovic

Drupalのデフォルトをオーバーライドする基本テーマまたは類似のテーマを使用していますか?私は最近、非常によく似た状況にありました。再キャッシュした後、drupalによってnode * .tpl.phpファイルがフェッチされませんでした。最後に、Drupalの動作を積極的にリセットするTaoテーマに基づいていることを思い出しました。また、少なくともnode.tpl.phpが実際にフェッチされることを確認することは良いことです。
DimG 2012

回答:


0

page-node-{nid}.tpl.phpテーマディレクトリ内のテンプレートファイル。これも機能します。

node-{nodeid}.tpl.php youこれを使用して1つの事。


10

Drupal 7では、node-[node-id] .tpl.phpはノードのテンプレートファイルとして使用され、node-[node-type] .tpl.phpも使用されます。Cliveが彼のコメントで書いたように、テーマで使用されるテンプレートファイルを含むディレクトリにnode.tpl.phpもある必要があることを除いて、他に何もする必要はありません。

node-[node-id] .tpl.phpとpage--node-[node-id] .tplの間に違いがあることに注意してください。後者は、node / [node-id] /のページにも使用されます編集、またはnode / [node-nid] / delete。theme_get_suggestions()の最初のコメントを参照してください。

提案されたテーマフックまたはボディクラスのリストを、具体的な順序で作成します。現在のパスのすべての要素に対して1つの提案が行われますが、数値要素は後続の提案に引き継がれません。たとえば、の場合$base = 'page'http://www.example.com/node/1/editは次の提案と本文クラスになります。

 page__node page-node
 page__node __%page-node-%
 page__node__1 page-node-1
 page__node__edit page-node-edit

0

オーバーライドに使用する適切な名前を知る簡単な方法は、drushです。

コマンドラインを開いてdrupalのsites / defaultに移動し、次の行を入力します。

drush vset theme_debug 1

drush vset theme_debug 0 ..を削除するには

その後、ノードをリロードして、そのコードソースを確認します。あなたはあなたのページ(ブロック、リージョン、html.tpl.php、page.tpl.php ....)のすべてについて可能なすべてのdrupalの命題を見るでしょう。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.