Ghazmar
Registered User
- تاریخ عضویت
- 27 دسامبر 2002
- نوشتهها
- 766
- لایکها
- 3
بسيار خوب، در ادامة بحث منتشر كردن يك مطلب در آينده (http://forum.persiantools.com/viewtopic.php?t=3727)، گفتيم كه در حال حاضر، Server جديد PersianTools ساعتش رو طوري تنظيم كرده كه با TimzeZone ايران كار كنه و نتيجتاً خروجي تابع date در php همون ساعت محلي خودمون رو برميگردونه.
اولين سؤالي كه پيش ميآد اينه كه چه جوري بفهميم كه ساعتي كه تابع date به ما برميگردونه با ساعت MT يكي هستن. اين از اونجا مهمه كه اگه اين ساعتها يكي نباشن، اونوقت مطلبي كه گذاشتين مثلاً ساعت 8 شب منتشر بشه، در يه ساعت ديگهاي منتشر ميشه.
براي فهميدنش، متن زير رو به يه جايي از قالب وبلاگتوي اضافه كنين و اون رو دوبارهسازي كنين. نتيجهاش اين خواهد بود كه در محلي كه اين كد رو اضافه كردهاين (توي وبلاگتون) ساعت php و ساعت MT رو ميبينين:
[code:1]<!-- Times!!! -->
<p><div style="Text-Align: Left">
<?
print("PHP: ");
print (date("Y m d H i s"));
print("MT: ");
?>
<$MTDate format="%Y %m %d %H %M %S"$>
TimeZone: <$MTBlogTimezone$>
</div>[/code:1]
ضمناً علاوه بر اون دو مورد، TimeZone اي رو هم كه داره استفاده ميكنه به شما نشون خواهد داد.
قبل از هر چيز، كارهاي دوبارهسازي قالب وبلاگ و بعد هم باز كردن دوبارة وبلاگتون رو سريع انجام بدين، چون ساعت MT ساعت دوبارهسازي شماست و نه زماني كه وبلاگ رو باز ميكنين (برعكس ساعت php كه ساعت رو در لحظة نمايش وبلاگ به شما نشون ميده).
خب، سنگ اول: ساعت MT بايد با ساعت خونة شما يكي باشه. اگه نبود، قبل از هر كاري برين TimeZone رو توي تنظيمات وبلاگتون تصحيح كنين و دوباره وبلاگتون رو ببينين.
خب حالا، اگه ساعت php و ساعت MT يكي بودن، يعني هر دوشون با ساعت خونة شما يكي بودن، همون كدي كه قبلاً نوشته شده بود، كفايت ميكنه. البته اگه توي وبلاگتون تقويم دارين، بايد يه كارهاي ديگهاي هم كرد كه بعداً به اون خواهيم پرداخت.
اما اگه اين دو ساعت يكي نيستن، بايد كدتون رو تغيير بدين.
در اينصورت كد زير رو ترجيحاً توي قسمت head قالب وبلاگتون، مثلاً بعد از <script/> اضافه كنين:
[code:1]<?
//Server TimeZone is -05:00 US TimeZone
$ServerTimeZoneH=5;
$ServerTimeZoneM=0;
$ServerTimeZoneS=-1;
$BlogTimeZone="<$MTBlogTimezone$>"; #Iran TimeZone
if ($BlogTimeZone{0}=="-") {
$BlogTimeZoneS=-1;
} else {
$BlogTimeZoneS=1;
}
$BlogTimeZoneH=intval(substr($BlogTimeZone, 1, 2));
$BlogTimeZoneM=intval(substr($BlogTimeZone, 4, 2));
$DH = $BlogTimeZoneH * $BlogTimeZoneS - $ServerTimeZoneH * $ServerTimeZoneS;
$DM = $BlogTimeZoneM * $BlogTimeZoneS - $ServerTimeZoneM * $ServerTimeZoneS;
$MyCurrentLocalTime=date("Y m d H i s", mktime(date("H") + $DH, date("i") + $DM, date("s"), date("n"), date("j"), date("Y")));
?>[/code:1]
اگه دقت كنين از دو تا TimeZone استفاده شده. چون معمولاً Server ها توي امريكا واقع شدهن، من يه TimeZone فرضي براي Server ام توي امريكا در نظر گرفتهام. ميدونيم كه توي امريكا TimeZone هاي مختلفي داريم. اگه با اين اعداد، ساعت شما تصحيح نشده بود (كه نحوة فهميدنش رو الان بهتون ميگم)، اين عدد رو طوري تنظيم كنين كه ساعت درست بهتون نمايش داده بشه.
نحوة تغييرش هم بسيار سادهس. اگه نگاه كنين توي سه خط اول، به سه تا متغير، سه تا عدد نسبت داده شده. 5 يعني ساعت 5، 0 يعني دقيقة صفر و 1- هم يعني اين عدد منفيه (TimeZone امريكا منفيه).
خب كد قبلياي كه نوشتيم كه زمانهاي مختلف رو بهتون نشون ميداد رو هم، اينجوري اصلاح كنين:
[code:1]<!-- Times!!! -->
<p><div style="Text-Align: Left">
<?
print("PHP: ");
print (date("Y m d H i s"));
print("");
print("Mine: $MyCurrentLocalTime");
print("MT: ");
?>
<$MTDate format="%Y %m %d %H %M %S"$>
TimeZone: <$MTBlogTimezone$>
</div>[/code:1]
خب، حالا توي ليست زمانها، يه Mine هم اضافه شده كه باز بايد با ساعت خونة شما يكي باشه. اگه نيست، ببينين اختلافش چقدره و با تغيير اون اعداد 5 و صفر، توي سه خط اول كد بالا، به جايي برسين كه Mine زمان درست رو بهتون نشون بده. يادتون نره كه با هر تغيير ساعت، بعد از Save كردن قالب وبلاگ، اون رو دوبارهسازي كنين و دوباره توي پنجرهاي كه وبلاگتون رو نشون ميده، F5 بزنين و نتيجه رو ببينين.
مثلاً اگه Server شما توي قسمتهاي غربيتر امريكا واقع شده باشه TimeZone مثلاً ميشه 7:30 منفي، يعني اون سه خط اول رو بايد اينجوري عوض كنين:
[code:1]$ServerTimeZoneH=7;
$ServerTimeZoneM=30;
$ServerTimeZoneS=-1;[/code:1]
خب، حالا فرض ميكنيم كه شما با يكي دوبار آزمون و خطا و يا اگه باهوش بوده باشين، با محاسبة اختلاف ساعت و تنظيم دقيق اعداد فوق، الان ديگه ساعت Mine با ساعت خونهتون يكي شده.
حالا ديگه ميتونين اون قسمتي كه ساعتها رو نمايش ميده بهتون، از توي قالب وبلاگ حذف كنين، يا كامنتش كنين (يعني اينجوري:
[code:1]<!-- Times!!!
<p><div style="Text-Align: Left">
<?
print("PHP: ");
print (date("Y m d H i s"));
print("MT: ");
?>
<$MTDate format="%Y %m %d %H %M %S"$>
TimeZone: <$MTBlogTimezone$>
</div>
-->[/code:1]
تا در مواقع لزوم دوباره از كامنت درش بيارين و ازش استفاده كنين و يا اصلاً بذارين باشه!
حالا بايد قسمت مقايسة زمان مطلب نوشته شده، با زمان نمايش صفحه رو تصحيح كنيم، تا وقتي كه يه نفر وبلاگ شما رو ميخونه، مطالبي رو كه براي انتشار در آينده نوشتين، بهش نشون داده نشه.
پس توي قالب وبلاگتون، بلافاصله بعد از <MTEntries> خطوط زير رو اضافه كنين:
[code:1]<?
if ($MyCurrentLocalTime >= "<$MTEntryDate format="%Y %m %d %H %M %S"$>")
{
?> [/code:1]
و نيز بلافاصله قبل از <MTEntries/> كد زير رو اضافه كنين:
[code:1]<? } ?>[/code:1]
حالا بايد اين قالب رو Save كنين و همه چي تمومه. از اين به بعد كافيه كه مطلبتون رو كه ميخواين بعداً منتشر بشه، اول توي حالت پيشنويس منتشرش كنين. بعد كه ثبت شد، زمان انتشار اون رو به زمان دلخواه خودتون تغيير بدين و اين بار در حالت منتشر شده، ثبتش كنين.
البته يادمون نميره كه همون اول اول، بايد خروجي قالب رو از index.html به index.php تغيير ميداديم و ضمناً index.html رو پاك ميكرديم.
والسلام!
اولين سؤالي كه پيش ميآد اينه كه چه جوري بفهميم كه ساعتي كه تابع date به ما برميگردونه با ساعت MT يكي هستن. اين از اونجا مهمه كه اگه اين ساعتها يكي نباشن، اونوقت مطلبي كه گذاشتين مثلاً ساعت 8 شب منتشر بشه، در يه ساعت ديگهاي منتشر ميشه.
براي فهميدنش، متن زير رو به يه جايي از قالب وبلاگتوي اضافه كنين و اون رو دوبارهسازي كنين. نتيجهاش اين خواهد بود كه در محلي كه اين كد رو اضافه كردهاين (توي وبلاگتون) ساعت php و ساعت MT رو ميبينين:
[code:1]<!-- Times!!! -->
<p><div style="Text-Align: Left">
<?
print("PHP: ");
print (date("Y m d H i s"));
print("MT: ");
?>
<$MTDate format="%Y %m %d %H %M %S"$>
TimeZone: <$MTBlogTimezone$>
</div>[/code:1]
ضمناً علاوه بر اون دو مورد، TimeZone اي رو هم كه داره استفاده ميكنه به شما نشون خواهد داد.
قبل از هر چيز، كارهاي دوبارهسازي قالب وبلاگ و بعد هم باز كردن دوبارة وبلاگتون رو سريع انجام بدين، چون ساعت MT ساعت دوبارهسازي شماست و نه زماني كه وبلاگ رو باز ميكنين (برعكس ساعت php كه ساعت رو در لحظة نمايش وبلاگ به شما نشون ميده).
خب، سنگ اول: ساعت MT بايد با ساعت خونة شما يكي باشه. اگه نبود، قبل از هر كاري برين TimeZone رو توي تنظيمات وبلاگتون تصحيح كنين و دوباره وبلاگتون رو ببينين.
خب حالا، اگه ساعت php و ساعت MT يكي بودن، يعني هر دوشون با ساعت خونة شما يكي بودن، همون كدي كه قبلاً نوشته شده بود، كفايت ميكنه. البته اگه توي وبلاگتون تقويم دارين، بايد يه كارهاي ديگهاي هم كرد كه بعداً به اون خواهيم پرداخت.
اما اگه اين دو ساعت يكي نيستن، بايد كدتون رو تغيير بدين.
در اينصورت كد زير رو ترجيحاً توي قسمت head قالب وبلاگتون، مثلاً بعد از <script/> اضافه كنين:
[code:1]<?
//Server TimeZone is -05:00 US TimeZone
$ServerTimeZoneH=5;
$ServerTimeZoneM=0;
$ServerTimeZoneS=-1;
$BlogTimeZone="<$MTBlogTimezone$>"; #Iran TimeZone
if ($BlogTimeZone{0}=="-") {
$BlogTimeZoneS=-1;
} else {
$BlogTimeZoneS=1;
}
$BlogTimeZoneH=intval(substr($BlogTimeZone, 1, 2));
$BlogTimeZoneM=intval(substr($BlogTimeZone, 4, 2));
$DH = $BlogTimeZoneH * $BlogTimeZoneS - $ServerTimeZoneH * $ServerTimeZoneS;
$DM = $BlogTimeZoneM * $BlogTimeZoneS - $ServerTimeZoneM * $ServerTimeZoneS;
$MyCurrentLocalTime=date("Y m d H i s", mktime(date("H") + $DH, date("i") + $DM, date("s"), date("n"), date("j"), date("Y")));
?>[/code:1]
اگه دقت كنين از دو تا TimeZone استفاده شده. چون معمولاً Server ها توي امريكا واقع شدهن، من يه TimeZone فرضي براي Server ام توي امريكا در نظر گرفتهام. ميدونيم كه توي امريكا TimeZone هاي مختلفي داريم. اگه با اين اعداد، ساعت شما تصحيح نشده بود (كه نحوة فهميدنش رو الان بهتون ميگم)، اين عدد رو طوري تنظيم كنين كه ساعت درست بهتون نمايش داده بشه.
نحوة تغييرش هم بسيار سادهس. اگه نگاه كنين توي سه خط اول، به سه تا متغير، سه تا عدد نسبت داده شده. 5 يعني ساعت 5، 0 يعني دقيقة صفر و 1- هم يعني اين عدد منفيه (TimeZone امريكا منفيه).
خب كد قبلياي كه نوشتيم كه زمانهاي مختلف رو بهتون نشون ميداد رو هم، اينجوري اصلاح كنين:
[code:1]<!-- Times!!! -->
<p><div style="Text-Align: Left">
<?
print("PHP: ");
print (date("Y m d H i s"));
print("");
print("Mine: $MyCurrentLocalTime");
print("MT: ");
?>
<$MTDate format="%Y %m %d %H %M %S"$>
TimeZone: <$MTBlogTimezone$>
</div>[/code:1]
خب، حالا توي ليست زمانها، يه Mine هم اضافه شده كه باز بايد با ساعت خونة شما يكي باشه. اگه نيست، ببينين اختلافش چقدره و با تغيير اون اعداد 5 و صفر، توي سه خط اول كد بالا، به جايي برسين كه Mine زمان درست رو بهتون نشون بده. يادتون نره كه با هر تغيير ساعت، بعد از Save كردن قالب وبلاگ، اون رو دوبارهسازي كنين و دوباره توي پنجرهاي كه وبلاگتون رو نشون ميده، F5 بزنين و نتيجه رو ببينين.
مثلاً اگه Server شما توي قسمتهاي غربيتر امريكا واقع شده باشه TimeZone مثلاً ميشه 7:30 منفي، يعني اون سه خط اول رو بايد اينجوري عوض كنين:
[code:1]$ServerTimeZoneH=7;
$ServerTimeZoneM=30;
$ServerTimeZoneS=-1;[/code:1]
خب، حالا فرض ميكنيم كه شما با يكي دوبار آزمون و خطا و يا اگه باهوش بوده باشين، با محاسبة اختلاف ساعت و تنظيم دقيق اعداد فوق، الان ديگه ساعت Mine با ساعت خونهتون يكي شده.
حالا ديگه ميتونين اون قسمتي كه ساعتها رو نمايش ميده بهتون، از توي قالب وبلاگ حذف كنين، يا كامنتش كنين (يعني اينجوري:
[code:1]<!-- Times!!!
<p><div style="Text-Align: Left">
<?
print("PHP: ");
print (date("Y m d H i s"));
print("MT: ");
?>
<$MTDate format="%Y %m %d %H %M %S"$>
TimeZone: <$MTBlogTimezone$>
</div>
-->[/code:1]
تا در مواقع لزوم دوباره از كامنت درش بيارين و ازش استفاده كنين و يا اصلاً بذارين باشه!
حالا بايد قسمت مقايسة زمان مطلب نوشته شده، با زمان نمايش صفحه رو تصحيح كنيم، تا وقتي كه يه نفر وبلاگ شما رو ميخونه، مطالبي رو كه براي انتشار در آينده نوشتين، بهش نشون داده نشه.
پس توي قالب وبلاگتون، بلافاصله بعد از <MTEntries> خطوط زير رو اضافه كنين:
[code:1]<?
if ($MyCurrentLocalTime >= "<$MTEntryDate format="%Y %m %d %H %M %S"$>")
{
?> [/code:1]
و نيز بلافاصله قبل از <MTEntries/> كد زير رو اضافه كنين:
[code:1]<? } ?>[/code:1]
حالا بايد اين قالب رو Save كنين و همه چي تمومه. از اين به بعد كافيه كه مطلبتون رو كه ميخواين بعداً منتشر بشه، اول توي حالت پيشنويس منتشرش كنين. بعد كه ثبت شد، زمان انتشار اون رو به زمان دلخواه خودتون تغيير بدين و اين بار در حالت منتشر شده، ثبتش كنين.
البته يادمون نميره كه همون اول اول، بايد خروجي قالب رو از index.html به index.php تغيير ميداديم و ضمناً index.html رو پاك ميكرديم.
والسلام!