Mohammad Deljou

كمك كنيد در تبديل تاريخ به شمسي !

17 پست در این موضوع

سلام من دارم يك قسمت از افزونه را به تاريخ شمسي تبديل ميكنم .اما يك مشكلي دارم

يك تيكه كد هست كه تاريخ رو ميخونه و به ميلادي تبديل ميكنه .حالا من مي خوام يك كدي بهش اضافه كنم كه تاريخ را كه دريافت كرده تبديل به شمسي كنه .نمونه تيكه كد را براي شما ميزارم كه ببينيد

<?php echo date(RSMembershipHelper::getConfig('date_format'), $row->membership_start); ?>

به اينصورت نشان ميده --------> 	22.11.2011

حالا من مي خوام كه يك كد به كد اول كه گذاشتم اضافه بشه و به اين شكل تبديل بشه ----------------> سه شنبه, 01 آذر 1390

من نمي خوام كه كد اصلي پاك بشه .من مي خوام كد اول توسط يك كد ديگه به شمسي تبديل بشه.

ايا يه همچين كد هست كه بشه به ادامه كد اول اضافه كرد

ممنون ميشم كمك كنيد

Share this post


Link to post
Share on other sites
آموزش ووکامرس قالب جوملا قالب وردپرس قالب رایگان وردپرس قالب رایگان جوملا هاست نامحدود هاست جوملا هاست لاراول هاست وردپرس هاست ارزان هاست ربات تلگرام خرید دامنه آموزش ساخت ربات تلگرام با php آموزش لاراول آموزش cPanel آموزش php آموزش فرم ساز RSform آموزش ساخت ربات جذب ممبر آموزش ساخت ربات دوستیابی آموزش ساخت ربات فروشگاهی برای ووکامرس آموزش طراحی سایت داینامیک با php آموزش بخش پشتیبانی با rsticket
سلام من دارم يك قسمت از افزونه را به تاريخ شمسي تبديل ميكنم .اما يك مشكلي دارم

يك تيكه كد هست كه تاريخ رو ميخونه و به ميلادي تبديل ميكنه .حالا من مي خوام يك كدي بهش اضافه كنم كه تاريخ را كه دريافت كرده تبديل به شمسي كنه .نمونه تيكه كد را براي شما ميزارم كه ببينيد

<?php echo date(RSMembershipHelper::getConfig('date_format'), $row->membership_start); ?>

به اينصورت نشان ميده --------> 	22.11.2011

حالا من مي خوام كه يك كد به كد اول كه گذاشتم اضافه بشه و به اين شكل تبديل بشه ----------------> سه شنبه, 01 آذر 1390

من نمي خوام كه كد اصلي پاك بشه .من مي خوام كد اول توسط يك كد ديگه به شمسي تبديل بشه.

ايا يه همچين كد هست كه بشه به ادامه كد اول اضافه كرد

ممنون ميشم كمك كنيد

سلام بر شما کاربر عزیز،

برای این کار شما باید به این صورت، افزونه تون رو تغییر بدید:

<?php
$date =& JFactory::getDate($row->membership_start);
$date->setOffset($offset);
$novinfard_date = $date->toFormat('%d %b %Y');
echo $novinfard_date;
?>

پیروز باشید

Share this post


Link to post
Share on other sites

سلام با تشكر از شما

تست شد كاملا صحيح و درست جواب داد

گفتم اعلام كنم كه دوستان ديگر اگر به اين مشكل برخورد كردن بدونن كه درسته و جواب ميده

Share this post


Link to post
Share on other sites

اقا اين قسمت هم اگر كمك كنيد ممنون ميشم

اي نمونه كد اصلي هست كه شما داديد

<?php
$date =& JFactory::getDate($row->membership_start);
$date->setOffset($offset);
$novinfard_date = $date->toFormat('%d %b %Y');
echo $novinfard_date;
?>

كد بالا مربوط ميشه به تاريخ شروع كه درست انجام شد

حالا يك تيكه كد هم هست مربوط ميشه به تاريخ انقضا

كه من از كد بالا استفاده كردم و بجاي
membership_start
از
membership_end
استفاده كردم

و بازم كد تاريخ انقضا درست جواب داد و درست تبديل شد.

حالا من اينجا گير كردم كه اگر تاريخ انقضا نداشتيم يعني اگر نامحدود بود بياد بجاي تاريخ يك نوشته چاپ كنه. كه نامحدود هست

حالا كد اصلي اين بود 

