डिफ़ॉल्ट फ़ेविकॉन प्रोग्रामेटिक रूप से बदलें


15

मुझे पता है कि मैं उपयोगकर्ता इंटरफ़ेस के बावजूद एक फ़ेविकॉन लोड कर सकता हूं, लेकिन क्या आपके विषय के लिए डिफ़ॉल्ट फ़ेविकॉन सेट करने का एक तरीका है, ताकि जब कोई व्यक्ति थीम को सक्षम करे, तो डिफ़ॉल्ट आइकन तुरंत उपयोग हो सके?

जवाबों:


12

आप favicon.icoअपने थीम फ़ोल्डर में रख सकते हैं (अपने स्तर पर your_theme.info के समान) और यह स्वचालित रूप से उपयोग किया जाएगा।

Drupal 6, 7 और 8 के लिए काम करता है।

नोट: फ़ेविकॉन कुछ ब्राउज़रों द्वारा भारी है, नए को देखने के लिए आपको अतिरिक्त लंबाई पर जाने की आवश्यकता हो सकती है।


फ़ेविकॉन को उठाया जाने के लिए आपके विषय की जड़ में होना चाहिए। यह उदाहरण के लिए एक छवि फ़ोल्डर में नहीं हो सकता
पॉल शेल्ड्रेक

इसके अलावा, यह png favicons के साथ काम नहीं करता है, केवल favicon.ico पाया जाता है। इसलिए इसे इस्तेमाल करने से पहले ico में कन्वर्ट कर लें।
दान

यह भी ध्यान दिया जाना चाहिए कि यह केवल संबंधित विषय के लिए काम करेगा। उदाहरण के लिए, यदि आप एक प्रशासन विषय का उपयोग करते हैं तो आपके व्यवस्थापक पृष्ठों को नया फ़ेविकॉन नहीं मिलेगा।
दान

9

Drupal 8 में, आप settings.ymlफ़ाइल का उपयोग कर सकते हैं , पर स्थित हैthemes/YOURTHEME/config/install/YOURTHEME.settings.yml

यहाँ विषय लोगो / फ़ेविकॉन अनुकूलन के लिए एक उदाहरण है:

logo:
  use_default: false
  path: 'themes/YOURTHEME/logo.png'
favicon:
  use_default: false
  path: 'themes/YOURTHEME/favicon.png'

हालाँकि, यदि आप इन सेटिंग्स को बदलते हैं, जबकि आपका विषय पहले से ही Drupal प्रशासन में स्थापित है, तो आपको अपनी थीम को अनइंस्टॉल करना होगा और फिर इसे फिर से इंस्टॉल करना होगा। इसके अलावा, भले ही आप सभी कैश को साफ़ कर दें, लेकिन Drupal आपके परिवर्तनों को ध्यान में नहीं रखेगा।


5
<?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));
}
?>

यह फ़ेविकॉन के लिए एक नया टैग जोड़ता है, लेकिन पुराने को प्रतिस्थापित नहीं करता है।
दान करें

3

विधि 1 - template.php के माध्यम से

/**
 * 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);
}

विधि 2 - कस्टम मॉड्यूल के माध्यम से

/**
 * 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);
 }

अधिक जानकारी के लिए hook_html_head_alter देखें ।

नोट: नए फ़ेविकॉन स्थान को सूचीबद्ध करना आवश्यक नहीं है hook_html_head_alter()। मैं आमतौर पर इसे THEMENAME_preprocess_html()या में निर्दिष्ट करता हूं MODULENAME_init()


2

निम्नलिखित कोड (एक कस्टम मॉड्यूल में) फ़ेविकॉन को प्रतिस्थापित करता है, एक अतिरिक्त जोड़ने के बजाय।

/**
 * 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 के मॉड्यूल फ़ोल्डर या साइटों / डिफ़ॉल्ट / favicon.ico का सुझाव दूंगा। लक्ष्य फ़ाइल को संस्करण नियंत्रण में है, और सार्वजनिक फ़ाइल फ़ोल्डर में नहीं है। हम नहीं चाहते कि यह वेब-लेखन योग्य हो।

मुझे लगता है कि अधिकांश लोग * .png के बजाय * .ico का उपयोग करेंगे, इस मामले में 'प्रकार' अपना मूल मूल्य रख सकता है।


0

Drupal 8 में आपको अपने_HEMEM.settings.yml (थीम / your_THEME / config / install पर स्थित) में favicon को सही सेट करना होगा और अपने favicon फ़ाइल को "favicon.ico" नाम के साथ अपने थीम रूट निर्देशिका में रखना होगा।

features: 
   favicon:true
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.