آموزش دروپال قسمت سوم: تبدیل تاریخ میلادی به تاریخ شمسی در drupal با استفاده از ماژول Calendar systems 2 دیدگاه

drupal_0

در این قسمت از سری آموزش های دروپال با مفهوم ماژول آشنا خواهیم شد و به کمک یک ماژول یا افزونه یک تقویم شمسی به سایت دروپالی خود که در آموزش دروپال قسمت دوم با هم دیگر ایجاد کردیم اضافه می نماییم. پس در ادامه با وب ایران همراه باشید.

یک ماژول چیست؟

یک ماژول دروپال عبارت است از مجموعه ای از فایلها که شامل توابع نوشته شده با PHP هستند. یک ماژول به علت اجرا در داخل سایت میتواند به تمام توابع و متغییر ها و ساختار هسته دروپال دسترسی داشته باشد. در واقع یک ماژول با یک فایل منظم PHP که میتواند مستقیماً برای هدایت توابع مختلف، ایجاد تست و اجرا شود، فرقی نمیکند.

این روش به هسته دروپال اجازه میدهد تا در مکانهای خاص توابع خاص که در ماژولهای دیگر نوشته شده اند را فراخوانی کرده و تابع پذیر بودن هسته را افزایش دهد. این موقعیت ها که همان توابع هستند و میتوانند در محلهای دیگر استفاده شوند “hook” نامیده میشوند.

تبدیل تاریخ میلادی به تاریخ شمسی در drupal

پس از نصب دروپال همانطور که مشاهده می کنید تاریخ سایت دروپالی شما بر اساس تاریخ میلادی می باشد برای تبدیل آن به تاریخ شمسی ما می توانیم از ماژول هایی نظیر Calendar Systems و یا datex استفاده نماییم.

برای استفاده از ماژول Calendar systems پس از دانلود ان از این لینک و در اوردن فایل از حالت فشرده به مسیر زیر رفته و فولدر مربوط به ماژول را در این مسیر کپی می نماییم.

C:\wamp\www\mydrupal\sites\all\modules

توجه داشته باشید همانطور که در قسمت اول آموزش دروپال گفتیم اسم پروژه دروپالی ما mydrupal می باشد و این مسیر برای شما با توجه به نام پروژه مورد نظرتان اسم آن قرار خواهد گرفت.

سپس با باز کردن سایت دروپالی خود و رفتن به قسمت افزونه ها در جدول مربوط به افزونه های موجود نام افزونه calendar systems را که اضافه نمودیم را مشاهده می کنید. سپس آنرا فعال و نصب نمایید.

patch کردن یک فایل از هسته دروپال

مرحله بعد، 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 را می زنیم تا تنظیمات ذخیره شود.

نویسنده مطلب:

سارا یوسفی

نظرات

محمد

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

از نصب درست ماژول اطمینان حاصل کنید. این ارور برای این هست که تابع استفاده شده رو شناسایی نمیکنه.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *


Time limit is exhausted. Please reload CAPTCHA.