質問: プログラムでデフォルトのファビコンを変更する ユーザーインターフェースからファビコンをロードできることはわかっていますが、テーマのデフォルトのファビコンを設定して、誰かがテーマを有効にするとデフォルトのアイコンがすぐに使用されるようにする方法はありますか?
回答: 次のコード(カスタムモジュール内)は、ファビコンを追加する代わりに、ファビコンを置き換えます。/** * implements hook_html_head_alter(). * * replaces the favicon. * * @param array $head_elements */ function mymodule_html_head_alter(&$head_elements) { foreach ($head_elements as $key => $element) { if (1 // the array key can vary, depending on the original favicon setting. && 0 === strpos($key, 'drupal_add_html_head_link:shortcut icon:') && !empty($element['#attributes']['href']) && 'shortcut icon' === $element['#attributes']['rel'] ) { // make sure to use a file that actually exists! $favicon_path = drupal_get_path('module', 'mymodule') . '/img/favicon_32.png'; $favicon_url = file_create_url($favicon_path); // if the favicon path came from a user-provided setting, we would also need drupal_strip_dangerous_protocols(). $element['#attributes']['href'] = $favicon_url; $element['#attributes']['type'] = 'image/png'; $head_elements[$key] = $element; } } } ファビコンファイルの場所については、mymoduleのモジュールフォルダーか、sites/default/favicon.icoをお勧めします。目標は、ファイルをバージョン管理に置くことであり、公開ファイルフォルダーに置くことではありません。 webで書き込み可能にしたくありません。ほとんどの人は* .pngではなく* .icoを使用すると思います。この場合、「タイプ」は元の値を維持できます。