Themeをオーバーライト
- ファイルリンクを以下のコードでオーバーライトする。
function media_file_icon($variables) {
$file = $variables['file'];
$icon_directory = $variables['icon_directory'];
$mime = check_plain($file->filemime);
$icon_url = file_icon_url($file, $icon_directory);
return '
';
}
オーバーライトされた部分が正しく表示されない
- 画面が前のままで上記コード通りに表示されされていない。
- デバッグモードで、上記ソースにブレイクポイントを入れて、アプリを起動してもブレイクポイントのところに止まらない(このMethodに経由していない)
キャッシュを消しても上記コードがうまく表示されない
- Admin管理画面のキャッシュクリアー(Home » Administration » Configuration » Development)ボタンを何回押してもうまく表示されない
- Apacheを再起動しても直らない
対処方法
- いろいろ調べて、直接に上記Methodでオーバーライトより、Theme登録変更をしたほうがいいという記事がありました。
- 以下のコードでTheme登録を変更する
function media_theme_registry_alter(&$theme_registry) {
if (!empty($theme_registry['file_icon']['function'])) {
$theme_registry['file_icon']['function'] = 'media_file_icon';
}
}
- もう一度サイトのキャッシュを消して、オーバーライトした部分が正常に表示された。
注意点
- ブレイクポイントを上記2Methodに入れて、観察してみました。
- キャッシュを消す時に、「media_theme_registry_alter」のブレイクポイントにとまる。画面が表示の時にこのMethodを経由しない(Themeがキャッシュされたなー)
- 画面が表示の時に「media_file_icon」のブレイクポイントに止まる。(上記登録変更後に、このMethodが正常に作動する)