المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : آلية المتغيرات الخاصة القوالب في ملفات php/ الخطاطيف للجيل الرابع


MIDO-EGYPT
2009-11-24, 05:04 PM
آلية المتغيرات الخاصة القوالب في ملفات php/ الخطاطيف للجيل الرابع

السلام عليكم ورحمة الله وبركاته ،،

في البداية ، أبارك لكم صدور النسخه في مستواها التطويري الثالث لكافة الأعضاء ، سابقاً تحدثنا عن آلية المتغيرات في القوالب وما الجديد فيها من جمل شرطية والخ من ذلك ، على هذا الرابط (http://bit.ly/vBulletin4vars)

ما سأتحدث عنه هو قسم واحد فقط وهو القوالب وإضافتها بنظامها الجديد ولن أتطرق لباقي الأشياء في هذا الموضوع ، ربما ساذكرها لاحقاً في مواضيع منفصله ان شاء الله ، وسوف أناقش التالي :-



آليه كاش القوالب مع تغير المتغير في هذا الجيل .
أليه انشاء القوالب لعرضها بدون استخدام الداله eval (http://php.net/manual/en/function.eval.php)
كيفية انشاء المتغير لكي يعرض في القوالب بشكل سليم وخالي من المشاكل. أو بالاصح طباعه الصفحه بالكامل
أليه كاش القوالب :-

سابقاً كنا نستخدم الخطاف (Hook) - التالي cache_templates لعمل كاش للقوالب ، اي انه يتم استدعاء القوالب المخصصه لمنتجاتنا بدون ان نزيد استعلام . وايضاً لم يتغير اسم القالب في الجيل الجديد ، ولكن تغيرت الآليه .

سابقاً كـ التالي :-


$globaltemplates = array_merge($globaltemplates, array(
'my_template_name',
'my_template_name1',
'my_template_name2'
));


او كـ التالي :-


$globaltemplates[] = 'my_template_name';
$globaltemplates[] = 'my_template_name1';
$globaltemplates[] = 'my_template_name1';


ولكن في الجيل الجديد ، تغيرت الآليه مع وجود نفس الخطاف السابق ، اصبحت كـ التالي :-


$cache = array_merge($cache, array(
'my_template_name',
'my_template_name1',
'my_template_name2'
));


أو

$cache[] = 'my_template_name';
$cache[] = 'my_template_name1';
$cache[] = 'my_template_name1';


بالنسبه لكاش القوالب ليس بالأمر الكبيرة / ولكنه مهم فأحببت ان اسهل العمل على اخواني ووقت البحث عن الآليه الجديدة :)

سننتقل لما هو مهم الآن وهو القوالب وكيفية استخدامها :-

سابقاً عندما نريد تعريف متغير يحتوي على قيمة قالب من قوالب المنتدى كنا نضعه في دالة eval مع عرض القالب بأستخدام fetch_template ولكن الآن تغيرت الآليه بشكل اراها أنا افضل بكثير عن سابقتها :-

ساذكر الفروقات على شكل أمثله بالمقارنه بين الجيلين ليكون الأمر اسهل


1- قالب عادي جداً يحتوي على أكواد هتمل نريد عرضها في متغير

سابقاً

eval('$myvar = "' . fetch_template('my_custom_template') . '";');


ونستخدم $myvar لعرض المحتوى على حسب الرغبه من اضافته في القوالب او دمجه او او او

ولكن هنا الآن اصبح كـ التالي : -


$myvar = vB_Template::create('my_custom_template')->render();


وهنا لم ننتهي ، حيث نستطيع استخدام $myvar في القوالب ولكن يُحبث ان نقوم بتعريفه كـ متغير كما ذكرناه في الموضوع السابق لكي يُعرض في القوالب . وساذكرها لاحقاً في نص هذا الموضوع ان شاء الله

2- تعريف القالب في متغيرات مخصصه لاستخدامات الـ loop او while او foreach .. الخ

سابقاً كنا نعرض مانريده من بيانات في داله تكرار ، بحسب البيانات وهنا ساذكر فقط while لتعدد اسخدماها واسهلها ان شاء الله :)

