منتدى دعم PBBoard الرسمي
(نسخة قابلة للطباعة من الموضوع)
https://pbboard.info/forums/t2539
أنقر هنا لمشاهدة الموضوع بهيئته الأصلية

برمجة هاك وتركيبه عن طريق الأضافات البرمجية
Soliman 02-10-2010 04:03 مساءً
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته،،


:: نظام الأضافات البرمجية (Addons) في منتديات PBBoard ::
هو نظام من خلاله يتمكن المبرمجين والمطورين من برمجة اضافة برمجية (هاك) تكتب بداخل بملف من نوع XML يتم تركيبها بشكل بسيط وسهل من خلال لوحة إدارة منتديات pbboard عن طريق استيراد اضافة برمجية وبنقرة زر واحدة يتم من خلالها التركيب حيث يتم تعديل واضافة القوالب وتنفيذ الاستعلامات في قاعدة البيانات بشكل تلقائي . يتم التحكم بالأضافة البرمجية من بند التحكم بالإضافات البرمجية حيث يتم عرض كافة الأضافات البرمجية التي تم تركيبها ويتاح لك عدة خيارات بجانب كل اضافة تتتمثل بالتحرير والتعطيل والتفعيل والحذف والتصدير ..

 شرح طريق بناء وكتابة اضافة برمجية (Addons) لمنتديات PBBoard:
لكتابة اضافة برمجية تحتاج إلى خبرة جيدة في لغة تصميم الصفحات HTML ولغة الاستعلامات في قواعد البيانات SQL

الخطوة الأولى وهي التعرف كافة العناصر والأكواد التي يمكن استخدامها في ملف الـ xml الخاص بالأضافة البرمجية لمنتديات pbboard وماعمل كل منها :

السطر الأول اول عنصرتعريفي ثابت يتم كتابته في بداية اول سطر بداخل ملف الـ XML
CODE
<?xml version="1.0" encoding="UTF-8"?>


السطر الثاني العنصر plugin name وهو تعريف اسم الأضافة البرمجية وسنسميها على سبيل المثال Addons_Name
CODE
<plugin name="Addons_Name">


السطر الثالث العنصر version وهو رقم الإصدار الخاص بالأضافة البرمجية وسيكون مثلاً 1.0
CODE
<version>1.0</version>


السطر الرابع العنصر description وهو وصف مختصر للأضافة البرمجية وسيكون على سبيل المثال Addons Description MOD
CODE
<description>Addons Description MOD</description>


السطر الخامس العنصر author وهو اسم كاتب او مبرمج الأضافة البرمجية وسيكون على سبيل المثال Suliman
CODE
<author>Suliman</author>


السطر السادس العنصر url وهو رابط موقع مبرمج الأضافة وسيكون على سبيل المثال pbboard.info
CODE
 <url>pbboad.info</url>


الآن ندخل في المرحلة البرمجية :
العنصر installcode كود التثبيت وهو خاص بتنفيذ ادخال اوامر او استعلامات في قاعدة بيانات المنتدى يتم كتابة الأستعلامات بالطريقة المتبعة في نظام منتدى الـ pbboard وليس بشكلها الأساسي وعلى سبيل المثال نريد انشاء حقل جديد اسمه user_mood في جدول الأعضاء member فسيكون الأستعلام بهذا الشكل :
CODE

<installcode><![CDATA[$PowerBB->DB->sql_query("ALTER TABLE " . $PowerBB->table['member'] . " ADD user_mood VARCHAR( 250 ) NULL DEFAULT NULL");]]></installcode>

يمكن ايضاً اضافة العديد من الأستعلامات في عنصر installcode واحد
وفي حال لايوجد اي استعلامات للأضافة البرمجية فلا يتم كتابته او يتم ترك هذا العنصر فارغ بالشكل التالي:
CODE
<installcode><![CDATA[]]></installcode>

او لاتتم كتابتة

