شمسی کردن تاریخ node ها در template.php با استفاده از TEMPLATE_preprocess_node به روش Intl

function telavat_preprocess_node(&$variables, $hook) {
  global $language;

  // Convert date.
  if ($language->language == 'fa') {
    $intl = new IntlDateFormatter('[email protected]=persian', IntlDateFormatter::FULL, IntlDateFormatter::FULL, 'GMT', IntlDateFormatter::TRADITIONAL, 'yyyy/MM/dd HH:mm');
  } else if ($language->language == 'ar') {
    $intl = new IntlDateFormatter('[email protected]=islamic', IntlDateFormatter::FULL, IntlDateFormatter::FULL, 'GMT', IntlDateFormatter::TRADITIONAL, 'yyyy/MM/dd HH:mm');
  } else {
    $intl = new IntlDateFormatter('[email protected]=gregorian', IntlDateFormatter::FULL, IntlDateFormatter::FULL, 'GMT', IntlDateFormatter::TRADITIONAL, 'yyyy/MM/dd HH:mm');
  }
  $variables['submitted'] = $intl->format((int) $variables['created']);
}
برچسب ها: 

دیدگاه‌ها

تصویر ongoing

ongoing (تایید نشده)

سلام.
کد بالا رو توی فایل template.php قرار دادم اما تغییری در تاریخ ایجاد نشد.
لطفا راهنمایی کنید.

تصویر محمدعلی اکبری

محمدعلی اکبری

1- telavat رو با اسم قالب خودتون عوض کنید.

2- چک کنید php-intl نصب باشه.

تصویر ongoing

ongoing (تایید نشده)

روی قالب bartik تست کردم ولی ارور زیر رو نشون میده :

Fatal error: Cannot redeclare bartik_preprocess_node() (previously declared in C:\xampp\htdocs\me\drupal\themes\bartik\template.php:111) in C:\xampp\htdocs\me\drupal\themes\bartik\template.php on line 169
--
نکته :
1- زبان دروپال رو فارسی قراردادم.
2- در php-ini گزینه php_intl رو از حالت کامنت در آوردم و فعال هستش.

ممنون از راهنمایی هاتون

تصویر محمدعلی اکبری

محمدعلی اکبری

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

تصویر ongoing

ongoing (تایید نشده)

خیلی عالی ممنون .
اگر امکانش هست راه حل های اینگونه که وابستگی به ماژول ها رو کمتر میکنه رو آموزش بدید.

تصویر محمدعلی اکبری

محمدعلی اکبری

من دید شما رو میپسندم. با این دید جلو برید تفاوت اساسی توی کارهاتون کم کم مشاهده می کنید. اگر موارد این چنینی بود حتما مینویسم.

افزودن نظر جدید