web-dev-qa-db-ja.com

Drupal 7特定のコンテンツタイプのpage.tplをオーバーライドする方法?

特定のコンテンツタイプのpage.tpl.phpをオーバーライドしたいと思いました。私はこれらのことを試しましたが、何もうまくいきません。

  1. page--article.tpl.php
  2. page--node--article.tpl.php
  3. page--node--type--article.tpl.php
  4. page--node-type--article.tpl.php
  5. page--type--article.tpl.php

しかし、特定のノードを番号でターゲティングした場合、つまりpage--node--8.tpl.phpうまくいきました。おもう page--article.tpl.phpは機能するはずでしたが、なぜ機能しないのかわかりません。

名前を間違えているか教えてください。そして、どうすればそのようなことをデバッグできますか? Develモジュールを使用できると聞きましたが、何も知りません。正しい方向に少しヒントをいただければ幸いです。

前もって感謝します

15
Rahul Prasad

あなたのテンプレートがこれを処理できることを確認する必要があります...私のために働くコードスニペットをここに得ました:

http://drupal.org/node/1089656#comment-442679

<?php
function themeName_preprocess_page(&$vars, $hook) {
  if (isset($vars['node'])) {
    // If the node type is "blog_madness" the template suggestion will be "page--blog-madness.tpl.php".
    $vars['theme_hook_suggestions'][] = 'page__'. $vars['node']->type;
  }
}
?>
19
BeWhy

キャッシュをクリアして([管理]> [サイトの構成]> [パフォーマンス])、Drupalが新しいファイルを「認識」し、デフォルトではなくこれを使用するようにしました。

こちらをご覧ください キャッシュされたデータの消去

また、前処理フックを追加する必要がある場合があります(私はD7を自分で使用していません。5/ 6だけです。これは少し変更されたと思います。) この投稿Drupal St​​ack Exchange 詳細を示しているようです

4
anotherdave

私は同じ問題に出くわしました。

node--recipe.tpl.php

not

ページ--recipe.tpl.php

もちろん、これは「レシピ」と呼ばれるコンテンツタイプです。

3
mikeDOTexe

常にキャッシュをクリア...

/ admin/config/development/performanceに移動し、キャッシュのクリアボタンをクリックします。バックエンドの構造を変更していて、期待どおりに表示されない場合は、最初に行う必要があります。

そうでなければあなたはほとんどそれを正しく持っていました

  1. page--content-type-name.tpl.php

コンテンツタイプテンプレートのテーマを設定できます。

1
Ezra

ステップ1.たとえば、コンテンツタイプを作成します。私のコンテンツタイプは「fullwidthpage」です。

ステップ2. page.tpl.phpをコピーし、テンプレートフォルダーのpage--fullwidthpage.tplに名前を変更します。

ステップ3.このコードをtemplate.phpに追加します

function <strong>YOUR_THEME_NAME_HERE</strong>_preprocess_page(&$variables) {
  if (isset($variables['node']->type)) {
    // If the content type's machine name is "my_machine_name" the file
    // name will be "page--my-machine-name.tpl.php".
    $variables['theme_hook_suggestions'][] = 'page__' . $variables['node']->type;
  }
}

変更することを忘れないでくださいYOUR_THEME_NAME_HERE

0
Arul M joseph

したがって、達成しようとしていることに応じて、役立つCSSのトリックがいくつかあるかもしれません。

たとえば、特定のノードタイプのCSSルールをオーバーライドするには、そのノードタイプのページに"node-type-[TYPE]"(つまり、.node-type-article)のボディクラスがあることに注意してください。

その後、次のようにCSSをオーバーライドできます。

body.node-type-article #selector {}
0
bitfed

私はこれが古い質問であることを知っていますが、他の人がここに到着した場合、drupal 7でコンテンツタイプをオーバーライドする方法は次のとおりです

node --contenttype。tpl

0
Purplemonkey

基本ページとは異なる場合は、コンテンツタイプの特定のノードテンプレートを上書きする必要があります。これをチェックしてください:

http://api.drupal.org/node/1908

このページの下で、node.tpl.phpページにあるアイテムをコピーして貼り付け、必要に応じて上書きします。 $ nodeでノードにアクセスできます

記事のテンプレートは次のようになります。

node--article.tpl.php

これが作成されたら、キャッシュがクリアされていることを確認してください。

0
chadpeppers