صفحة البداية arrow جوملا! arrow دروس جوملا! arrow عرض المحتوى بالتاريخ الهجري
Advertisement
كما وعدناكم .. نقدم إليكم النسخة العربية لنظام إدارة المحتوى جوملا! .. احصل عليها الآن
عرض المحتوى بالتاريخ الهجري طباعة ارسال لصديق
(3 أصوات)
بواسطة: ياسر كنانه   
2007/09/07
Joomla!
جوملا!
على الرغم من تلك المميزات التي اشتمل عليها نظام إدارة المحتوى جوملا!، إلا أنه وللأسف لا يدعم خاصية عرض المحتويات بالتاريخ الهجري، وفي هذا المقال سنتحدث عن طريقة بسيطة تمكننا من عرض محتوياتنا بالتاريخ الهجري كما يظهر في هذا الموقع. وأحب أن أشير إلى أننا في هذه الطريقة وبعد الإنتهاء من تطبيقها لن يتم دعمها أو استخدامها في لوحة التحكم، بل سيبقى التعامل مع التاريخ في لوحة التحكم كما هو باستخدام التاريخ الميلادي. وكل ما في الأمر هو أننا سنقوم باضافة وظيفة جديدة عن طريقها يتم معالجة التاريخ الميلادي وإرجاعه إلى ما يوافقه في التاريخ الهجري عند عرض أي محتوى في الواجهة الأمامية من الموقع.



عرض المحتوى بالتاريخ الهجري


قبل الشروع في العمل يجب الإنتباه إلى ما يلي:
 - أخذ نسخة احتياطية للموقع وقاعدة البيانات.
 - من المستحسن أن يكون التطبيق في البداية على السيرفر المحلي قبل تنفيذها على الموقع.
 - طريقة العمل سهلة جداً، ولكن يجب أن تكون لديك الخبرة في التعامل مع ملفات (PHP) قبل البدء في التنفيذ.



انتقل إلى المجلد الرئيسي الخاص بموقعك ومن داخل المجلد (includes) قم بتحرير الملف (joomla.php).

includes / joomla.php


في ملف (joomla.php) انتقل إلى السطر رقم 3761 أو ابحث عن الوظيفة التالية:

function mosFormatDate( $date, $format="", $offset=NULL ){
	global $mosConfig_offset;
	if ( $format == '' ) {
		// %Y-%m-%d %H:%M:%S
		$format = _DATE_FORMAT_LC;
	}
	if ( is_null($offset) ) {
		$offset = $mosConfig_offset;
	}
	if ( $date && ereg( "([0-9]{4})-([0-9]{2})-([0-9]{2})[ ]([0-9]{2}):([0-9]{2}):([0-9]{2})", $date, $regs ) ) {
		$date = mktime( $regs[4], $regs[5], $regs[6], $regs[2], $regs[3], $regs[1] );
		$date = $date > -1 ? strftime( $format, $date + ($offset*60*60) ) : '-';
	}
	return $date;
}


سنقوم بإضافة الكود أو الوظيفة التالية مباشرة بعد الكود السابق وهو الذي سيكون مسؤولاً عن إرجاع التاريخ الميلادي إلى الهجري، فقط انسخ الكود التالي وألصقه داخل الملف السابق:

function mosFormatDateHegira( $date, $format="", $offset=NULL ) {
	global $mosConfig_offset;
	if ( $format == '' ) {
		// %Y-%m-%d %H:%M:%S
		$format = _DATE_FORMAT_LC;
	}
	if ( is_null($offset) ) {
		$offset = $mosConfig_offset;
	}
	if ( $date && ereg( "([0-9]{4})-([0-9]{2})-([0-9]{2})[ ]([0-9]{2}):([0-9]{2}):([0-9]{2})", $date, $regs ) ) {
		$date = mktime( $regs[4], $regs[5], $regs[6], $regs[2], $regs[3], $regs[1] );
		$TDays=round($date/(60*60*24));
		$HYear=round($TDays/354.37419);
		$Remain=$TDays-($HYear*354.37419);
		$HMonths=round($Remain/29.531182);
		$HDays=$Remain-($HMonths*29.531182);
		$HYear=$HYear+1389;
		$HMonths=$HMonths+10;$HDays=$HDays+23;
		if ($HDays>29.531188 and round($HDays)!=30) {
			$HMonths=$HMonths+1;$HDays=Round($HDays-29.531182);
		}else{
			$HDays=Round($HDays);
		}
		if ($HMonths>12) {
			$HMonths=$HMonths-12;
			$HYear = $HYear+1;
		}
		$regs1 = "$HDays / $HMonths / $HYear ";
		$regs2 =  _JT_HEGIRA;
		$regs = $regs1 .''. $regs2;
		return($regs);
	}
	return $date;
}


احفظ ما قمت به من تعديلات على هذا الملف ومن ثم إغلاقه.

إلى هنا لن تجد أي تعديل في الموقع، لأن كل ما قمنا به هو إضافة الكود الخاص بمعالجة التاريخ ولكن دون أن نقوم بإضافة أي أمر لكي نستدعيه وللقيام بذلك انتقل للخطوة التالية.

