PDA

مشاهدة نسخة كاملة : تعلم بناء صفحة جديدةفي الـvBulletin بتقنيات متطورة


HaMaDa4eVeR
05-01-2006, 12:46 PM
السلام عليكم

اليوم سوف ندرس سويا طريقة انشاء صفحة جديدة وتعزيز هذه الصفحة وتطويرها بقدر الامكان ولنستفد الاستفادة القصوى من امكانيات مكتبات الـvBulletin 3.5.x .

إنشاء الصفحة بابسط ما يكن
افتح ملف جديد وليكن اسمه mypage.php وليكن في نفس دليل منتداك ،،،
وضع هذا الكود بداخله واحفظ الملف:

<?php

// ######################## اعداد البئية العامة ###########################
error_reporting(E_ALL & ~E_NOTICE);

// ##################### تعريف الثوابت المهمة #######################
// تعريف اسم الملف بدون الحاق الامتداد الخاص به وذلك لكي تسهل عملية مناداته داخل المنتدى
// وليكن الاسم نفس اسم الملف

define('THIS_SCRIPT', 'mypage');

// #################### استدعاء القوالب والبييانات ######################
//مصفوفة القوال المستخدمة في هذا الملف
$globaltemplates = array(
// اسماء القوالب التي سوف يتم استدعاءها
'mypage_temp1',// اسم القالب الاول
'mypage_temp2',// اسم القالب الثاني
);



// ########################## الثوابت ############################
require_once('./global.php');

// #################### مسار كود الجافا سكريبت ########################
$headinclude = str_replace('clientscript', $vbulletin->options['bburl'] . '/clientscript', $headinclude);

// ################################################## ######################
// #########################بداية الكود الخاص بصفحتك ############################
// ################################################## ######################

$navbits = array();
// عنوان الصفحة في الشريط
$navbits[$parent] = 'صفحتي المتطورة';

$navbits = construct_navbits($navbits);
eval('$navbar = "' . fetch_template('navbar') . '";');// استدعاء قالب النافبار

// استدعاء قوالبك الخاصة والتي عرفتها بالاعلى
eval('print_output("' . fetch_template('mypage_temp1') . '");');
//################################################ ############################
// .:: s u d a b e s t . c o m ::.
//################################################ ############################
?>


انتهينا من الملف ق بحفظه.

الان نقم بإنشاء القوالب التي نريدها
ولتكن هذه محتويات قالب mypage_temp1:

$stylevar[htmldoctype]
<html dir="$stylevar[textdirection]" lang="$stylevar[languagecode]">
<head><meta http-equiv="Content-Type" content="text/html; charset=windows-1256">
$headinclude
<title>$vboptions[bbtitle]</title>
</head>
<body>

$header
$navbar

<table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%"

align="center">
<tr>
<td class="tcat">عنوان صفحتي المتطورة</td>
</tr>
<tr>
<td class="alt1">هنا ضع اي شي تريد قوله :)</td>
</tr>
</table>

$footer
</body>
</html>


انتهينا ، قم الان بطلب عنوان الملف mypage.php وانظر.
أضافة اسم الصفحة في المتواجدون الان
عندما تكن تنظر في المتواجدون الان بيظهر لك اسم المستخدم ومكان تواجده ، "مثلا : يقرا رسالة خاصة من "
الان اذا اتى زائر وفتح هذه الصفحة سوف يظهر لك مكان تواجده باسم "Unknown Location" او " غير معروف"
واليكم طريقة التعريف عبر الـPlugins أضف Plugins جديد و ضعه فيه الكود التالي :
Product: vBulletin
Hook Location: online_location_process
Title: My Custom Location (Part1)
Plugin PHP Code: if ($filename == 'mypage.php')
{
$userinfo['activity'] = 'test';
}
Plugin is Active: Yes
واحفظ
قم باضافة Plugin جديد مره اخرى وضع فيه الكود التالي :
Product: vBulletin
Hook Location: online_location_unknown
Title: My Custom Location (Part2)
Plugin PHP Code: if ($userinfo['activity'] == 'mypage')
{
$userinfo['action'] = 'يشاهد صفحتي المتطورة'; /
$userinfo['where'] = '<a href="./test.php?' . $vbulletin->session->vars['sessionurl'] . '">هذه صفحتي المتطورة</a>';
$handled = true;
}
Plugin is Active: Yes
قم بالحفظ
( هنالك طريقة اخرى عبر الملفات ومعقدة نوعا ماء كنت استخدمها قبل 3.5 )
انتهينا بحمد الله من تعريف اماكن التواجد.

اعطاء صلاحيات المشاهدة لصفحتي