العنصر السابع uninstallcode كود الغاء التثبيت وهو خاص بحذف الاوامر والاستعلامات التي تم ادخالها في قاعدة بيانات المنتدى ويتم تنفيذة عن النقرعلى حذف الأضافة البرمجية
يتم كتابة الأستعلامات بالطريقة المتبعة في نظام منتدى الـ pbboard وليس بشكلها الأساسي وعلى سبيل المثال نريد حذف الاستعلام السابق في العنصر installcode فسيكون الاستعلام بهذا الشكل :
CODE
 <uninstallcode><![CDATA[$PowerBB->DB->sql_query('ALTER TABLE ' . $PowerBB->table['member'] . " DROP user_mood");]]></uninstallcode> 


يمكن ايضاً اضافة العديد من استعلامات الحذف في عنصر uninstallcode واحد
وفي حال لايوجد اي من استعلامات حذف للأضافة البرمجية يتم ترك هذا العنصر فارغ بالشكل التالي :
CODE
<uninstallcode><![CDATA[]]></uninstallcode>

او لاتتم كتابتة

التعديل على قوالب المنتدى
العنصر الثامن : templates وهو عنصر بداية تعديلات قوالب الأستايلات ويحتوي على العديد من عناصر template بداخله ويكون بالشكل التالي :
CODE
<templates>

واسفله يتم البدأ بالتحكم بالقوالب وتتمثل في 4 خيارات وهي :
الخيار الأول - اضافة قالب جديد وسنسمية new_template.tpl ويتم كتابة كلمة new لقيمة الـ type وتكون كتابة العناصر لأضافة قالب جديد بالشكل التالي :
CODE
<template name="new_template.tpl" type="new">

اسفله مباشرة سيكون عنصر text وسيكون بداخله محتوى القالب الجديد وسنضع كلمة TestongText
CODE
<text><![CDATA[TestongText]]></text>

يكتب المحتوى بداخل
CODE
<![CDATA[TestongText]]

بعد انتهاء من كتابة عنصر الـ text يتم اغلاق عنصر template
CODE
</template>


الخيار الثاني - وهو ( ابحث واضف بعده) ويتم كتابة كلمة after لقيمة الـ type وتكون كتابة العناصر للتعديل على القالب بالشكل التالي :
CODE
<template name="name_template.tpl" type="after ">

اسفله مباشرة سيكون عنصرابحث عن ( find )حيث تكتب كلمة او جملة البحث ولا بد ان تكون جملة البحث فريدة ووحيدة وغير متكررة في القالب المراد التعديل عليه .. وسنضع على سبيل المثال <!-- action_find_addons_2 -->
CODE
<find><![CDATA[<!-- action_find_addons_2 -->]]></find>

اسفله مباشرة يتم كتابه عنصر action المختص باضافة النص الجديد اسفل كلمة البحث التي تم ادخالها في عنصر find وسنضع كلمة pbboard.info
CODE
<action><![CDATA[pbboard.info]]></action>

بعد انتهاء من كتابة عنصر الـ action يتم اغلاق عنصر template
CODE
</template>


الخيار الثالث : وهو( ابحث عن واضف فوقه ) ويتم كتابة كلمة before لقيمة الـ type تكون كتابة العناصر للتعديل على القالب بالشكل التالي :
CODE
<template name="name_template.tpl" type="before ">

اسفله مباشرة سيكون عنصرابحث عن ( find )حيث تكتب كلمة او جملة البحث ولا بد ان تكون جملة البحث فريدة ووحيدة وغير متكررة في القالب المراد التعديل عليه .. وسنضع على سبيل المثال <!-- action_find_addons_2 -->
CODE
<find><![CDATA[<!-- action_find_addons_2 -->]]></find>

اسفله مباشرة يتم كتابه عنصر action المختص باضافة النص الجديد فوق كلمة البحث التي تم ادخالها في عنصر find وسنضع كلمة pbboard.info
CODE
<action><![CDATA[pbboard.info]]></action>

بعد انتهاء من كتابة عنصر الـ action يتم اغلاق عنصر template
CODE
</template>


الخيار الرابع : وهو( ابحث عن واستبدله بـ ) ويتم كتابة كلمة replace لقيمة الـ type تكون كتابة العناصر للتعديل على القالب بالشكل التالي :
CODE
<template name="name_template.tpl" type="replace">

اسفله مباشرة سيكون عنصرابحث عن ( find )حيث تكتب كلمة او جملة البحث ولا بد ان تكون جملة البحث فريدة ووحيدة وغير متكررة في القالب المراد التعديل عليه .. وسنضع على سبيل المثال <!-- action_find_addons_2 -->
CODE
<find><![CDATA[<!-- action_find_addons_2 -->]]></find>

