ফাইল ফিল্ড আইকন কীভাবে পরিবর্তন করবেন (কোর পরিবর্তন না করে)?


11

ফাইল ক্ষেত্র প্রদর্শনের জন্য উত্পন্ন মার্কআপটি হ'ল (এই উদাহরণে পিডিএফ):

<img src="/modules/file/icons/application-pdf.png" title="application/pdf" alt="" class="file-icon">

আমি আলাদা আইকন চিত্র ব্যবহার করতে চাই। আমি / মডিউল / ফাইল / আইকনগুলির সামগ্রী পরিবর্তন না করে কীভাবে এটি করতে পারি?

আমি অনুমান করি যে আমি ডিফল্ট চিত্রটি লুকিয়ে রাখতে এবং সিএসএসের সাহায্যে আলাদা চিত্র প্রদর্শন করতে পারি তবে কিছুটা অগোছালো বলে মনে হচ্ছে।

উত্তর:


10

আপনি আপনার থিমটিতে ওভাররাইড করতে পারেন theme_file_iconএবং বিভিন্ন আইকন চিত্র নির্দিষ্ট করতে পারেন । file_icon_pathকোর কোন আইকনগুলি ব্যবহার করবে তা কীভাবে নির্ধারণ করে সে সম্পর্কিত রেফারেন্সের জন্য দেখুন ।

আপনার আইকনগুলির পথে "ফাইল_ আইকন_ডাইরেক্টরি" ভেরিয়েবলটিও সেট করতে পারেন, কারণ file_icon_pathফাংশনটি সেই পরিবর্তনশীলটির জন্য পথটি সন্ধান করে।


কি jhedstrom থেকে নিম্নলিখিত বলছেন আমি উপরে দুটি ফাংশন ব্যবহার করার জন্য এই সমাধান অর্জন করা একটি ব্রতী ব্লগ লিখেছি এখানে । আশা করি এটি কারও সহায়ক!
অ্যালিসন

4

এ সম্পর্কে দুটি অতিরিক্ত নোট:

  1. আপনার থিম ডিরেক্টরিতে সমস্ত ডিফল্ট আইকন ফাইল অনুলিপি করা প্রয়োজন হয় না।
  2. আপনি যদি কোনও কাস্টম আইকন ব্যবহার করছেন তবে এটি সন্ধানের জন্য এটি অবশ্যই যথাযথভাবে নামকরণ করা উচিত।

উদাহরণ হিসাবে, আমার কাছে একটি .bib (bibtex) ফাইলের জন্য একটি কাস্টম আইকন ব্যবহার করার প্রয়োজন ছিল। এই ধরণের ফাইল_ডিফল্ট_মাইমটাইপ_ম্যাপিং ()ম্যাপ করা হয়েছে তবে এটি ডিফল্ট পাঠ্য আইকনে ডিফল্ট হবে যেহেতু m মাইম টাইপের (পাঠ্য / এক্স-বিবেটেক্স) নির্দিষ্টভাবে কোনও আইকন নির্দিষ্ট করা হয়নি isn't

আমি আমার থিমের টেমপ্লেট.এফপিতে থিম_ফাইল_ আইকন () কে ওভাররড করেছি, তবে আমি এটি করেছি যাতে আইকন পাথটি কেবলমাত্র প্রয়োজন অনুসারে পরিবর্তিত হয় এবং আমাকে আমার থিম ডিরেক্টরিতে ডিফল্ট আইকন ডিরেক্টরি কপি করতে হয়নি:

function mytheme_file_icon($variables) {
  $file = $variables['file'];
  $icon_directory = $variables['icon_directory'];

  $mime = check_plain($file->filemime);

  if ($mime == 'text/x-bibtex') {
    $icon_directory = drupal_get_path('theme', 'mytheme') . '/images';
  }

  $icon_url = file_icon_url($file, $icon_directory);
  return '<img class="file-icon" alt="" title="' . $mime . '" src="' . $icon_url . '" />';
}

দ্বিতীয় জিনিসটি হ'ল আপনাকে আইকনটির যথাযথ নাম দিতে হবে। আপনি যদি কেবল ফাইল_ আইকন_আরল () এর ব্যবহার রাখেন , তবে এই ফাংশন থেকে এই কোডটি আইকনটির জন্য ফাইলের নামটি নির্ধারণ করবে:

// For a few mimetypes, we can "manually" map to a generic icon.
$generic_mime = (string) file_icon_map($file);
$icon_path = $icon_directory . '/' . $generic_mime . '.png';
if ($generic_mime && file_exists($icon_path)) {
  return $icon_path;
}