<?php echo $item->membership_end > 0 ? date($this->date_format, $item->membership_end) : JText::_('RSM_UNLIMITED'); ?>

كه من كد شما را جايگزين كردم حالا
من مي خوام انتهاي كد شما اين رو هم اضافه بشه به عنوان شرط .

JText::_('RSM_UNLIMITED')

اينكار رو هم انجام بديد ممنون ميشم

Share this post


Link to post
Share on other sites

آقا محمد این برای rs membership هست ؟ لطفا اگر شمسی کردید قرار بدید همه استفاده کنیم !

Share this post


Link to post
Share on other sites
اقا اين قسمت هم اگر كمك كنيد ممنون ميشم

اي نمونه كد اصلي هست كه شما داديد

<?php
$date =& JFactory::getDate($row->membership_start);
$date->setOffset($offset);
$novinfard_date = $date->toFormat('%d %b %Y');
echo $novinfard_date;
?>

كد بالا مربوط ميشه به تاريخ شروع كه درست انجام شد

حالا يك تيكه كد هم هست مربوط ميشه به تاريخ انقضا

كه من از كد بالا استفاده كردم و بجاي
membership_start
از
membership_end
استفاده كردم

و بازم كد تاريخ انقضا درست جواب داد و درست تبديل شد.

حالا من اينجا گير كردم كه اگر تاريخ انقضا نداشتيم يعني اگر نامحدود بود بياد بجاي تاريخ يك نوشته چاپ كنه. كه نامحدود هست

حالا كد اصلي اين بود 

<?php echo $item->membership_end > 0 ? date($this->date_format, $item->membership_end) : JText::_('RSM_UNLIMITED'); ?>

كه من كد شما را جايگزين كردم حالا
من مي خوام انتهاي كد شما اين رو هم اضافه بشه به عنوان شرط .

JText::_('RSM_UNLIMITED')

اينكار رو هم انجام بديد ممنون ميشم

من دقیقا متوجه نشدم قضیه چی شد، یه توضیح بهتر در این مورد بدید شاید بتونم کمکتون کنم.

Share this post


Link to post
Share on other sites

aligoli عزيز بابات انتشار اين افزونه شرمنده شما و همه هستم.چون افزونه من نال شده نيست . من چند تا از محصولات اين شركت را با لاينسس تجاري از سايت سازنده خريدم.فقط رو دامنه خودمون نصب ميشه.بازم شرمنده

و فايل هاي فارسي شده من هم به درد كسي نميخوره چون براي اخرين ورژن هست كه كلي ايتم و متن ترجمه بهش اضافه شده.اما اگر اخرين نسخه اين افزونه بصورت نال شده منتشر بشه حتما فايل هاي ترجمه را براي

همه ميزارم

و درمورد سوال قبلي من كه يكم گنگ به نظر ميومد دوباره توضيح ميدم

كد اولي كه براي من در پست اولم تبديل كرديد مربوط ميشه به تاريخ شروع كه من كد شما را جايگزين كردم و كاملا درست جواب داد

حالا يك كد دارم براي تاريخ پايان يا انقضاء .اين كد بصورت ميلادي نمايش ميده .

<?php echo $item->membership_end > 0 ? date($this->date_format, $item->membership_end) : JText::_('RSM_UNLIMITED'); ?>

كد بالا رو مي خوام به شمسي تبديل كنه.

اگر امكان داره اين كد رو براي من مثل كد اولي كه در پست اولم گذاشتم به شمسي تبديل كنيد


با تشكر از شما اقاي novinfard


Share this post


Link to post
Share on other sites

بله، شما کد زیر را جایگزین کنید:

<?php
$date =& JFactory::getDate($item->membership_end);
$date->setOffset($offset);
$novinfard_enddate = $date->toFormat('%d %b %Y'); 
echo $item->membership_end > 0 ? $novinfard_enddate : JText::_('RSM_UNLIMITED');
?> 

پیروز باشید

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

سلام حتما دوست عزيز به محض اينكه سايت و افزونه هاي نصب شده روش كامل شد ادرس را خدمت شما و ديگر دوستان ميدم.

ببخشيد كه بازم مزاحم شدم.

2 تا تيكه كد ديگه هم كه اگر تبديل كنيد به شمسي ممنون ميشم.

كد اول:
<?php echo $this->membership->membership_end > 0 ? date($this->date_format, $this->membership->membership_end) : JText::_('RSM_UNLIMITED'); ?>