اذهب للمجلد (components) ومن ثم انتقل إلى المجلد (com_content) وقم بتحرير الملف (content.html.php).

components / com_content / content.html.php


وفي داخل الملف (content.html.php):
    - انتقل إلى السطر رقم 823  (إذا كنت تستخدم الإصدار 1.0.13).
    - انتقل إلى السطر رقم 807  (إذا كنت تستخدم الإصدار 1.0.12).
أو ابحث عن الكود التالي:

	function CreateDate( &$row, &$params ) {
		$create_date = null;

		if ( intval( $row->created ) != 0 ) {
			$create_date = mosFormatDate( $row->created );
		}

		if ( $params->get( 'createdate' ) ) {
			?>
			<tr>
				<td valign="top" colspan="2" class="createdate">
					<?php echo $create_date; ?>
				</td>
			</tr>
			<?php
		}
	}


سنقوم الآن باستبدال الكود السابق بهذا الكود:

	function CreateDate( &$row, &$params ) {
		$create_date = null;

		if ( intval( $row->created ) != 0 ) {
			$create_date = mosFormatDateHegira( $row->created );
		}

		if ( $params->get( 'createdate' ) ) {
			?>
			<tr>
				<td valign="top" colspan="2" class="createdate">
					<?php echo $create_date; ?>
				</td>
			</tr>
			<?php
		}
	}


وللتوضيح فإن هذا الكود أو الوظيفة مسؤوولة عن عرض تاريخ كتابة المحتوى والذي يظهر عادة في أعلى المواضيع والمقالات التي نضيفها للموقع وكل ما قمنا به هو استبدال هذا السطر:

			$create_date = mosFormatDate( $row->created );


بالسطر التالي:

			$create_date = mosFormatDateHegira( $row->created );


حيث استبدلنا (mosFormatDate) بـ (mosFormatDateHegira) وهي الوظيفة التي ستكون مسؤولة عن معالجة التاريخه الميلادي وإرجاعه وعرضه بالتاريخ الهجري والتي قمنا باضافتها مسبقا في الخطوات السابقة.

الآن وفي نفس الملف السابق (content.html.php):
    - انتقل إلى السطر رقم 869  (إذا كنت تستخدم الإصدار 1.0.13).
    - انتقل إلى السطر رقم 853  (إذا كنت تستخدم الإصدار 1.0.12).
أو ابحث عن الكود التالي:

	function ModifiedDate( &$row, &$params ) {
		$mod_date = null;

		if ( intval( $row->modified ) != 0) {
			$mod_date = mosFormatDate( $row->modified );
		}

		if ( ( $mod_date != '' ) && $params->get( 'modifydate' ) ) {
			?>
			<tr>
				<td colspan="2" align="left" class="modifydate">
					<?php echo _LAST_UPDATED; ?> ( <?php echo $mod_date; ?> )
				</td>
			</tr>
			<?php
		}
	}


ومن ثم استبدله بالتالي:

	function ModifiedDate( &$row, &$params ) {
		$mod_date = null;

		if ( intval( $row->modified ) != 0) {
			$mod_date = mosFormatDateHegira( $row->modified );
		}

		if ( ( $mod_date != '' ) && $params->get( 'modifydate' ) ) {
			?>
			<tr>
				<td colspan="2" align="left" class="modifydate">
					<?php echo _LAST_UPDATED; ?> ( <?php echo $mod_date; ?> )
				</td>
			</tr>
			<?php
		}
	}


وفي هذا الكود قمنا باستبدال هذا السطر:

			$mod_date = mosFormatDate( $row->modified );


بما يلي:

			$mod_date = mosFormatDateHegira( $row->modified );


لأن الكود السابق مسؤوول عن عرض تاريخ تعديل أو تحرير المحتوى والذي يظهر عادة في أسفل المواضيع والمقالات التي نضيفها للموقع وكل ما قمنا به هو استبدال (mosFormatDate) بـ (mosFormatDateHegira) وهي الوظيفة التي ستكون مسؤولة عن معالجة التاريخه الميلادي وعرضه بالتاريخ الهجري.

انتهينا الآن من التعديل على هذا الملف وسنقوم بحفظ التعديلا التي أجريناها عليه ومن ثم إغلاقه لننتقل إلى الخطوة الأخيرة.

انتقل إلى المجلد الرئيسي الخاص بموقعك ومن داخل المجلد (language) قم بتحرير الملف (arabic.php).

language / arabic.php


وفي آخر هذا الملف وقبل السطر الذي يسبق هذه العلامة:

?>


سنقوم بإضافة هذا المتغير:

DEFINE('_JT_HEGIRA',' هـ');


لتصبح كالتالي:

DEFINE('_JT_HEGIRA',' هـ');
?>


عدد الزيارات: 5730
Add Comment التعليقات (0)
Trackback (0)
trackback feed

أضف تعليق
خاصية التعليقات متاحة للأعضاء المسجلين في الموقع فقط.

busy
 
< السابق   التالى >

تسجيل الدخول






هل فقدت كلمة المرور؟
ليس لديك حساب سجل الآن

لغة الموقع