[CakePHP2] Htmlヘルパーで出力されるタグを変更する

Htmlヘルパー便利ですよね。けど期待したタグが出力されない場合があります。 出力されるタグを独自にカスタマイズする仕組みがあるのでそれを利用しましょう。

タグ定義ファイルを作成する

[install_dir]/app/Config 以下に tags.php を作成します。 例えば、以下のように独自の定義をします。

tags.php
1
2
3
4
5
$config = array(
    'tags' => array(
        'css' => '<link rel="%s" href="%s" %s>',
    )
);

タグ定義ファイルのロード

定義したタグを反映させるために、タグ定義ファイルを読みこませる必要があります。 my_tags.phpとした場合は、tags.php を my_tags.phpに変えてください。

1
$this->Html->loadConfig('tags.php');

定義ファイルがphpファイルでない場合(iniファイルの場合)

第2引数にreaderクラス名を指定します。 コアファイルを覗くとphpファイルとiniファイルはサポートされてるようです。

1
$this->Html->loadConfig(array('tags.ini', 'ini'));`

定義ファイルの場所がConfig直下にない場合

例えばタグ定義ファイルが [install_dir]/app/Config/tag/tags.php と配置されてる場合、 第2引数にパスを指定します。

1
$this->Html->loadConfig('tags.php', APP . 'Config' . DS . 'tag');

loadConfigメソッドではHtmlヘルパーに設定されている$_tagsと読み込まれた定義をmergeしているので 元のタグを残したい場合は、名前の衝突が起きないよう注意が必要です。

参考

Changing the tags output by HtmlHelper

Comments