0

コンテンツ タイプに基づいてノード ページのテーマを設定しようとしています。ここでは、 http://drupal.org/node/249726の指示に従おうとしました。

私がしたことは、node.tpl.phpファイルをテーマディレクトリにコピーしました。名前を page-node-mycontenttype.tpl.php に変更し、上記のリンクに示すように、テンプレート ファイルに前処理関数を書き込みました。

ノードのコンテンツのみが表示され、共通のレイアウト要素 (HTML) (page.tpl.php で定義されているロゴ、ヘッダー、フッター、サイドバーなど) は表示されないことが明らかになりました。

では、page-node-mycontenttype.tpl.php で同じ共通レイアウト要素 (HTML) (page.tpl.php で定義されているもの) をもう一度定義する必要がありますか?

もしそうなら、2 つのテンプレート ファイルを管理する必要があります。HTML の変更は、両方のテンプレート ファイルで 2 回行う必要があります。

ページとノードの両方のコンテンツ タイプで共通のレイアウト テンプレート ファイルを参照するより良い方法はありますか?

これを達成するための一般的な慣行と方法を教えてください。

注:コンテンツ タイプに関してノード テンプレート ファイルをオーバーライドするには、テンプレート ファイル node.tpl.php と node-[content_type].tpl.php ファイルの両方がテーマ ディレクトリにある必要があることを確認してください。

4

2 に答える 2

4

探しているファイルは node-mycontenttype.tpl.php です。ページテンプレートではなく、ノードテンプレートが必要です。page-node-mycontenttype.tpl.php の名前を node-mycontenttype.tpl.php に変更すると、期待どおりの結果が得られます。

Drupal のページ テンプレート (page.tpl.php) は、全体的なマークアップと、さまざまな領域のコンテンツが出力される場所を定義します。従来は、ロゴ、メニュー、フッター メッセージ、およびその他のいくつかの静的要素が含まれていました。Drupal テーマ システムを使用すると、特定のノード タイプのページ テンプレート全体をオーバーライドできますが(これが最終的に実行したことです)、説明に基づいて、実際にやろうとしているのはノードテンプレートだけをオーバーライドすることです。

詳細情報: 出力のどの部分を制御するファイルの説明と図: http://drupal.org/node/171194 テーマ システムでの出力のオーバーライドに関する一般的なドキュメント: http://drupal.org/node/341628

上記を読むときは、適用される Drupal のバージョンに注意してください (各ページの上部にタグがあります)。状況は 5 と 6 の間でかなり劇的に変化し、6 と 7 の間で (それほどではありませんが) 再び変化しました。

于 2011-02-09T13:40:51.183 に答える
4

node-contenttypename.tpl.php については t-dub が正しいです。

ただし、特定のコンテンツ タイプ (ランディング ページなど) のページ全体のテーマを変更する場合は、2 つのオプションがあります (他のオプションもある可能性がありますが、これらは私が発見したものです。

  1. セクションと呼ばれるモジュールを使用して、さまざまなコンテンツ タイプごとにテーマを作成できます。

また

  1. 次の関数をテーマの template.php に追加できます。
function templatename_preprocess_page(&$vars) {
  // node->type に基づくテンプレートの変更
  if (isset($vars['node'])) {
    // テンプレートの命名提案を追加します。常にハイフンを使用する必要があります。
    $vars['template_files'][] = 'page-'. str_replace('_', '-', $vars['node']->type);
  }
}

templatename (関数名の) をテンプレートの名前に置き換えるだけです。次に、そのコンテンツ タイプのノードに固有のデザインの page-contenttypename.tpl.php を作成できます。

過去にセクションを使用したことがありますが、#2 で説明した方法の方がより drupal らしく感じられるため、使用する方が好きです。また、メンテナンスがはるかに簡単です。

これが誰かを助けることを願っています!

于 2011-02-09T22:44:52.563 に答える