عنوان:

‫تاریخ شمسی برای blogger !


نویسنده: وحید نصیری
تاریخ: ۱۳۸۷/۰۹/۲۹ ۱۳:۴۰:۱۴
آدرس: www.dntips.ir

تاریخ میلادی بلاگر واقعا روی اعصاب بود! این مشکل با استفاده از jQuery به صورت زیر قابل حل است.

تاریخ انگلیسی بلاگر به صورت زیر است:
البته در قسمت تنظیمات تاریخ بلاگ ، فرمت را به این صورت انتخاب کردم تا بدون مشکل تبدیل شود.
<h2 class='date-header'>2008/12/17</h2>

یعنی ما باید متن هرچی heading شروع شده با h2 و دارای کلاس date-header را پیدا کنیم و بعد معادل فارسی آن‌را جایگزین کنیم.
این‌کار را با استفاده از jQuery به صورت زیر می‌توان انجام داد:
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js' type='text/javascript'></script>
<script src='http://vahid.nasiri.googlepages.com/farsidate.js' type='text/javascript'></script>
<script type='text/javascript'>
$(document).ready(function() {
$("h2.date-header").each(function() {
var obj = $(this);
obj.html(ToPersianDate(new Date(obj.text())));
});

$("a[title='comment permalink']").each(function(){
var obj = $(this);
obj.html(ToPersianDateLong(obj.text()));
});

$("a.post-count-link").each(function() {
var obj = $(this);
obj.html(getBloggerPMonthNames(obj.text()));
});

$("a.post-count-link").each(function() {
var obj = $(this);
obj.html(getBloggerPYear(obj.text()));
});
});
</script>

قسمت ویرایش html چیدمان وبلاگ را باید ویرایش و چند سطر بالا را به آن اضافه کرد (بعد از title صفحه).

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

به روز رسانی،
  • نام ماه و سال سمت راست صفحه هم فارسی شد.
  • تاریخ کامنت‌ها هم فارسی شد.

