প্রোগ্রামিকভাবে ডিফল্ট ফ্যাভিকন পরিবর্তন করুন


15

আমি জানি যে আমি ইউজার ইন্টারফেসের পরেও একটি ফ্যাভিকন লোড করতে পারি, তবে কি আপনার থিমের জন্য ডিফল্ট ফ্যাভিকন সেট করার কোনও উপায় রয়েছে, যাতে কেউ যখন থিমটি সক্ষম করে, তখনই ডিফল্ট আইকনটি ততক্ষণ ব্যবহার করা যায়?

উত্তর:


12

আপনি এটি favicon.icoআপনার থিম ফোল্ডারে রাখতে পারেন (your_theme.info হিসাবে একই স্তরে) এবং এটি স্বয়ংক্রিয়ভাবে ব্যবহৃত হবে।

ড্রুপাল 6, 7 এবং 8 এর জন্য কাজ করে।

দ্রষ্টব্য: ফ্যাভিকনটি কয়েকটি ব্রাউজারের দ্বারা ভারীভাবে ক্যাশে করা হয়, নতুনটি দেখতে আপনাকে অতিরিক্ত দৈর্ঘ্যের দিকে যেতে হবে।


ফেভিকনটি আপনার থিমের মূল থেকে উঠতে হবে। এটি উদাহরণস্বরূপ কোনও চিত্রের ফোল্ডারে থাকতে পারে না
পল শেলড্রেক

এছাড়াও, এটি পিএনজি ফ্যাভিকনগুলির সাথে কাজ করে না, কেবল ফেভিকন ডিকো পাওয়া যায়। আপনি এটি ব্যবহার করার আগে আইকোতে রূপান্তর করুন।
ডনকুইক্সোট

এটি লক্ষ করা উচিত যে এটি কেবলমাত্র সম্পর্কিত থিমের জন্যই কাজ করবে। যেমন আপনি প্রশাসনের থিম ব্যবহার করেন তবে আপনার প্রশাসক পৃষ্ঠাগুলি নতুন ফ্যাভিকন পাবেন না।
donquixote

9

ড্রুপাল 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'

তবে, আপনার থিমটি ইতিমধ্যে দ্রুপাল প্রশাসনে ইনস্টল থাকা অবস্থায় আপনি যদি এই সেটিংস পরিবর্তন করেন তবে আপনাকে আপনার থিমটি আনইনস্টল করতে হবে এবং তারপরে এটি পুনরায় ইনস্টল করতে হবে। অন্যথায়, আপনি সমস্ত ক্যাশে সাফ করলেও, দ্রুপাল আপনার পরিবর্তনগুলি বিবেচনায় নেবে না।


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

এটি ফেভিকনের জন্য একটি নতুন ট্যাগ যুক্ত করেছে, তবে পুরানোটি প্রতিস্থাপন করে না।
donquixote

3

পদ্ধতি 1 - টেমপ্লেট.এফপি এর মাধ্যমে

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

ফেভিকন ফাইলের অবস্থানের জন্য আমি মাইমডুলেলের মডিউল ফোল্ডার, বা সাইটগুলি / ডিফল্ট / ফেভিকন.ইকো হিসাবে প্রস্তাব করব। লক্ষ্যটি হ'ল ফাইলটি সংস্করণ নিয়ন্ত্রণে রাখা, এবং সর্বজনীন ফাইল ফোল্ডারে নেই। আমরা এটি ওয়েব-লিখনযোগ্য হতে চাই না।

আমি ধরে নিয়েছি বেশিরভাগ লোক * .png এর পরিবর্তে * .ico ব্যবহার করবেন, এক্ষেত্রে 'টাইপ' তার মূল মান রাখতে পারে।


0

ড্রুপাল 8-এ আপনাকে অবশ্যই ফিউভিকনটি YOUR_THEME.settings.yml (থিম / YOUR_THEME / কনফিগার / ইনস্টল এ অবস্থিত) এ সত্য হিসাবে সেট করতে হবে এবং আপনার ফ্যাভিকন ফাইলটি আপনার থিমের মূল ডিরেক্টরিতে "ফেভিকন.ইকো" নামের সাথে রাখতে হবে

features: 
   favicon:true
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.