مكتبة الشروحات



 تصنيفات المكتبة





 جوال ديموفنف


اشترك الآن في موبايل ديموفنف واستمتع بعالم جديد من الخدمات المتميزة وبسعر رمزي تصلك رسائلنا على موبايلك أينما كنت . تفاصيل


 محول العملات


  • العملة
  • المبلغ بالدولار

نظام نقاط الهوك



ديموفنف توفر لك نظام إحترافي سلس للهوك بوينت ، حيث أن الهوك بوينت كتوضيح هي عباره عن مراكز نقاط يتم زرعها و توزيعها داخل ملفات الـ PHP سواء لديموفنف أو لبرمجيتك و التي تسمح من خلالها سواء لك أو للمبرمجين الأخرين من تنفيذه أكواد خاصة بهم و مناداتها في هذه النقاط ، و التي تتيح للمبرمج الفرصة وقتها في إضافة إضافاته البرمجية إلي البرنامج دون الاضطرار إلي تعديل ملف المصدر للملف الرئيسي ، هناك نقاط أساسية يجب فهمها عن نظام نقاط الهوك بديموفنف :

  • يتم حفظ نقاط الهوك في ملف xml حيث في ديموفنف يتواجد ملف نقاط الهوك في المسار include/xml بإسمhook_points.xml ، أما في البلجن فيتواجد ملف نقاط الهوك في المسار include/pluginfolder/xml/pluginfolder-hook_points.xml مع إستبدال pluginfolder بإسم مجلد البلجن.

(هام : يجب أن يتم حفظ ملف نقاط الهوك بنفس صياغ هذا الإسم في البلجنات)

CODE :
<?xml version="1.0" encoding="UTF-8"?>
<hooks>
// hook points groups	
	<hookmodule module="hookgroup">
		<hook>functionsglobal_start</hook>
		<hook>functionsglobal_end</hook>
	</hookmodule>
</hooks>

ملاحظات :

  • يتم تقسيم نقاط الهوك إلي مجموعات ، كل مجموعة تحتوي النقاط الخاصه بها.
  • الخاصية module في الوسم  hookmodule هو إسم مجموعة نقاط الهوك.
  • الوسم hook يحتوي علي إسم نقطة الهوك.

أساسيات :

      - زراعة نقطة هوك في مكان داخل ملف الـ PHP :

يمكنك زراعة نقطة إرتكاز في ملف الPHP في أي مكان تريده من الملف ، من أجل إتاحة إستدعاء هذه النقطة ، مع ملاحظة أنه يجب أن تكون هذه النقطة معرفة مسبقاً في ملف نقاط الهوك للبلجن و المجموعة المندرج تحتها هذه النقطة مستدعاة في بداية ملف الـ PHP  .

حيث يجب أولاً في بداية ملف الـPHP الموجود علي المسار الرئيسي لديموفنف ، وضع أسماء مجموعات نقاط الهوك المسموح بتنفيذ أي من نقاطها في هذا الملف ، و يتم ذلك عن طريق الإضافة إلي المصفوفة $Globalhookmodules

بالإضافة لها في بداية ملف الـPHP قبل إستدعاء أي ملف من مجلد include . 

مثال :

PHP :
{* php buffer start *} $Globalhookmodules[] = 'editor';
Then plant the hook focal point:
if (
$hook->hook_exist('hook_point'))
{
$hook->execute_hook('hook_point');

{* php buffer end *}

حيث أن الدالة $hook->hook_exist() تقوم بالتأكد إن كانت نقطة الهوك متاحة للإستدعاء أم لا (للتأكد أن النقطة مضافة لملف الـ XML لنقاط الهوك ، و أنه تم تعريف المجموعة الخاصة للإستدعاء)، ومن ثم في حال تم التأكد ، تقوم الدالة $hook->execute_hook() بتنفيذ النقطة و إستدعاء كل الدوال المرسله لها من البلجنات و تنفيذها.

ملاحظة : يمكن تمرير مصفوفة من البارميترز إلي الدوال المرسله من البلجنات إلي نقطة الهوك مع Reference من أجل, علي سبيل المثال, تعديل قيمة في متغير داخل ملف الـ PHP الرئيسي. 

مثال :

PHP :
{* php buffer start *} if ($hook->hook_exist('section_rss'))
{
$hook->execute_hook('section_rss', array(&$row));

{* php buffer end *}

      - إرسال دالة من البلجن إلي نقطة هوك :

من خلال البلجن الخاص بك ، تستطيع إرسال الكود الخاص بك إلي نقطة الهوك عن طريق وضع هذا الكود في دالة ، و من ثم إرسالها إلي نقطة الهوك بإستخدام دالة add_hook()

مثال :

في ملف دوال البلجن الموجود علي المسار include/plugins/pluginfolder/pluginfolder_plugin.php

مع ملاحظة إستبدال pluginfolder بـ إسم مجلد البلجن. 

ضع الكود الخاص بك الذي تريد إرساله داخل دالة ، و من ثم إستخدم الدالة add_hook() لإرساله إلي نقطة الهوك ، حيث أن هذه الدالة تقبل 3 متغيرات :

      -  المتغير الأول (إجباري) : وهو يحمل إسم نقطة الهوك الذي سترسل إليها الدالة.
      -  المتغير الثاني (إجباري) : إسم الدالة التي سترسل إلي نقطة الهوك.
      -  المتغير الثالث (إختياري) : ترتيب الهوك (لـ أولوية تنفيذه).

PHP :
{* php buffer start *} function function_name(&$vars){
// code
}
add_hook('hook_point','function_name');
add_hook('hook_point','function_name',2); 
{* php buffer end *}

 

ملاحظة : البارميتر $vars هو المرسل من مركز نقطة الهوك كـ Reference ، وهو ليس إجباري و يتوقف علي حسب إن كان إرتكاز نقطة الهوك يرسل باراميترز أم لا كما تم الإيضاح سابقاً.


هل كانت المقالة مفيدة ؟

أضفة للمفضلة أضفة للمفضلة    طباعة طباعة


Online