JavaScriptをコードの最下部に配置
開発環境:CakePHP2.5.1
SEOの観点からJavaScriptのコードは一番下に記述したいところ。
ですが、CakePHPではHTMLの表示部分として、レイアウトとビューの2種類に分かれています。
全ページ共通で使うのであればいいのですが、特定のビューだけで使いたいJavaScriptがある時が困ります。
そのやり方を見ていきましょう。
レイアウトで分岐処理
まず思いつく方法としては、レイアウト側で分岐処理させればいいのではないか?という方法です。
<?php if ($this->name == 'Sample' && $this->action == 'add'): ?> <?php echo $this->Html->script('jquery'); ?> <?php endif; ?>
一つや二つならいいのですが、何ページもの処理を分岐で書いていくのはあまり効率の良いものではありませんし、コードが読みにくくなり、バグの発生する可能性も増えてしまいます。
fetch(‘script’)を利用
もう一つの方法としては、各ビューにJavaScriptのコードを書く方法です。
とは言っても、そのまま書いたのでは、コードのその部分に出てしまうので、本来の目的を果たせません。
そこで使うのが、デフォルトのレイアウトにも記述されている $this->fetch(‘script’) を利用する方法です。
これを使うには、各ビューで次のように記述することで、レイアウトの $this->fetch(‘script’) が記述された部分にJavaScriptのコードが表示されます。
<?php echo $this->Html->script('jquery', array('inline' => false)); ?>
inline=>falseがポイントになります。