Antworten:
Sie können das favicon.ico
in Ihrem Theme-Ordner ablegen (auf der gleichen Ebene wie your_theme.info) und es wird automatisch verwendet.
Funktioniert für Drupal 6, 7 und 8.
Hinweis: Das Favicon wird von einigen Browsern stark zwischengespeichert. Möglicherweise müssen Sie zusätzliche Längen angeben, um das neue zu sehen.
In Drupal 8 können Sie die settings.yml
Datei unter verwendenthemes/YOURTHEME/config/install/YOURTHEME.settings.yml
Hier ist ein Beispiel für die Anpassung von Themenlogos / Favoriten:
logo:
use_default: false
path: 'themes/YOURTHEME/logo.png'
favicon:
use_default: false
path: 'themes/YOURTHEME/favicon.png'
Wenn Sie diese Einstellungen jedoch ändern, während Ihr Design bereits in der Drupal-Administration installiert ist, müssen Sie das Design deinstallieren und anschließend neu installieren. Andernfalls berücksichtigt Drupal Ihre Änderungen nicht, auch wenn Sie alle Caches löschen.
<?php
function hook_page_alter(&$pages) {
$favicon = "http://example.com/sites/default/files/favicon.ico";
$type = theme_get_setting('favicon_mimetype');
drupal_add_html_head_link(array('rel' => 'shortcut icon', 'href' => drupal_strip_dangerous_protocols($favicon), 'type' => $type));
}
?>
Der folgende Code (in einem benutzerdefinierten Modul) ersetzt das Favicon, anstatt ein zusätzliches hinzuzufügen.
/**
* 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;
}
}
}
Als Speicherort für die Favicon-Datei würde ich entweder den Modulordner von MYMODULE oder sites / default / favicon.ico vorschlagen. Das Ziel ist es, die Datei in der Versionskontrolle und NICHT im öffentlichen Ordner zu haben. Wir möchten nicht, dass es im Web beschreibbar ist.
Ich gehe davon aus, dass die meisten Benutzer * .ico anstelle von * .png verwenden. In diesem Fall kann der 'Typ' seinen ursprünglichen Wert beibehalten.
/**
* Implements hook_html_head_alter().
*/
function MYTHEME_html_head_alter(&$head_elements) {
// Remove existing favicon location
global $base_url;
$default_favicon_element = 'drupal_add_html_head_link:shortcut icon:' . $base_url . '/misc/favicon.ico';
unset($head_elements[$default_favicon_element]);
// Specify new favicon location
$element = array(
'rel' => 'shortcut icon',
'href' => '/path-to-favicon/favicon.ico',
);
drupal_add_html_head_link($element);
}
/**
* Implements hook_html_head_alter().
*/
// Remove existing favicon location
function MODULENAME_html_head_alter(&$head_elements) {
global $base_url;
$default_favicon_element = 'drupal_add_html_head_link:shortcut icon:' . $base_url . '/misc/favicon.ico';
unset($head_elements[$default_favicon_element]);
// Specify new favicon location
$element = array(
'rel' => 'shortcut icon',
'href' => '/path-to-favicon/favicon.ico',
);
drupal_add_html_head_link($element);
}
Sehen Informationen finden hook_html_head_alter .
Hinweis: Es ist nicht erforderlich, den neuen Favicon-Speicherort in aufzulisten hook_html_head_alter()
. Ich gebe es normalerweise in THEMENAME_preprocess_html()
oder an MODULENAME_init()
.