اسفله مباشرة يتم كتابه عنصر action المختص باستبدال جملة البحث بالنص الجديد التي تم ادخالها في عنصر find وسنضع كلمة pbboard.info
CODE
<action><![CDATA[pbboard.info]]></action>

بعد انتهاء من كتابة عنصر الـ action يتم اغلاق عنصر template
CODE
</template>


هذه هي الخيارات الـ 4 لربما لاتحتاجها جميعها لكن لابد من شرح وأخذ العلم بها للتوسع ..
بعد الأنتهاء من كتابة كافة تعديلات او اضافة القوالب يتم اغلاق وسم الـ templates
CODE
</templates>


التعديل على قوالب لوحة الإدارة
العنصر التاسع : admin_templates وهو عنصر بداية تعديلات قوالب لوحة الإدارة ويحتوي على العديد من عناصر template بداخله ويكون بالشكل التالي :
CODE
<admin_templates>

واسفله يتم البدأ بالتحكم بالقوالب وتتمثل في 4 خيارات وهي :
الخيار الأول - اضافة قالب جديد وسنسمية new_template.tpl ويتم كتابة كلمة new لقيمة الـ type وتكون كتابة العناصر لأضافة قالب جديد بالشكل التالي :
CODE
<template name="new_template.tpl" type="new">

اسفله مباشرة سيكون عنصر text وسيكون بداخله محتوى القالب الجديد وسنضع كلمة TestongText
CODE
<text><![CDATA[TestongText]]></text>

يكتب المحتوى بداخل
CODE
<![CDATA[TestongText]]

بعد انتهاء من كتابة عنصر الـ text يتم اغلاق عنصر template
CODE
</template>


الخيار الثاني - وهو ( ابحث واضف بعده) ويتم كتابة كلمة after لقيمة الـ type وتكون كتابة العناصر للتعديل على القالب بالشكل التالي :
CODE
<template name="name_template.tpl" type="after ">

اسفله مباشرة سيكون عنصرابحث عن ( find )حيث تكتب كلمة او جملة البحث ولا بد ان تكون جملة البحث فريدة ووحيدة وغير متكررة في القالب المراد التعديل عليه .. وسنضع على سبيل المثال <!-- action_find_addons_2 -->
CODE
<find><![CDATA[<!-- action_find_addons_2 -->]]></find>

اسفله مباشرة يتم كتابه عنصر action المختص باضافة النص الجديد اسفل كلمة البحث التي تم ادخالها في عنصر find وسنضع كلمة pbboard.info
CODE
<action><![CDATA[pbboard.info]]></action>

بعد انتهاء من كتابة عنصر الـ action يتم اغلاق عنصر template
CODE
</template>


الخيار الثالث : وهو( ابحث عن واضف فوقه ) ويتم كتابة كلمة before لقيمة الـ type تكون كتابة العناصر للتعديل على القالب بالشكل التالي :
CODE
<template name="name_template.tpl" type="before ">

اسفله مباشرة سيكون عنصرابحث عن ( find )حيث تكتب كلمة او جملة البحث ولا بد ان تكون جملة البحث فريدة ووحيدة وغير متكررة في القالب المراد التعديل عليه .. وسنضع على سبيل المثال <!-- action_find_addons_2 -->
CODE
<find><![CDATA[<!-- action_find_addons_2 -->]]></find>

اسفله مباشرة يتم كتابه عنصر action المختص باضافة النص الجديد فوق كلمة البحث التي تم ادخالها في عنصر find وسنضع كلمة pbboard.info
CODE
<action><![CDATA[pbboard.info]]></action>

بعد انتهاء من كتابة عنصر الـ action يتم اغلاق عنصر template
CODE
</template>


الخيار الرابع : وهو( ابحث عن واستبدله بـ ) ويتم كتابة كلمة replace لقيمة الـ type تكون كتابة العناصر للتعديل على القالب بالشكل التالي :
CODE
<template name="name_template.tpl" type="replace">