সুতরাং আমার ক্ষেত্রে আমার ফাইলের নাম- x-bibtex.png রাখা দরকার। অবশ্যই, আপনি যদি নিজের নামটি চান তবে যা চান (নাম এই ক্ষেত্রে bibtex.png), আপনি কেবল ফাইলের নাম নিজেই সেট করতে পারেন:

$icon_url = $icon_directory . '/bibtex.png';

হয় যে কোনও একটি কাজ করবে, তবে এই পদ্ধতিটি আপনাকে ডিফল্ট আইকনগুলি যেখানে রাখবে সেগুলি রাখার অনুমতি দেয় এবং প্রয়োজন অনুযায়ী জিনিসগুলি কেবল টুইট করতে পারে।


1

আমি এবং ট্রেজিগুলি কিছুক্ষণ আগে এই ফাইল ফিল্ড আইকন মডিউলটি পেয়েছি । আশাকরি এটা সাহায্য করবে

এই মডিউলগুলি ডিফল্ট ফাইল ফিল্ড আইকনগুলি পরিবর্তন করার ক্ষমতা যুক্ত করে। আপনি মূল আইকন প্যাকেজগুলি (এই মডিউলটিতে অন্তর্ভুক্ত) ব্যবহার করতে পারেন, বা আপনি একটি কাস্টম আইকন প্যাকেজ নির্ধারণ করতে পারেন।


0

আপনি (সাধারণত) থিম ফাংশনগুলি প্রিপ্র্রোস করতে পারেন। তাই যদি আপনি:

  1. এক বা একাধিক আইকনকে ওভাররাইড করতে আপনার থিমটিতে সমস্ত আইকন অনুলিপি করে ঠিক আছে।
  2. theme_file_icon()আপনার থিমটি ওভাররাইড করার চিন্তা করবেন না ।

আপনার থিমটিতে পুরো modules/file/iconsডিরেক্টরিটি অনুলিপি করুন (আমি ব্যবহার করেছি file_icons) এবং আপনার থিমের টেমপ্লেট.এফপিতে এই প্রিপ্রোসেস ফাংশন যুক্ত করুন:

/**
 * Implements hook_preprocess_HOOK() for theme_file_icon().
 *
 * Change the icon directory to use icons from this theme.
 */
function MYTHEME_preprocess_file_icon(&$variables) {
  $variables['icon_directory'] = drupal_get_path('theme', 'MYTHEME') . '/file_icons';
}

আপনি এইভাবে শর্তসাপেক্ষে ওভাররাইডগুলিও করতে পারেন আলা @ আশ্চর্য 95 কিন্তু আমি জিনিসগুলি সহজ রাখতে চেয়েছিলাম।


0

প্রদত্ত কয়েকটি সমাধানের মতো পরিষ্কার না হয়েও, এর সাথে ডিল করার সহজ উপায় হ'ল CSS3 'টাইপ' বৈশিষ্ট্য নির্বাচনকারীকে ব্যবহার করা। আপনি আপনার লিঙ্কটিতে ব্যাকগ্রাউন্ড চিত্র হিসাবে আপনার কাস্টম আইকনটি দ্রুত যুক্ত করতে এটি ব্যবহার করতে পারেন। উভয় লক্ষ্য ফাইলে লিঙ্ক করা হয় যে ফলাফল। তারপরে আপনি মূল চিত্রটি আড়াল করতে পারেন। নিম্নলিখিত উপস্থিতি পেতে আমি এটি করেছি:

ফলাফলের স্ক্রিনশট

উপরের ফলাফলগুলি অর্জন করতে এটিই সিএসএস আমি ব্যবহার করেছি:

.views-field-field-image-files img.file-icon {display:none;}
.views-field-field-image-files a {padding-left: 100px; height: 80px; display: block; margin-bottom: 20px;}
.views-field-field-image-files a[type*="application/pdf"] {background: url(../img/icons/file-icon-pdf.gif) no-repeat; }
.views-field-field-image-files a[type*="application/zip"] {background: url(../img/icons/file-icon-zip.gif) no-repeat; }
.views-field-field-image-files a[type*="application/ppt"] {background: url(../img/icons/file-icon-ppt.gif) no-repeat; }
.views-field-field-image-files a[type*="application/pptx"] {background: url(../img/icons/file-icon-ppt.gif) no-repeat; }

আমার উদাহরণে আমি ভিউ ব্যবহার করে ফাইল ক্ষেত্রগুলি দেখছিলাম।

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