هنالك طريقتين لعمل تحديد الصلاحيات بالنسبة للمجموعات وكلاهما يعتمدان على الشرط المنطقي " IF" ،، وسوف نستخدم اسهل الطرق .

1- الطريقة الاولى عبر القوالب
2- عبر الملف البرمجي

في قالبك ضع هذا الشرط في المكان المناسب واحبذ بعد متغير الـ$navbar ، هذا الكةد يقم بعرض الصفحة اذا كان المستخدم ينتمي الى المجموعة رقم 6 ( وهي في العادة مجموعة المشرف العام)


<if condition="is_member_of($bbuserinfo, 6)">
اذا كان المستخدم ينتمي للمجموعة 6
<else />
اعرض هذا
</if>
1
لناخد مثال آخر ،،، اذا كنت تريد عرض الصفحة للاعضاء فقط
<if condition="!$bbuserinfo['userid']">

طريقة استخدام المتغيرات في القوالب
1- المتغيرات العادية ، مثل $sudabest , $var1،، يمكنك استخدامها بكل يسر.
2- متغيرات المصفوفات مثل $sudabest[hosting] ،، ولا تستخدم ابدا علامات الاقتباس المفردة او الزوجية، والا سوف يظهر لك خطا.
3- متغيرات الكائنات او الاوبجيكت ،{$sudabest->host['package']} ، تذكر الازواج من هذا النوع {} في البداية والنهاية

* لاسباب امنية لا تستخدم ابدا مصفوفات الـ$_POST[], $_GET[], $_REQUEST حاول ا تتجنبها في قوالبك.

إستخدام العبارات الشرطية

كل قوالب الاصدار الثالث تدعم استخدام العبارة الشرطية IF في قوالبها
مثلا:-
<if condition="$somevbulletinvar">
htmlcode
<else />
other html code
</if>

انتبه لا يمكنك ان تستخدم عبارة else if في القوالب واذا كنت بحوجة الى استخدامها عليك بهذه الطريقة

<if condition="$condition1">
htmlcode
<else />
<if condition="$condition2">
more html code
</if>
</if>

وهكذا ........

أنشاء رسالة خطا
لانشاء رسالة خطا خاصة بك ينبغي ان تراعي :-
1- انشاء عبارة جديدة في Front-End Error Messages
2- يجب ان يكن اسم المتغير لهذه العبارة ان يبدا بي "error_"
3- يجب ان تضع الدالة هذه في الملف البرمجي:
eval(standard_error(fetch_error('error_mypagephras e')));
وتاكد من تطابق متغير العبارة الذي عرفته مع error_mypagephrase

انشاء رسائل اعادة التوجيه
لإنشاء رسالة اعادة توجيه خاصة يجب ان تراعي :-
1- تاكد بانه لايوجد نتيجة استعلام او اية نتيجة اخرى قبل هذه اعادة التوجيه.
2- تعريف مسار صفحة اعادة التوجيه ، مثلا:-
$vbulletin->url = "mypage.php" . $vbulletin->session->vars['sessionurl'] ."somevar=someval";
3- تذكر باننا نستخدم دائما الاسم mypage.php .
4- لاتنسى ان تستبدل الـsomevar=someval باسماء متغيراتك الخاصة التي تريد تمريرها للصفحة القادمة هذه.

الان علينا بالقيام بإضافة عبارات رسالة اعادة التوجيه :-
1- قم بإنشاء عبارة في مجموعة "Front-End Redirect Messages" ، ويجب ان تبدا بـ"redirect_" .
2- اضف الكود التالي :-
eval(print_standard_redirect('redirect_myphrase', true, true));
في المكان الذي تريد فيه رسالة اعادة التوجيه.

بحمد الله وصلنا لنهاية هذا الدرس ، واتمنى اكن قد أفدتكم

تحياتي القلبية لكم بالتوفيق
27-12-2005 الساعة الثامنة وربع بتوقيت الخرطوم :)
--------------------------------------------------------------------------------------------------------

الحاج متولى
05-01-2006, 02:05 PM
حقيقة شرح رائع
وهذا الامر اضافة حقيقية للمنتديات من هذا النوع
وشكرا على الشرح اخى حمادة
وانت هكذا دوماً كما تعودنا
رائع بكل المواصفات

Ali Hamad
05-01-2006, 02:16 PM
السلام عليكم :

رائع جدا ، شكرا لك على مساعدتك اخوانك ومشاركتهم افكارك ،

علي حمد !

HaMaDa4eVeR
07-01-2006, 02:34 PM
لكم اجزل الشكر والتقدير لمروركم الكريم
واذا في اي استفسار انا جاهز
والسلام عليكم

JSRhost.com
07-01-2006, 09:12 PM
ما شاء الله عليك ..

بطل .. يعطيك الف عافية ,,