emperor69

تغییر رنگ مطالب جوملا بر اساس تاریخ ایجاد *اختصاصی*

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

سلام به همه

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

-------------------

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

components/com_content/views/frontpage/tmpl/default_item.php

را در مسیر زیر کپی کنید: (اگر ندارید بسازید)

<your template>/html/com_content/frontpage/default_item.php

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

$this->item->created

پس با این حساب اگر ما کد بالا را با تاریخ روز مقایسه کنیم میتوانیم قدیمی یا جدید بودن متن را تشخیص دهیم و درنتیجه چندین کلاس css برای مطالب با سن وسال متفاوت تعریف کنیم. برای این کار یک فایل جدید ایجاد میکنیم. این فایل وظیفه مقایسه و تحلیلی که گفته شد را به عهده میگیرد. این فایل را با نامی مثلاً myfrontpagehelper.php در مسیر زیر ایجاد میکنیم:

<your template>/html/com_content/frontpage/myfrontpagehelper.php

کد موجود در این فایل بدین شرح است :

<?php
/**
* Gets class based on today's date and article date
* @param $date
* @return string containing CSS class name
*/
class MyFrontpageHelper {

   function MyFrontPageHelper() {
       parent::_constructor();
   }

   function getCSSClassFromDate($date) {
       $dateClass = ''; // default to blank
       // subtract create date from current date. both dates in seconds
       $elapsedDays = (time() - strtotime($date)) / 86400; // 86400=number of seconds per day
       if ($elapsedDays <= 7) $dateClass = 'dateCurrent';
       if (($elapsedDays > 7) && ($elapsedDays <= 14)) $dateClass = 'dateLastWeek';
       if ($elapsedDays > 14) $dateClass = "dateOld";

       return $dateClass;
   }
}
?>

کد بالا میگوید اگر متن ما عمری کمتر از 7 روز داشت، به آن کلاس "dateCurrent" اگر بین 7 تا 14 روز عمر داشت به آن کلاس "dateLastWeek" و اگر بیش از 14 روز سن داشت به آن کلاس "dateOld" اختصاص بده. طبیعتا شما میتوانید باتوجه به سرعت بروزشدن سایتتان، مقدار این بازه ها را کم و زیاد کنید.

حالا میخواهیم استایل مشخص شده را نمایش دهیم اما قبل از آن باید به نحوی به فایل default_items.php بفهمانیم که کجا را میخواهیم تغییر دهیم. اولا باید یک include جدید اضافه کنیم. (بعد از خط ...defined )

require_once('myfrontpagehelper.php');

اما کد کلاسها را کجا قرار دهیم؟ این بستگی به چیزی دارد که ما میخواهیم استایل دهی کنیم. مثلا ما میخواهیم استایل برای "عناوین" مطالب تعیین کنیم. خوب. حالا نیاز داریم تا کد زیر رو در فایلی که گفتیم وارد کنیم . در خط 11 وارد میکنیم:

<?php if ($canEdit ||  $this->item->params->get('show_title') ||  $this->item->params->get('show_pdf_icon') ||  $this->item->params->get('show_print_icon') ||  $this->item->params->get('show_email_icon')) : ?>
<table class="contentpaneopen <?php echo  MyFrontpageHelper::getCSSClassFromDate($this->item->created);  ?>">

در واقع ما بجای اضافه کردن پسوند کلاس صفحه، کلاس دلخواه خودمون رو از فایل myfrontpagehelper.php استخراج کردیم و اینجا قرار دادیم. حالا نیاز داریم تا کد css را در فایل css قالبمان وارد کنیم.

.contentpaneopen.dateCurrent {
   background: #F0FFFF;    
}

.contentpaneopen.dateLastWeek {
   background: #FFF8DC;    
}

.contentpaneopen.dateOld {
   background: #DCDCDC;
}

حالا تعدادی متن در بازه های زمانی که مشخص کردیم بسازید. یکی با تاریخ امروز، یکی با تاریخ بین 7 تا 14 روز قبل و یکی با تاریخ بیش از 14 روز قبل. نتیجه کار این میشه :

[ATTACH=CONFIG]406[/ATTACH]

ممکن است بخواهید بجای عنوان مطالب، "پس زمینه" مطالب را تغییر دهید. فقط کافیست بجای دو کد قبلی (که در خط 11 قالب نمونه قرار دادیم) کد زیر را قرار بدهیم. یعنی بجای اینکه استایلها را روی عنوان مطالب پیاده کنیم روی پس زمینه مطالب پیاده کنیم.

<?php echo $this->item->event->beforeDisplayContent; ?>
<table class="contentpaneopen <?php echo  MyFrontpageHelper::getCSSClassFromDate($this->item->created);  ?>">

نتیجه کار :

[ATTACH=CONFIG]405[/ATTACH]

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

امیدوارم ترجمه روانی ارائه داده باشم.

یاحق

Share this post


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

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

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

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

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


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

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

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


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