تاریخ شمسی دروپال با ماژول Calendar Systems

تاریخ شمسی دروپال با ماژول Calendar Systems

دروپال سیستم مدیریت محتوای قابل توسعه ای است و یکی از ویژگی های مهمی که در هسته خود دارد و آن را از بسیاری از سیستم های دیگر متمایز می کند، قابلیت های ایجاد یک سایت چند زبانه است.

دروپال فارسی

قبلا در مقاله «دروپال فارسی» این قابلیت ها را بررسی کرده و توضیح دادم که چطور زبان فارسی را به دروپال اضافه می کنیم و متون موجود در سایت را ترجمه می کنیم.

ترجمه فارسی دروپال با ماژول Localization Update

در مقاله دیگری از همین سری مقالات، ماژول Localization update را معرفی کردم و توضیح داده شد که چگونه می توان به صورت اتوماتیک با به کار گیری این ماژول، ترجمه های موجود در سایت رسمی دروپال برای زبان فارسی را دریافت و در سایت نصب کرد.

تاریخ شمسی (خورشیدی یا جلالی) برای دروپال

در سال های اخیر در جامعه فارسی زبان دروپال، روش های مختلفی برای شمسی کردن تاریخ توسعه یافته است. در این میان ماژول های مفیدی نیز پیاده سازی و در سایت دروپال ارائه شده است. یکی از قدیمی ترین ماژول ها در این زمینه، ماژول Calendar Systems است که از دروپال 6 تا کنون فعال است. طبق آمار رسمی دروپال در تاریخ 26 بهمن 1393، این ماژول تاکنون نزدیک به 16000 بار دانلود شده و نزدیک به 1200 سایت دروپالی استفاده از آن را به سیستم دروپال گزارش داده اند. در این مقاله به معرفی این ماژول و کارکرد آن می پردازیم. در مقاله های آینده از سری مقالات دروپال فارسی ماژول های دیگری که با تاریخ جلالی در دروپال ارتباط دارند را معرفی می کنم.

نصب و راه اندازی ماژول Calendar Systems در دروپال

ابتدا باید به سایت دروپال مراجعه کرده و از صفحه پروژه Calendar System، این ماژول را دانلود کنید. فایل فشرده این ماژول را در فولدر ماژول های سایت دروپالی خود که احتمالا مسیر sites/all/modules است، از حالت فشرده خارج کنید.
سپس به صفحه مدیریت ماژول ها در سایت دروپالی خود رفته، نام ماژول را بیابید و ان را فعال و نصب کنید.

نصب و راه اندازی ماژول Calendar Systems در دروپال

مرحله بعد، patch کردن یک فایل از هسته دروپال است. یعنی کد یک فایل از هسته دروپال را تغییر می دهیم. هرگز کدهای هسته دروپال یا ماژول های دیگر را patch نکنید. این تنها موردی است که ما فارسی زبان ها مجبور هستیم قدری در هسته دروپال تغییر ایجاد کنیم و آن هم به دلیل عدم پشتیبانی مناسب دروپال از سیستم های گاهشماری متفاوت است.

فایلی که برای راه اندازی این ماژول باید patch کنیم، فایل common.inc است که در فولدر includes قرار دارد. فایل patch نیز در فولدری به همین نام در فایل های ماژول Calendar Systems قرار دارد.

اگر یک ابزار مناسب برای انجام patch دارید، از ان برای اعمال پچ استفاده کنید در غیر این صورت به دلیل ساده بودن این patch به صورت دستی هم می توانید، این کار را خودتان انجام بدهید.

بنابراین فایل common.inc را در فولدر includes بیابید و آن با یک برنامه ادیتور که از سیستم خطی UNIX پشتیبانی می کند، باز کنید. خط حاوی این کد را بیابید:

$timezones = &$drupal_static_fast['timezones'];

و در خط بعد از آن کد زیر را اضافه کنید:

  // Calendar Systems module new hook (The actual hook is hook_format_date this one is only a workaround to 
  // prevent incompatibility with modules that already have a function called module_name_format_date)
  foreach (module_implements('format_date_calendar_systems') AS $module) {
    $function = $module .'_format_date_calendar_systems';
    $r = $function($timestamp, $type, $format, $timezone, $langcode);
    
    if ($r != FALSE) {
      return $r;
    }
  }

و فایل را ذخیره کنید.

البته باید دقت کنید که اینجا در مورد وضعیت کنونی این ماژول صحبت می کنیم و بهتر است همیشه در فایل README این ماژول مطالعه کنید که آیا به patch نیاز دارد یا خیر و صورتی که نیاز داشته باشد باید دقیقا چه کدی را بیفزائید. شاید در آینده وضعیت ماژول تغییر کند بنابراین همیشه ببینید که چه توصیه ای توسط توسعه دهنده ماژول ارائه شده است.

تنظیمات ماژول Calendar Systems

پس از نصب ماژول و patch کردن هسته دروپال، به صفحه پیکربندی (Configuration) سایت بروید. در گروه مناطق و زبان‌ها (Regional and language)، لینک Calendar systems را بیابید و کلیک کنید تا به صفحه تنظیمات این ماژول وارد شوید.

در این جا جدولی وجود دارد که فهرست زبان های فعال شده در سایت شما را نمایش می دهد. در مقابل هر زبان، یک انتخابگر وجود دارد که سیستم های گاهشماری مختلف را نشان می دهد. یعنی برای هر زبان می توانیم انتخاب کنیم که از چه سیستم تقویمی استفاده شود.

با توجه به اینکه می خواهیم در زبان فارسی تقویم شمسی استفاده کنیم در مقابل زبان Persian گزینه Iranian را انتخاب می کنیم. در نهایت دکمه Save را می زنیم تا تنظیمات ذخیره شود.

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

نمایش تاریخ میلادی در دروپال

ولی در تصویر زیر همان سایت را مشاهده می کنید که تاریخ با بهره گیری از ماژول Calendar Systems به تاریخ شمسی تغییر کرده است.

نمایش تاریخ جلالی در دروپال

نظرات

من همین کار رو انجام دادم و به این مشکل برخورد کردم:
Fatal error: Call to undefined method DateTime::getTimestamp() in /../sites/all/modules/calendar_systems/calendar_systems.module on line 214

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

سلام
من مراحل بالا رد کامل انجام دادم ولی با هشدار زیر روبرو میشم:
Warning: get_class() expects parameter 1 to be object, null given in cmfcExceptionStandAlone::isError() (line 52 of C:\wamp\www\test\modules\calendar_systems\calendar\lib\exception.class.inc.php).
ضمن اینکه بعد نصب calendar_system برای سایتم درفیلد تاریخ، قابلیت PopUp از کار افتاد. لطفا راهنمایی بفرمایید. ممنون

با سلام
در مورد پچ کردن این نسخه جدیدش که اومده میتونین راهنمایی کنین ؟
با تشکر و خسته نباشید
calendar_systems-7.x-2.0-alpha1

یه سایتی زدی و حاجی حاجی مکه رفتی و دیگه به کامنتها اهمیت نمیدی ...!!!!!
ببین کی از شما پرسیدیم که
با سلام
در مورد پچ کردن این نسخه جدیدش که اومده میتونین راهنمایی کنین ؟
با تشکر و خسته نباشید
calendar_systems-7.x-2.0-alpha1
ولی کو جواب ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
حداقل یدونه راهنمایی الکی میکردی دلمون خوش میشد بابابابابابابابا.

ارسال نظر