كد دوم:
<?php echo $row->membership_end > 0 ? date(RSMembershipHelper::getConfig('date_format'), $row->membership_end) : JText::_('RSM_UNLIMITED'); ?>

ميگم ميشه تو بخش تبديل اين كدها يه اموزشي به ما هم بديد .من افزونه هاي ديگه رو كه تبديل كرده بودم خيلي راحت تر بود .اما اين افزونه شركت ار اس جوملا تاريخ را يه جور ديگه
ميزاره .من تو تقويم شمسي هميشه مشكل دارم .

البته خيلي پي اچ پي بلد نيستم در حد انجام دادن كارهاي خودم بلد هستم
البته اگر دوست داشتيد ياد بديد اگر نه كه اشكالي نداره .من مجبور ميشم همش شرمنده شما بشم و تاريخ ها رو بدم شما تبديل كنيد

فقط يه سوال تو كدهايي كه برام ميفرستي يه تيكه كد هست بنام 
$novinfard_enddate
دقت كردم ديدم اسم كاربري شما هم همين هست.
فقط مي خوام بدونم بعد مشكلي پيش نمياد كه تاريخ بهم بريزه .ايا از جاي خاصي داره فراخواني ميشه .يا نه فقط  يه اسم هست

Share this post


Link to post
Share on other sites

با سلام

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

یک آمزوشی بود از جناب علوی که انهم به دلایلی از دسترس خارج شد!!!

با تشکر ، موفق و سربلند و پایدار باشید

یا حق

Share this post


Link to post
Share on other sites

این دو تا کد هم دقیقا مثل دومی هست.

ببینید توی هر دو کد از تابع date در php استفاده شده که به این صورت هست:

آرگومان اول -> فرمت یا شکل تاریخ

آرگومان دوم-> تاریخ بر حسب timestamp

اطلاعات بیشتر : http://php.net/manual/en/function.date.php

خوب حالا کدی که نوشته شده تابع شرطی یک خطی هست. میگه که به طور مثال اگر $this->membership->membership_end بزرگتر از صفر باشه، اولی رو که تاریخ هست نمایش بده، در غیر این صورت دومی رو که یه نوشته هست JText::_('RSM_UNLIMITED');، چاپ کن.

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

در مورد نام متغیر! نام متغیر اختیاری هست. برنامه نویس ها توی کدهایی که می نویسن معمولا از نام مستعارشون به عنوان پیشوند متغیرها استفاده می کنند تا با سایر متغیرهای برنامه conflict پیدا نکنند.

پیروز باشید

Share this post


Link to post
Share on other sites
با سلام

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

یک آمزوشی بود از جناب علوی که انهم به دلایلی از دسترس خارج شد!!!

با تشکر ، موفق و سربلند و پایدار باشید

یا حق

چشم دوست عزیزم. ایشالا همین روزهای یه آموزش کامل برای کاربران میدم.

پیروز باشید

Share this post


Link to post
Share on other sites

سلام فهميدم درست شد .

اما بصورت علمي نفهميدم.

در پست قبلي 2 تا كد ديگه دادم كه گفته بوديد مثل دومي كه ارسال كرديد نوشته ميشه .اما من تست كرده بود نشده بود يعني بجاي اينكه تاريخ پايان را نمايش بده (كلمه نامحدود را نمايش ميداد)

در صورتي كه من تاريخ پايان تعريف كرده بودم. نبايد نامحدود چاپ ميكرد

شما گفتيد مثل كد دوم تبديل كنم .

كد دوم شما :
<?php
$date =& JFactory::getDate($item->membership_end);
$date->setOffset($offset);
$novinfard_enddate = $date->toFormat('%d %b %Y'); 
echo $item->membership_end > 0 ? $novinfard_enddate : JText::_('RSM_UNLIMITED');
?> 

حالا من كد شما رو يه تغيير كوچيك دادم.
كدي كه من تغيير دادم:

<?php $date =& JFactory::getDate($row->membership_end); $date->setOffset($offset); $novinfard_enddate = $date->toFormat('%d %b %Y');  echo $row->membership_end > 0 ? $novinfard_enddate : JText::_('RSM_UNLIMITED'); ?>

شما گفتيد اون كد مثل كد دومي هست .اما نبود من تغيير زير را كه انجام دادم درست شد 
اومدم بجاي
$item

از

$row

استفاده كردم.و درست شد .يعني اگر تاريخ پايان داشتم به شمسي تبديل ميكنه .اگر نداشتم كلمه نامحدود را چاپ ميكنه
ولي نفهميدم كه اين جابجايي كه من كردم چي بود .

