News:

Bored?  Looking to kill some time?  Want to chat with other SMF users?  Join us in IRC chat or Discord

Main Menu

آموزش شمسی کردن تاریخ انجمن SMF

Started by javad_ft, September 08, 2013, 10:44:57 AM

Previous topic - Next topic

javad_ft


با سلام خدمت دوستان
بنده اخیراً تاریخ انجمن خودمون رو شمسی کردم و میخام اینجا آموزشش رو بزارم تا همه استفاده کنن.
توجه1: اگر مهارت کافی ندارید از این آموزش استفاده نکنید، در غیر اینصورت ممکن است برای انجمن شما مشکل ایجاد شود.
تابع timeformat  در فایل Subs.php وظیفه تبدیل timestamp ها به رشته برای نمایش را بر عهده دارد.
با ویرایش این تابع میتوان تاریخ و ساعت را بصورت دلخواه نمایش داد.
همچنین باید توابعی برای تبدیل تاریخ میلادی به شمسی داشته باشید که برای این منظور از کتابخانه آماده jdf.php استفاده میکنیم که کاملاً قابل اطمینان است.
برای دانلود به اینجا مراجعه کنید: http://jdf.scr.ir [nofollow]

از آنجایی که فایل jdf برای انکودینگ UTF-8 ارائه شده، اگر انکودینگ انجمن شما Arabic(windows-1256 باشد باید از فایل تبدیل شده که در پست بعدی موجود است اسفاده کنید.
توجه2: قبل از هرگونه ایجاد تغییرات در فایل subs.php ، از آن یک کپی تهیه کنید تا در صورت بروز مشکل بتوانید آنرا جایگزین کنید.

برای استفاده از توابع فایل jdf باید آنرا در پوشه Sources کپی کنید.
همچنین باید آنرا در ابتدای فایل Subs اصطلاحاً include کنید.
توجه کنید که این کار باید بعد از قسمت if (!defined('SMF')) انجام شود. بصورت زیر:


if (!defined('SMF'))
die('Hacking attempt...');

include_once('jdf.php');

سپس تابع timeformat  باید با کد زیر جایگزین شود:


//#<modified> today/yesterday/date + time
// Format a time to make it look purdy.
function timeformat($log_time, $show_today = true, $offset_type = false)
{
global $context, $user_info, $txt, $modSettings, $smcFunc;

$time = $log_time + $modSettings['time_offset'] * 3600;

// Today and Yesterday?
if ($show_today === true)
{
// Get the current time.
$nowtime = forum_time(false); //argument must be false to ignore user_offset

$then = @getdate($time);
$now = @getdate($nowtime);

// Same day of the year, same year.... Today!
if ($then['yday'] == $now['yday'] && $then['year'] == $now['year'])
return jstrftime( $txt['today'] . '%H:%M:%S' ,$time);
// Day-of-year is one less and same year, or it's the first of the year and that's the last of the year...
if (($then['yday'] == $now['yday'] - 1 && $then['year'] == $now['year']) || ($now['yday'] == 0 && $then['year'] == $now['year'] - 1) && $then['mon'] == 12 && $then['mday'] == 31)
return jstrftime( $txt['yesterday'] . '%H:%M:%S' ,$time);
}

return jstrftime('%e %B %Y - %H:%M:%S' ,$time);
}
//#</modified>


javad_ft

دوستانی که انکودینگ انجمن آنها Arabic(windows-1256) است باید از این فایل استفاه کنند. توجه کنید که اسم فایل رو بزارید jdf.php 

http://jelecomp.persiangig.com/jdf_arabic%28windows1256%29.php/download [nofollow]

javad_ft


این کار محدودیتهای زیر را هم ایجاد میکنه که البته زیاد مهم نیستند:
- ادمین نمیتونه از تو بخش مدیریت سیستم، فرمت تاریخ تعریف کنه.(یعنی میتونه، ولی تابع timeformat تنظیمات رو نادیده میگیره)
2-کاربرا نمیتونن برای خودشون فرمت تاریخ و زمان و یا آفست زمانی تعریف کنن.(ایضاً مثل مورد بالا)

البته تو بخش مدیریت سیستم امکان تعریف آفست زمانی برای ادمین هست که میتونیم برای تصحیح زمانهای Daylight saving ،اختلاف ساعت جهانی و خطای ساعت سرور ازش استفاده کنیم
.یعنی اگر ساعت بخاطر شش ماهه اول یک ساعت جلو بود باید برید به مسیر زیر:
مدیریت سیستم>تنظیمات پیکربندی>امکانات و گزینه ها
بعد مقدار "اختلاف زمانی با ساعت سرور" رو بزارید روی 1-

hesaab

امکانش هست آدرس انجمن خودتون رو بذارید؟
ممنون
<a href="http://www.tasavi.ir [nofollow]" rel="no-follow">تالار گفتگوی حسابداری</a>

javad_ft

انجمن مال من نیست. من عضوم :
www.eca.ir/forum2

ali[n]


farshid_mi

از جنابعالی به خاطر این موضوع ارزشمند و راهنمایی دقیقتان سپاسگذری می نمایم:

تاریخ هجری شمسی در SMF
[/font]

zabih1365

سلام
این سایت هم هست
hxxp:www.meta4u.com/forum/index.php?action=community [nonactive]

zabih1365

سلام
انجمن حسابداری در آدرس زیر هم تاریخش شمسی است.

hxxp:www.meta4u.com/acc [nonactive]

IR4G

Quote from: javad_ft on September 08, 2013, 10:56:27 AM

این کار محدودیتهای زیر را هم ایجاد میکنه که البته زیاد مهم نیستند:
- ادمین نمیتونه از تو بخش مدیریت سیستم، فرمت تاریخ تعریف کنه.(یعنی میتونه، ولی تابع timeformat تنظیمات رو نادیده میگیره)
2-کاربرا نمیتونن برای خودشون فرمت تاریخ و زمان و یا آفست زمانی تعریف کنن.(ایضاً مثل مورد بالا)

البته تو بخش مدیریت سیستم امکان تعریف آفست زمانی برای ادمین هست که میتونیم برای تصحیح زمانهای Daylight saving ،اختلاف ساعت جهانی و خطای ساعت سرور ازش استفاده کنیم
.یعنی اگر ساعت بخاطر شش ماهه اول یک ساعت جلو بود باید برید به مسیر زیر:
مدیریت سیستم>تنظیمات پیکربندی>امکانات و گزینه ها
بعد مقدار "اختلاف زمانی با ساعت سرور" رو بزارید روی 1-

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

CHRIS-7

ممنون اما مودی برای شمسی کردن تاریخ وجود داره و نیازی به نصب دستی نیست.

لینک زیر.

http://www.simplemachines.org/community/index.php?topic=498421.0

mehrtadbir

Quote from: CHRIS-7 on March 11, 2015, 02:01:12 PM
ممنون اما مودی برای شمسی کردن تاریخ وجود داره و نیازی به نصب دستی نیست.

لینک زیر.

http://www.simplemachines.org/community/index.php?topic=498421.0

سلام

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

صرفا تاریخ در قسمت هدر سایت تغییر می کند
موفق و پیروز باشید

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

CHRIS-7

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

آیا وقتی که انجمن را بخواهم از نسخه به نسخه ی دیگری آپدیت کنم با خطایی مواجعه نخواهم شد ؟

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

javad_ft

Quote from: CHRIS-7 on March 31, 2015, 08:18:45 PM
آیا وقتی که انجمن را بخواهم از نسخه به نسخه ی دیگری آپدیت کنم با خطایی مواجعه نخواهم شد ؟

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

CHRIS-7

Quote from: javad_ft on April 05, 2015, 06:08:47 PM
Quote from: CHRIS-7 on March 31, 2015, 08:18:45 PM
آیا وقتی که انجمن را بخواهم از نسخه به نسخه ی دیگری آپدیت کنم با خطایی مواجعه نخواهم شد ؟

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

اوه ، ممنون بابت کمکتون - این تاریخ شمسی هم خیلی خوبه برای انجمن ها و خیلی طرفدار داره نسبت به تاریخ میلادی.بازم تشکر بابت مطلب با ارزشتون. :)

SaidJan

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

Advertisement: