0

page-advertsindex.tpl.php というファイルがあります。今、私がやりたいことは、そのページを page.tpl.php のコンテンツ領域内に表示することです。

page--advertsindex.tpl.php には、page.tpl のコンテンツ領域にレンダリングする必要がある HTML が含まれていますが、現在 my_drupal_site/advertsindex に移動すると、ページではなく、ページの html --advertsindex のみが表示されます。 .tpl.php ファイルとページ - コンテンツ領域の advertsindex..

これどうやってするの?または私の目標を達成する別の方法はありますか?

4

2 に答える 2

1

url の代わりにAnypage--<identifier>.tpl.phpが使用されます。これは設計によるものであり、このシステムの全体的な目的です。これは、より深いパスにも拡張できます。page.tpl.php/identifierpage--foo-bar-baz.tpl.php/foo/bar/baz

特定のコンテンツを に表示する/identifier場合は、条件付きでコンテンツを含めるか、コンテンツをコピーするかの 2 つのオプションがあります。何を選択するかは、状況によって異なります。

条件付きで含める: 内部page.tpl.php:

<div class="footer">
  <?php if (arg(0) == "advertsindex"): ?>
    <?php print theme("advertsindex_disclaimer"); ?>
  <?php endif; ?>
</div>

オーバーライド: を導入page--advertsindex.tpl.php:

<div id="content">
  <?php print $content ?>
</div>

いつ何を選択するか:

次の場合にのみ、条件付きインクルードまたは条件付きレンダリングを使用します。

  • 含まれるまたは除外されるコンテンツは小さく、共有されます。`[フロントページ HTML の大きな 20 行以上][通常の HTML] のようなパターンは非常に悪いものです。
  • 含まれるコンテンツには、あらゆる種類の派手な新しい変数を引き込む必要があります。 のようなパターンは本当に悪いです。Drupals のテーマ システムはプッシュ (テーマがモジュールから変数を取得) であり、決してプル (テーマはモジュールでパラメーターを要求) ではありません。

それ以外の場合は、オーバーライドを使用します。はい、それには多くの重複が含まれますが、それは設計によるものであり、Drupal のデフォルトのプラクティスとして受け入れられています。20 以上のファイルで一部の HTML を変更する必要がないように、できるだけ遅く「分割」または「コピー」してください。

経験則として、条件文は数行のみにする必要があり、親で使用できない変数は決して必要としません。

于 2013-01-10T07:56:47.290 に答える
0

advertsindexがコンテンツ タイプの 1 つになる場合は、page-advertsindex.tpl.php の代わりに node--advertsindex.tpl.php ファイルを作成する必要があります。または、page.tpl.php ページに一部のコンテンツを表示したくない場合は、page.tpl.php のすべてのコードを YOUR-Custom_page.tpl.php にコピーし、YOUR- のコンテンツ セクション内にコードを配置することをお勧めします。 Custom_page.tpl.php。

役立つと思います。

于 2013-01-10T07:35:33.880 に答える