پنج شنبه, 29 آبان 1399 23:03

حل مشکل تاریخ کامپوننت k2 نسخه 2.10

حل مشکل تاریخ K2 حل مشکل تاریخ K2

از نظر من کامپوننت K2 در جوملا، از دوستداشتنی‌ترین کامپوننت‌های جوملاست که با امکانات فوق‌العاده‌اش می‌تواند بهترین جایگزین برای سیستم پیش فرض مدیریت مطالب جوملا باشد. تعدادی آموزشِ جسته گریخته و بدون توضیح برای حل مشکل تاریخ K2 در سایت‌ها و انجمن‌های ایرانی وجود دارد ولی هیچ کدام مشکل را کاملا حل نمی‌کند.

در ادامه به ساده‌ترین روش ممکن خواهید دید که چطور مشکل بهم ریختگی و عجیب و غریب بودن تاریخ k2 که بعد از ویرایش مطلب بوجود می‌آید را حل کنید.

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

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

خب حالا برای رفع مشکل نمایش تاریخ کامپوننت K2 چه کنیم؟

برای تصحیح و نمایش صحیح تاریخ کامپوننت K2 باید یکی از 2 کدی که عمل شمسی سازی تاریخ را انجام میدهد از بین ببریم تا این عمل فقط یکبار انجام شود. بنابراین کافیست وارد مسیر زیر شویم:

/YOUR-SITE/administrator/components/com_k2/views/item

حالا در این مسیر فایل view.html.php را برای ویرایش باز می‌کنیم و دنبال کامنت //Date/time می‌گردیم تا به خطوط زیر برسیم:

// Date/time
$created = $item->created;
$publishUp = $item->publish_up;
$publishDown = $item->publish_down;

$created = JHTML::_('date', $item->created, $dateFormat);

$publishUp = JHTML::_('date', $item->publish_up, $dateFormat);
if ((int)$item->publish_down) {
$publishDown = JHTML::_('date', $item->publish_down, $dateFormat);
} else {
$publishDown = '';
}

حالا از خطوط بالا دو خط زیر را به حالت کامنت در می‌آوریم. یعنی ابتدای این دوخط علامت # قرار میدهیم:

#$created = JHTML::_('date', $item->created, $dateFormat);
#$publishUp = JHTML::_('date', $item->publish_up, $dateFormat);

 همچنین مقدار متغیر publishDown$ را از JHTML::_('date', $item->publish_down, $dateFormat); به عبارت item->publish_down$ تبدیل می‌کنیم. یعنی به این شکل :

$publishDown = $item->publish_down;

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

 

دیدگاه شما