اسفله مباشرة سيكون عنصرابحث عن ( find )حيث تكتب كلمة او جملة البحث ولا بد ان تكون جملة البحث فريدة ووحيدة وغير متكررة في القالب المراد التعديل عليه .. وسنضع على سبيل المثال <!-- action_find_addons_2 -->
CODE
<find><![CDATA[<!-- action_find_addons_2 -->]]></find>

اسفله مباشرة يتم كتابه عنصر action المختص باستبدال جملة البحث بالنص الجديد التي تم ادخالها في عنصر find وسنضع كلمة pbboard.info
CODE
<action><![CDATA[pbboard.info]]></action>

بعد انتهاء من كتابة عنصر الـ action يتم اغلاق عنصر template
CODE
</template>


هذه هي الخيارات الـ 4 لربما لاتحتاجها جميعها لكن لابد من شرح وأخذ العلم بها للتوسع ..
بعد الأنتهاء من كتابة كافة تعديلات او اضافة القوالب يتم اغلاق وسم الـ admin_templates
CODE
</admin_templates>



واخيراً في النهاية يتم اغلاق عنصر plugin name الذي تمت كتابتة في السطر الثاني في الأعلى بهذا الشكل
CODE
</plugin>



ارجو ان يكون الشرح خفيف وواضح لم اتعمق كثيراً وحاولت باقصى حد ان ابسط الشرح .

 إستخدام تعدد اللغات في الأضافة البرمجية
مثال لكتابة مفردات اللغة في ملف اللغة العربية والإنجليزية :
وبالقوالب نستخدم لتعريف متغير اللغة
CODE
{$lang['addons']['test']}

_____________________________________________
واضافات اللغة للجيل الثالث تكون بهذا الشكل :
CODE


<phrases>

<phrase varname="متغير العبارة" fieldname="admincp">العبارة</phrase>

<phrase varname="متغير العبارة" fieldname="forum">العبارة</phrase>

</phrases>


مثال لعبارة تظهر في صفحات المنتدى
CODE


<phrase varname="forums_sec" fieldname="forum">اقسام المنتدى</phrase>


مثال لعبارة تظهر في صفحات لوحة الادارة
CODE


<phrase varname="show_urls" fieldname="admincp">مشاهدة الروابط</phrase>




وبالقوالب نستخدم لتعريف متغير اللغة
CODE
{$lang['show_urls']}

أو
CODE


<?php echo $PowerBB->_CONF['template']['_CONF']['lang']['show_urls'];?>



-----------------------
الـ HOOKS  الخطاطيف وهي اماكن ومواقع ثابته موزعه في اهم القوالب والملفات لعرض الأكواد البرمجية للهاكات
حيث main_place و place يضاف بهما اسم المكان المطلوب عرض الكود به
مثال للأستخدام
CODE


<hooks>

<hook main_place="header" place="header"><![CDATA[ header ]]> </hook>

<hook main_place="main_bar_2" place="main_bar_2"><![CDATA[main_bar_2]]> </hook>

<hook main_place="main_bar_1" place="main_bar_1"><![CDATA[main_bar_1]]> </hook>

<hook main_place="footer_top" place="footer_top"><![CDATA[footer_top]]> </hook>

<hook main_place="footer_bottom" place="footer_bottom"><![CDATA[footer_bottom]]> </hook>

<hook main_place="menu_cp" place="menu_cp"><![CDATA[menu_cp]]> </hook>

<hook main_place="options_main" place="options_main"><![CDATA[options_main]]> </hook>

<hook main_place="options_mods_1" place="options_mods_1"><![CDATA[options_mods_1]]> </hook>

<hook main_place="options_mods_2" place="options_mods_2"><![CDATA[options_mods_2]]> </hook>

<hook main_place="writer_info_top" place="writer_info_top"><![CDATA[writer_info_top]]> </hook>

<hook main_place="writer_info_down" place="writer_info_down"><![CDATA[writer_info_down]]> </hook>

</hooks>




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


أمثلة لأضافات برمجية جاهزة للتركيب لأصدارات الجيل الثالث تجدها في قسم
الملحقات البرمجية PBB 3.x.x


دمتم بخير ..
منتدى دعم PBBoard الرسمي

Copyright © 2009-2024 PBBoard® Solutions. All Rights Reserved