Share this post


Link to post
Share on other sites

با سلام،

ببینید هیچ اهمیتی نداره که این متغیر ما توی یک جای برنامه به صورت $row->membership_end یا $this->membership->membership_end یا $example استفاده بشه. این که چه شکلی استفاده بشه، بستگی به نام متغیر مورد استفاده و حلقه و برنامه نویسی کار داره. مهم داده ای هست که توی این متغیرها است. اگه همه ی این متغیرها رو چاپ کنید نتیجه یه فرمت مشخص هست. که اگه تاریخ به صورت timestamp باشه یه عدد هست که زمان رو مشخص می کنه مثل 8732762 که تعداد ثانیه های گذشته از 1 ژانویه 1970 هست یا به به فرمت yyyy-mm-dd هست همون فرمت تاریخ استاندارد در mysql هست. شما این رو میگیرید و بعد به شکلی که می خواهید نمایش می دهید که اینجا به شکل %d %b %Y است.

پیروز باشید

Share this post


Link to post
Share on other sites

اقاي novinfard بابت راهنمايي مفيدي كه كرديد ممنون .من از ديشب تا حالا مطالب مفيدي ياد گرفتم .شما اولين كسي هستي كه تا حالا من به مشكل خوردم و بدون عيب و نقص و دردسر كارم را راه انداخته .

واقعا تبريك ميگم .به اين انجمن كه شما مديرش هستي.

اما نكته اينجا هست كه در بخش مديريت افزونه اگر از متغير $item استفاده ميكردم .تاريخ انقضا را نميتونست تبديل كنه . و اگر در بخش كاربري افزونه از متغير $row استفاده ميكردم باز هم تاريخ انقضا را نميتونست تبديل كنه.

من فقط متوجه نشدم كه چرا بايد در بخش مديريت افزونه از $row و چرا بايد در بخش كاربري سايت از $item استفده كنم .كه اونم با راهنمايي آخر شما دريافتم كه قصه چي بود

نميدونم متوجه شديد كه منظور من چي بود يا نه .

به هر حال من تا اينجاي كار بدون دردسر مشكلم حل شد و راهنمايي شما باعث شد مطالب مفيدي ياد بگيرم.

موفق باشيد

Share this post


Link to post
Share on other sites
اقاي novinfard بابت راهنمايي مفيدي كه كرديد ممنون .من از ديشب تا حالا مطالب مفيدي ياد گرفتم .شما اولين كسي هستي كه تا حالا من به مشكل خوردم و بدون عيب و نقص و دردسر كارم را راه انداخته .

واقعا تبريك ميگم .به اين انجمن كه شما مديرش هستي.

اما نكته اينجا هست كه در بخش مديريت افزونه اگر از متغير $item استفاده ميكردم .تاريخ انقضا را نميتونست تبديل كنه . و اگر در بخش كاربري افزونه از متغير $row استفاده ميكردم باز هم تاريخ انقضا را نميتونست تبديل كنه.

من فقط متوجه نشدم كه چرا بايد در بخش مديريت افزونه از $row و چرا بايد در بخش كاربري سايت از $item استفده كنم .كه اونم با راهنمايي آخر شما دريافتم كه قصه چي بود

نميدونم متوجه شديد كه منظور من چي بود يا نه .

به هر حال من تا اينجاي كار بدون دردسر مشكلم حل شد و راهنمايي شما باعث شد مطالب مفيدي ياد بگيرم.

موفق باشيد

ممنون، خوشحالم که کارتون حل شد.

$row و $item فقط اسم هستند. مثل همون متغیر $novinfard_enddate که سوال کردید. اما این متغیرها کجا تعریف میشند؟ در طرح MCV جوملا، خروجی صفحات در پوشه views/VIEW_NAME/tmpl قرار دارند. متغیرهای این بخش توسط فایل views/VIEW_NAME/view.html.php به فایل های این پوشه این ارسال می شوند. در فریم ورک جوملا 1.5 بعد از این که متغیرها در این فایل تعریف شدند، توسط متد assignRef به همون پوشه tmpl ارسال می شوند. به طور مثال:

$this->assignRef( 'item', $item);

حالا در پوشه tmpl میشه از متغیر item که در فایل view.html.php تعریف کرده بودیم، به راحتی استفاده کنیم.

سعی کردم خیلی ساده بنویسم، ولی کارکرد دقیق تر این موضوع کمی متفاوت است.

پیروز باشید

Share this post


Link to post
Share on other sites

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری