フロントページには別のテンプレートファイルを使用した方がよいでしょうか?
-
20-09-2019 - |
質問
に関しては:
- スピード
- 必要な処理(速度に影響します)
- 基準に従う
次の 2 つの方法のうちどちらが良いでしょうか?
一般的なページ レイアウトを作成したいのですが、フロントページの見た目は通常のルック アンド フィールとは異なります。
方法 1
通常の page.tpl.php ファイルを作成しますが、その中に次のコードが含まれています。
.....
<body>
<?php if (isFront()) {
// lots of stuff for the frontpage
}
else
{
// lots of stuff for the other pages
}
?>
</body>
方法 2
page.tpl.php とfront.tpl.php という 2 つの異なるページを作成します。コードは複製されますが、フロントページとその他のページにはそれぞれ専用のファイルが存在します。
解決
私は、方法2が優れていると言うでしょう。私はスピードが大幅にどちらの方法でも影響を受けることはないだろうと思い、このについての厳格な基準はありませんが、テンプレートファイルの過度の分岐が推奨されます。
しかし、私はホームページ固有のコードが何であるかを見て興味があります。それは異なったスタイルすることができ、ブロックが唯一のフロントページに表示するために作成できるように、Drupalは、フロントページに「前」CSSクラスを提供します。だから、特定のフロントページテンプレートの必要性がない可能性があります。
他のヒント
逆の順序でポイントに取り組みます。
規格
標準的に受け入れられている方法 (少なくとも Zen ベースのテーマを扱う場合) は、特定のテンプレートを作成することだと思います。実際には、名前を付けたかのように、機能させるために追加のテーマ関数を配置する必要はありません。 page-front.tpl.php
フロントページのみに使用させていただきます。もちろん、これは本当に別のテンプレートが必要な場合にのみ適用されます(これについては Jeremy の回答を参照してください)。
必要な処理
2 つの異なる方法の性質に密接に関係する知覚可能な違いがあるとは思えません。他のすべてが同じであれば、同じファイルであろうと別のファイルであろうと、コンピュータがファイル (テンプレート) を開いてその中の PHP を処理することは依然として重要です。解決策 #1 には、 if
ステートメントはさらに多くなりますが...本当に違いがあるのでしょうか?
スピード
本当に最適化が必要な場合は、次の記事を読んでください (私が間違っていない場合) プロの Drupal 開発) テンプレートを使用してページにテーマを設定するのは、関数を使用して実行するより 5 倍遅いため、その解決策も検討してみてもよいでしょう。ただし、これが利点をもたらすのはホームページがキャッシュ可能でない場合のみだと思います。
ひーっ!