تغییر نمایش آیکن فیلد فایل در طراحی تم دروپال

تغییر آیکن فیلد فایل در طراحی تم دروپال

با استفاده از مدیریت فیلد ها در هسته دروپال 7 می توانید، فیلدی از جنس فایل به یک نوع محتوا (content type) بیفزائید. به این صورت در فرم ورود محتوا یک فیلد برای ضمیمه کردن یک یا چند فایل به آن در اختیار خواهید داشت. ایجاد فیلد فایل در دروپال 7

در تنظیمات نمایش فیلد ها، می توانید یکی از شکل های مختلف نمایشی موجود را برای این فیلد فایل انتخاب کنید. این سه شکل که توسط هسته دروپال 7 ارائه می شوند عبارتند از: شکل های نمایش فیلد فایل در دروپال 7

  1. Generic file
  2. Table of files
  3. URL of file

در نمایش دو گزینه اول یک آیکن نیز بر اساس فرمت فایل در کنار آن نمایش داده می شود. برای نمونه اگر فایل از جنس PDF باشد، یک آیکن PDF در کنار آن نمایش داده می شود و اگر یک فایل اکسل باشد، آیکن فایل های اکسل در کنار آن نمایش داده می شود. این آیکن ها با فرمت PNG و در اندازه 16×16 هستند به صورت پیش فرض در ماژول file در هسته دروپال 7 قرار دارند. نمونه ای از آن را در تصویر زیر مشاهده می کنید: جدولی از فایل های یک فیلد برای دانلود در دروپال 7

ممکن است این آیکن ها برای مشتری شما جذاب نباشد و یا طراحی گرافیکی سایت به صورتی باشد که آیکن های بزرگتری و یا با شکل مخصوصی برای این منظور طراحی شده باشد. پس شما ناچار به تغییر این آیکن ها هستید.

یک راه حل ساده این است که فایل های مورد نظر خود را جایگزین فایل های آیکن های استفاده شده در هسته دروپال 7 بکنید. ولی این راه حل مناسبی در دروپال نیست! دروپال یک سیستم مدیریت محتوای بسیار انعطاف پذیر است که امکان هر نوع تغییری را در هر قسمت از سایت در اختیار شما قرار می دهد بدون اینکه نیازی به تغییر در فایل های هسته دروپال داشته باشید.

با توجه به اینکه این کار به حوزه قالب سایت و طراحی تم دروپال مرتبط است، بنابراین باید بدانیم که هر تغییری که قرار است در سایت رخ بدهد باید از طریق تم سایت (theme) انجام بشود. برای این منظور یک تابع قالب در دروپال 7 وجود دارد که می توانید آن را در تم سفارشی سایت مجدداً پیاده سازی کنید. این تابع باید در نهایت کد HTML تصویری که باید نمایش داده شود را به صورت یک رشته برگرداند.

کد این تابع در اصل به صورت زیر است:

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

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

همانطور که مشاهده می کنید این تابع یک آرگومان ورودی دارد. این ورودی یک آرایه است که دو خانه دارد:

  1. file : شیء فایلی (file object) که قرار است نمایش داده شود
  2. icon_directory : ورودی اختیاری که برای تعیین دایرکتوری که فایل های آیکن ها در آن قرار دارد استفاده می شود

همانطور که می دانید برای پیاده سازی یک تابع قالب در تم دروپال باید کد خود را در فایل template.php بنویسید و به جای کلمه theme در ابتدای نام این تابع باید نام theme خود را قرار بدهید.

در کد نمونه زیر، آیکن های مورد نظر خود را در یک دایرکتوری در تم قرار داده و می خواهیم کد HTML آیکن مورد نظر را بر اساس فرمت فایل تولید کنیم:

function drupalika_file_icon($variables) {
  $file = $variables['file'];
  $icon_directory = path_to_theme() . '/images/icons';
  $mime = check_plain($file->filemime);
  $icon_url = file_icon_url($file, $icon_directory);
  return '<img alt="" class="file-icon" src="' . $icon_url . '" title="' . $mime . '" />';
}

فایل های آیکن ها در دایرکتوری images/icons در تم قرار دارند. با استفاده از تابع path_to_theme آدرس دایرکتوری تم را نیز استخراج می کنیم و با چسباندن این دو به یکدیگر، آدرس دایرکتوری حاوی آیکن ها را می سازیم. تابع file_icon_url را برای درست کردن آدرس دقیق فایل آیکن صدا می زنیم. به این تابع شیء فایل مربوط به فیلد و آدرس دایرکتوری حاوی آیکن ها را ارسال می کنیم. در نهایت با استفاده از آدرس آیکن، کد HTML تصویر (حاوی تگ img) را درست کرده و از تابع باز می گردانیم.

نام فایل آیکن ها طوری تنظیم شده است که از روی فرمت فایل نام آن ساخته شود. برای نمونه اگر فرمت فایل PDF به صورت application/pdf است، نام فایل آیکن PDF به صورت application-pdf.png خواهد بود.

در تصویر زیر جایگزینی آیکن انتخابی ما با آیکن پیش فرض که نتیجه اجرای این تابع است را مشاهده می کنید: تغییر آیکن نمایش فیلد فایل در دروپال 7

نظرات

من تازه با سایت خوب شما آشنا شدم
مطالب خوبی بو د، استفاده کردیم، یه دنیا سپاس

تصویر admin
خواهش می کنم مجتبی خان. امیدوارم که سایت اطلاعات مفیدی برای مخاطبین دروپالی داشته باشد.

مخصوصا که بنده از قالب سایت خیلی خوشم اومده.
به خوبی طراحی شده user friendly هست.

تصویر admin
نظر لطف شما است. همانطور که بیان کردید امیدوارم استفاده از سایت برای کاربران آسان باشد.

ارسال نظر