نظرات

  • مهمان در ۱۳۸۷/۰۹/۲۸ ۱۴:۲۸:۰۰
    برای قسمت آرشیوش کاری نمیشه کرد آخه! اشکال اینجا هست. من هم از چنین چیزی استفاده می کنم که تیم بلاگر فارسی درستش کرده بود.اما خوب خیلی دلم می خواهد که آرشیو هم خورشیدی بشه...
  • وحید نصیری در ۱۳۸۷/۰۹/۲۸ ۱۶:۳۷:۰۰
    چرا، اتفاقا بعد از اینکه این‌کار را انجام دادم یادم افتاد قسمت سمت راست فراموش شده :)
    این مورد را هم درست کردم. مطلب ارسالی هم به روز شد.
  • مهمان در ۱۳۸۷/۰۹/۲۹ ۰۰:۳۰:۰۰
    سلام،
    کار بسیار عالی انجام دادید، تا حالا نمونه ساخته شده با jquery را ندیده بودم.
  • مهمان در ۱۳۸۷/۰۹/۲۹ ۱۲:۴۹:۰۰
    آقا خیلی حال دادی! الان اینو گذاشتم روی وبلاگم. مبدل این با اون قلبیه فرقی نداره. فقط چیکار کنم که ساعت رو باسه تاریخ کامنت نشون بده و اسم قدیمی روز رو برای پست ها نشون بده؟
  • مهمان در ۱۳۸۷/۰۹/۲۹ ۱۳:۱۴:۰۰
    ببخشید من انقدر اذیت می کنم، اون اسکریپتی که قبلا استفاده کرده بودم رو آردسش رو برات گذاشتم. کدوم یکی از این دو تا سریع تر اجرا می شن؟ چون تو این یکی jquery.min.js نداره، حجمش کمتره! اما خوب آرشیو رو خورشیدی نمی کنه! فعلا که این اسکریپت شما بهتره اما اون مشکل ساعت و اسم قدیمی روز رو دارم و اینکه نمی دونم چقدر تو سرعت لود صفحه ها تاثیر داره چون متاسفانه حجم صفحات وبلاگم تقریبا زیاده. بازهم متشکرم
  • وحید نصیری در ۱۳۸۷/۰۹/۲۹ ۱۳:۴۳:۰۰
    - ساعت کامنت‌ها رو درست کردم. اسکریپت farsidate.js و متن ارسالی فوق به روز شد.
    - در مورد حجم، چون این اسکریپت‌های لینک داده شده توسط مرورگر کش خواهند شد، فقط بار اول 50 کیلوبایت سربار دارد. در دفعه بعد بازدید، از کش خوانده می‌شود.
  • مهمان در ۱۳۸۷/۰۹/۲۹ ۱۳:۵۹:۰۰
    50 کیلوبایت خیلی زیاده رو قالب وبلاگ من چون خودش سنگینه! با این روشی که اینجا توضیح داده نمی شه نمایش آرشیو رو هم خورشیدی کرد:

    http://bahramshahrfa.blogspot.com/2007/12/persian-date-for-blogger.html
  • وحید نصیری در ۱۳۸۷/۰۹/۲۹ ۱۴:۱۱:۰۰
    این اسکریپت رو تبدیل به یک اسکریپت گریس مانکی کردم که امروز پست می‌کنم. به این صورت نیازی به تغییر در سایت نخواهد بود. خیلی ساده‌تر است و سرباری برای سایت ندارد.
  • مهمان در ۱۳۸۷/۰۹/۳۰ ۰۶:۵۹:۰۰
    آیا با این کدها فرمت آرشیو به تاریخ شمسی تبدیل میشه؟
  • وحید نصیری در ۱۳۸۷/۰۹/۳۰ ۰۹:۰۰:۰۰
    بله. سمت راست صفحه مشخص است.
  • مهمان در ۱۳۸۷/۰۹/۳۰ ۱۵:۱۲:۰۰
    آقای نصیری شرمنده . میخواستم بدونم اگر کدهای بخش دوم رو به وبلاگ اضافه کنیم ، آرشیو به خورشیدی تبدیل میشه؟ من این کار رو کردم و تغییریی نکرد

    من متوجه این بخش از توضیحاتتون نمیشم :ممکن بیشتر توضیح بدهید؟

    "یعنی ما باید متن هرچی heading شروع شده با h2 و دارای کلاس date-header را پیدا کنیم و بعد معادل فارسی آن‌را جایگزین کنیم."
  • وحید نصیری در ۱۳۸۷/۰۹/۳۰ ۱۶:۱۸:۰۰
    - لطفا آدرس بلاگی را که پس از اعمال کدهای فوق تغییری نکرده اینجا جهت بررسی ذکر بفرمائید.
    این فارسی سازی با قالب استاندارد بلاگر (که به نظر در اکثر موارد همین است) سازگار است.

    - اون مطلب رو درباره توضیح در مورد برنامه نویسی آن نوشتم و هنگام استفاده کاربردی ندارد و صرفا کپی کردن اطلاعات اسکریپت قسمت دوم مطلب بالا در header صفحه کفایت می‌کند.
  • مهمان در ۱۳۸۷/۰۹/۳۰ ۲۰:۵۷:۰۰
    من فکر کنم مشکل مجتبی در $("h2.date-header").each(function() باشه... مثلا توی قالب من مطلب ها توی Span هستند و نویسنده از h2 استفاده نکرده!!!!! هرچند خیلی کاره اشتباهی است اما خوب من مجبور شدم موقتا span را توی اسکریپب جایگزین کنم.


    مجتبی جا داره اگه این اسکریپت اندک مشکلاتی که داره حل شه بره توی بلاگر فارسی اون هم به عنوان بهترین مطلب بلاگر فارسی.
  • مهمان در ۱۳۸۷/۰۹/۳۰ ۲۱:۳۴:۰۰
    سلام
    دست شما درد نکند و کارتان آفرین دارد.
    یکی دو سالی است که از تاریخ فارسی در بلاگر استفاده میکنم. علت هم روشن است چون بازدیدکنندگان ساکن ایران درک روشنی از تاریخ میلادی ندارند. از طرف دیگر مشکل دیگری در اینصورت به وجود »یاید . متاسفانه واقعیت اینست و کراراً مشاهده شده است که ساکنین خارج از کشور تاریخ شمسی را گم میککنند و درک درستی از زمان به تاریخ شمسی ندارند.

    راه حل من دستکاری در قالب بلاگر و قرار دادن هر دو در کنار هم بوده است.

    نمیدانم! اگر برایتان امکان پذیر باشد که ورژن دیگری را هم تهیه کنید که هر دو را داشته باشد بسیار مطلوب است و جهت به کار گیری کار خوب شما من مجبور به سر و کله زدن با قالب بلاگر نمیشوم.

    کمان میکنم موضوعی که گفتم یعنی داشتن هر دو تاریخ شمسی و میلادی در کنار هم یک نیاز واقعی است که تقرباً در اینباره بحثی نشده است ئ وراه حل آسانی هم برای آن نبوده است
    بازهم ممنون و موفق باشید
  • وحید نصیری در ۱۳۸۷/۰۹/۳۰ ۲۳:۳۳:۰۰
    سلام
    - میلادی را هم به روش فارسی اضافه کردم :)

    - ضمنا اسکریپت گریس مانکی هم به روز شد تا با آن تداخل نکند.
  • مهمان در ۱۳۸۷/۰۹/۳۰ ۲۳:۵۸:۰۰
    آقای نصیری سلام . من تغییرات رو در وبلاگم اعمال کردم و جواب گرفتم . فقط یک نکته اینکه میشه توی این کد تغییری اعمال کنید که فقط آرشیو رو به شمسی تبدیل کنه و تاریخ پستها تبدیل نشه؟ اینطوری بهتره
  • وحید نصیری در ۱۳۸۷/۱۰/۰۱ ۰۰:۴۹:۰۰
    برای این‌کار کافی است چهار سطر مربوط به h2.date-header و چهار سطر a[title='comment permalink'] را حذف کنید.
  • مهمان در ۱۳۸۷/۱۰/۰۱ ۰۹:۰۰:۰۰
    سلام،
    ممنون از این مطلب خوب. برای من همه قسمت‌ها را به جز commentها درست کرد.
  • وحید نصیری در ۱۳۸۷/۱۰/۰۱ ۰۹:۱۴:۰۰
    سلام
    کامنت‌های بلاگ شما چون در خارج از صفحه وبلاگ صورت می‌گیرد اسکریپت‌های فارسی سازی روی آن اثری ندارند. (فکر کنم این مورد در تنظیمات وبلاگ قابل تنظیم است که کامنت‌ها کجا باز شوند.)
    اینجا توضیح داده شده:
    http://web3b.wordpress.com/2008/09/07/blogger-admin/
    قسمت "کادر نظرات در وبلاگهای بلاگر در ذیل مطالب، مانند وردپرس"
  • مهمان در ۱۳۸۷/۱۰/۰۲ ۰۸:۴۸:۰۰
    سپاس از توجه شما،
    به نظر می‌آید که یک باگ کوچولو هم در محاسبه تاریخ آرشیوها وجود دارد. من دیروز (۱ دی) یک مطلب به بلاگم پست کردم که خود بلاگ هم تاریخ آن را ۱ دی نمایش می‌دهد ولی این مطلب در قسمت آرشیو وبلاگ در مدخل آذرماه آمده است نه دی ماه.
  • وحید نصیری در ۱۳۸۷/۱۰/۰۲ ۰۹:۰۶:۰۰
    بله. این همان موردی است که دوستان در بالا هم به آن اشاره کردند. در نحوه رندر کردن گوگل تغییری حاصل نشده. بنابراین تا آخر برج میلادی در همین آذر باقی خواهد ماند.
    نظر شما چیست؟
    1- ماه به صورت آذر-دی نمایش داده شود
    2- ماه اگر مربوط به سال قبل شمسی بود ، عدد سال هم به آن اضافه شود. (مثلا اسفند سال قبل که دوستان به آن اشاره کردند)

    یا پیشنهاد بهتری دارید؟
  • مهمان در ۱۳۸۷/۱۰/۰۳ ۰۸:۱۷:۰۰
    به نظر من مورد اول بهتر است چون اگر سال را هم به آن اضافه کنید زیادی شلوغ می‌شود.
  • مهمان در ۱۳۸۷/۱۲/۲۵ ۱۳:۵۴:۰۰
    این کار شما برای کسانی که از template کلاسیک استفاده نمیکنن کار میکنه؟
  • وحید نصیری در ۱۳۸۷/۱۲/۲۵ ۱۴:۴۲:۰۰
    قالب‌های غیر رسمی هم اگر سلکتورهای بلاگر را حفظ کرده باشند، بله کار می‌کند.
    برای مثال اگر یک قالب غیر رسمی در تگ h2 کلاس استاندارد date-header را حفظ کرده، بله کار می‌کند.

    در کل اگر می‌خواهید تست کنید که این روش روی سایت شما هم جواب میده یا نه، اسکریپت گریس مانکی زیر را نصب کنید:
    https://www.dntips.ir/2008/12/blog-post_19.html
  • مهمان در ۱۳۸۸/۰۴/۰۸ ۲۳:۲۲:۴۱
    سلام من این رو بین head و /head قرار دادم ولی کار نکرد.
    آدرس من :
    mortalfun.blogspot.com
  • وحید نصیری در ۱۳۸۸/۰۴/۰۹ ۰۱:۰۴:۰۳
    سلام،
    اگر کد را مستقیما کپی کردید یک سری شماره خط اضافه شده که باید پاک شود.
    1.
    2.
    3.
    ...
    25.
    این‌ها اضافی است و نباید باشد.
  • مهمان در ۱۳۸۸/۰۴/۱۰ ۰۹:۲۳:۳۲
    مورد قبلی درست شد(مرسی)
    بعد این که نمیشه کاری کرد که به جای این که مثلا می رو با خرداد یکی بگیره تو آرشیو ماه های صحیح فارسی نوشت
    اطلا یه کار دیکه آیا بایگانی کاملا فارسی فارق از بایگانی بلاگر وجود داره؟
  • وحید نصیری در ۱۳۸۸/۰۴/۱۰ ۱۰:۰۰:۵۵
    این باگ بایگانی هنوز برطرف نشده ...
  • مهمان در ۱۳۸۸/۰۴/۱۹ ۰۳:۳۳:۱۶
    از زحمتی که کشیده اید ممنونم.
  • مهمان در ۱۳۸۸/۰۵/۲۲ ۱۰:۲۸:۲۵
    آقای نصیری! ممنون!
  • وحید نصیری در ۱۳۸۸/۰۶/۱۹ ۱۷:۵۳:۱۲
    سلام،
    قسمت "اگر کد را مستقیما کپی کردید یک سری شماره خط اضافه شده .... اضافی است" را مطالعه بفرمائید ( 2 پاسخ بالاتر بنده).
  • مهمان در ۱۳۸۸/۰۷/۰۳ ۲۳:۵۶:۰۶
    سلام وحید جان . آقا کدت عالی بود . فقط این آخرین نظرات رو از کجا بذارم ؟ widget خودش کار نمی کنه .
    و اینکه چون بلاگ شیر نیست نمی شه از فید استفاده کرد .
  • وحید نصیری در ۱۳۸۸/۰۷/۰۴ ۰۰:۱۷:۲۶
    سلام
    راه استاندارد آن‌را اینجا توضیح داده‌ام:
    https://www.dntips.ir/2009/06/blog-post.html
    نیاز به فید نظرات سایت دارد و اگر share نیست با این راه نمی‌شود.
    راه دیگر هم اینجا توضیح داده شده است:
    http://www.google.com/support/blogger/bin/answer.py?hl=en&answer=42522
  • مهمان در ۱۳۸۸/۰۷/۰۵ ۱۷:۴۰:۱۴
    سلام آقای نصیری
    واقعاً خسته نباشید
    خیلی عالی و کاربردیه

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

    البته این 2 نکته رو اضافه کنم :
    1 - من از قالب فارسی سازی شده خود بلاگر فارسی استفاده می کنم
    2 - من کد ها رو درست در بخش انتهایی کد های قالب و قبل از html آخر وارد کردم

    آدرس من اینه :
    http://persianblackrose.blogspot.com/

    ممکنه مشکل از این 2 تا باشه ؟؟؟

    .
    .
    .

    و یک سوال هم از خدمتتون داشتم
    آیا این امکان وجود داره که بشه قسمتی به ساید بار اضافه کرد که در اون بازدید کنندگاه امکان گذاشتن کامنت رو داشته باشند ؟
    تقریباً یه چیز تو مایه های بخش کامنت 360 یاهو ؟؟؟

    .
    .
    .

    پیشاپیش از لطفتون ممنونم
  • وحید نصیری در ۱۳۸۸/۰۷/۰۵ ۲۲:۰۷:۲۷
    - در قالب شما ابتدای صفحه یک سطر طولانی هست ... اون همون کل فایل jQuery است که به این صورت لحاظ شده و علت آن‌را هم نمی‌دانم و لزومی هم نداشته و صفحه را بی‌خود سنگین کرده.
    - شما می‌تونید اسکریپت‌ها را قبل از بسته شدن تگ body قرار بدید.
    - ضمنا کار ارائه شده در این مقاله، با قالب‌های جدید تهیه شده سازگار نیست. خبری از date-header و غیره در آن نیست و منصف باشید که فرصت این وجود ندارد که به ازای تک تک قالب‌ها یا تک تک افراد بلاگر این موارد بخواهند اصلاح شوند یا تغییر کنند.
    در کل تهیه کنندگان قالب‌ها می‌تونند این مورد را لحاظ کنند یا خیر.