فلنقل ان عندنا بيانات جلبناها من قاعدة البيانات ، ونريد عرض النتائج بشكل متوالي :-

القالب (my_custom_template):-

<div> $myresult[name], $myresult[email], $myresult[joindate] </div>

سابقاً : كنا نكتب التالي لتكرار البيانات :-


while($myresult = $vbulletin->db->fetch_array($myquery)) {
eval('$myvar .= "' . fetch_template('my_custom_template') . '";');
}


ونستخدم $myvar لعرض البيانات في القوالب بكل بساطه !

ولكن في الجيل الرابع :-

القالب :-

<div> {vb:raw myresult.name}, {vb:raw myresult.email}, {vb:raw myresult.joindate} </div>[/HTML][PHP]while($myresult = $vbulletin->db->fetch_array($myquery)) {
$templater = vB_Template::create('my_custom_template');
$templater->register('myresult', $myresult);
$myvar .= $templater->render();
}

ونستطيع استخدام $myvar ولكن نحتاج لكي نمررها على داله ، لكي تصبح جاهزة للعرض بالآليه الجديدة .

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

سابقاً ، نستخدم داله eval متظمنه لدالة الفيبولتن print_output على الشكل التالي :-

eval('print_output("' . fetch_template('my_final_custom_template') . '");');


ولكن الآن الطريقة كـ التالي :- وهي تعريف المتغيرات السابقه كـ $myvar لعرضها والخ من تلك الأمور ، وتكون الطريقة كـ التالي :-

$templater = vB_Template::create('my_final_custom_template');
$templater->register_page_templates();// setup header, footer, headinclude.
$templater->register('myvar', $myvar);// my result from my loop.
print_output($templater->render());


وإلى هنا اعتقد اني انهيت قسم القوالب ، وذكر ما تم تغييرة ، واي استفسار انا حاظر ،

يُسمح بنقل الموضوع بشرط ذكر المصدر "آلية المتغيرات الخاصة القوالب في ملفات php/ الخطاطيف للجيل الرابع (http://www.almotmaiz.net/vb/28813-%D8%A2%D9%84%D9%8A%D8%A9-%D8%A7%D9%84%D9%85%D8%AA%D8%BA%D9%8A%D8%B1%D8%A7%D 8%AA-%D8%A7%D9%84%D8%AE%D8%A7%D8%B5%D8%A9-%D8%A7%D9%84%D9%82%D9%88%D8%A7%D9%84%D8%A8-%D9%81%D9%8A-%D9%85%D9%84%D9%81%D8%A7%D8%AA-php-%D8%A7%D9%84%D8%AE%D8%B7%D8%A7%D8%B7%D9%8A%D9%81-%D9%84%D9%84%D8%AC%D9%8A%D9%84-%D8%A7%D9%84%D8%B1%D8%A7%D8%A8%D8%B9/)" ، واذا كنت من مستخدمين تويتر ، قم بالضغط هنا لكي يتم تحديث حالتك لنشر المعلومه قدر المستطاع (http://twitter.com/home?status=%D8%A2%D9%84%D9%8A%D8%A9+%D8%A7%D9%84% D9%85%D8%AA%D8%BA%D9%8A%D8%B1%D8%A7%D8%AA+%D8%A7%D 9%84%D8%AE%D8%A7%D8%B5%D8%A9+%D8%A7%D9%84%D9%82%D9 %88%D8%A7%D9%84%D8%A8+%D9%81%D9%8A+%D9%85%D9%84%D9 %81%D8%A7%D8%AA+php%2F+%D8%A7%D9%84%D8%AE%D8%B7%D8 %A7%D8%B7%D9%8A%D9%81+%D9%84%D9%84%D8%AC%D9%8A%D9% 84+%D8%A7%D9%84%D8%B1%D8%A7%D8%A8%D8%B9+http%3A%2F %2Fbit.ly%2FvBulletin4var+%28via+%40alz3abi%29)

أطيب وارق تحية ،
منقول من أخوكم / الزعابي