2

私はDrupal初心者です...

ニュースやイベントなど、コンテンツの種類が異なり、内容も異なります。ニュースの詳細ページには、タイトル-コンテンツのテキスト-日付があります。ただし、イベントの詳細ページには、title-date-contenttext-location-speaker-etcがあります。したがって、これらのタイプごとに異なるレイアウトページが必要です。そこで、DrupalThemerが候補者名を取得できるようにしました。イベントページの場合、それは私にpage-node.tpl.phpを与え、ニュースページにも同じことを与えます:(これらのページをどのように分離できますか?私はpage-event-node.tplのようなsthを期待しましたが、そうではありません...: / Drupal Themerは、 page-node-18.tpl.phpのようなイベントページの一意の候補名も示しますが、このノード名ですべてのイベントの一般的なレイアウトを作成することはできないため、何の意味もありません。:(

感謝はとても役立ちます!どうもありがとう!!!

4

2 に答える 2

3

モンキーニンジャ(+1)によって提案されたさまざまなnode.tpl.phpファイルを使用するのが「通常の」方法ですが、カスタムモジュール内のpreprocess_page関数に、ノードタイプに基づいてページテンプレートの提案を追加することで、必要な機能を追加できます。 /テーマ:

function yourModuleOrTheme_preprocess_page(&$variables) {
  // If this is a node page, add a page template suggestion based on node type
  if (isset($variables['node'])) {
    // Build the suggestion name ('.tpl.php' suffix will be added by the theming system)
    $suggestion = 'page-type-' . $variables['node']->type;
    // Add to end of suggestion array, thus keeping the fallback to other suggestions,
    // if this specific version is not implemented by the theme
    $variables['template_files'][] = $suggestion;
  }
} 

これが適切な場所にあると、たとえば「page-type-event.tpl.php」ファイルを追加できるようになります。このファイルは、すべてのイベントノードページに使用する必要があります。

(注:システムで認識されるようにするには、その関数を追加した後、テーマレジストリの再構築をトリガーする必要があります)

于 2010-06-03T10:42:03.113 に答える
2

私はDrupalThemerに精通していませんが、少し異なるアプローチは、ノードテンプレートを使用してコンテンツのスタイルを設定し、優れたContextモジュール(場合によってはPanelsモジュール)などを使用して、上の追加情報のレイアウトを変更することです。ページ(例:ブロック)。

ノードテンプレートを使用してさまざまなコンテンツタイプにテーマを設定するには、node-content_type.tpl.phpの形式でnode.tpl.phpに基づいてテンプレートを作成するだけです。したがって、node-events.tpl.phpというイベントノードのテンプレートがあります。

次に、イベントコンテンツタイプのページが表示されたときに反応するコンテキストモジュールを使用してコンテキストを定義し、表示する領域/ブロックを選択できます。

于 2010-06-03T10:04:46.310 に答える