PDA

مشاهدة نسخة كاملة : برمجة بلوك باستخدام نظام نماذج انفنتي


ديموفنف
20-03-2007, 01:42 AM
لعمل بلوك يقوم باستخدام نظام نماذج انفنتي سنقوم بعمل بلوك كمثال ويمكن القياس عليه واستخدامه في أكثر من تخصص (اخبار , مقالات , بطاقات , صوتيات ... الخ )

المثال هنا سيكون بلوك لأكثر الأخبار مشاهدةً
سنبدأ بعمل الأكواد بفتح ملف جديد وتسميته
block-topnewsviews.php

نبدأ بوسم php كأول سطر :
<?php

بعد ذلك سنضع شرطا للملف بأن لا يتم تشغيله إلا عندما يقوم الزائر بالدخول لقسم الأخبار :
if(THIS_SCRIPT=="news"){

ثم نضع بعد ذلك الكود الخاص بالاستعلام من جدول الأخبار :
$result=$DB->query("SELECT id,caption FROM newsm ORDER BY views DESC LIMIT 10");
if($DB->num_rows($result)>0){
آخر سطر بالكود السابق هو أنه في حالة وجود أي عدد من الأخبار أي اكبر من صفر قم بعمل التالي :
قم بتشغيل مربع بلوك جديد والذي سنأتي له لاحقاً بالتعريف بعد أن قمنا بتجهيزه والذي اسمه extrablocks :
$tpl->newBlock("extrablocks");
سنقوم بعد ذلك بتعيين قيمة عنوان الجدول لكي يتم عرضها برأس الجدول والذي قمنا بتعيينه سابقا باسم extrablockname :
$tpl->assign("extrablockname","أكثر الأخبار مشاهدة");
بعد ذلك سنقوم بعمل بحث لكل سجل بالجدول وأخذ المتغيرات منه لكل دورة :
while($row=$DB->fetch_array($result)){
سنقوم الآن بفتح صف جدول بطريقة نماذج انفنتي بالطريقة التالية :
$tpl->newBlock("extrablock");

سنقوم بتعيين قيمة عنوان الخبر ورقمه داخل الصف بالطريقة التالية :
$tpl->assign("action","news.php?action=show&id=".$row[id]);
$tpl->assign("caption",unclean($row[caption]));

نقوم الآن بإغلاق الوسوم التي فتحناها بالكود
}
}
}
?>

سيصبح الكود كاملا الآن بهذا الشكل :

<?php
if(THIS_SCRIPT=="news"){
$result=$DB->query("SELECT id,caption FROM newsm ORDER BY views DESC LIMIT 10");
if($DB->num_rows($result)>0){
$tpl->newBlock("extrablocks");
$tpl->assign("extrablockname","أكثر الأخبار مشاهدة");
while($row=$DB->fetch_array($result)){
$tpl->newBlock("extrablock");
$tpl->assign("action","news.php?action=show&id=".$row[id]);
$tpl->assign("caption",unclean($row[caption]));
}
}
}
?>

نأتي الآن لكود للنماذج :

ابحث في نموذج rcontent عن السطر التالي :

<!-- START BLOCK : online -->


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

<!-- START BLOCK : extrablocks -->
<table align="center" border="1" cellpadding="3" cellspacing="0" class="dcitbi" bordercolor="#B2B2B2" width="150" height="40">
<td align=right class="dcitbbt">{extrablockname}
<img border="0" src="{img_dir}/arroww.gif">&nbsp;&nbsp;&nbsp;
</td>
<!-- START BLOCK : extrablock -->
<tr>
<td class=tdnav align=center height=20>
<a href="{action}">{caption}</a>
</td>
</tr>
<!-- END BLOCK : extrablock -->
</table>
<br>
<!-- END BLOCK : extrablocks -->


ملاحظة : يمكنك استخدام كود النموذج السابق لعدة بلوكات مختلفة وذلك بتعيين القيم المختلفة عن طريق كود الـ php

ديموفنف
20-03-2007, 02:53 AM
أول شخص غير مبرمج وأتوقع ان يقوم بعمل البلوك وعدة بلوكات مختلفة بسهولة هو ala ;)
فهل يخيب توقعي :rolleyes: .... سنرى

سبق
20-03-2007, 07:18 PM
والله هاذي هي الورطة :D :D

أول شيء أشكر لك ثقتك فيني وإن شاء الله ما أخيب ظنك :( :(

الطريقة مبدئياً سهلة بإذن الله ..

لكن ما قلت لنا وين نرفع ملف block-topnewsviews :rolleyes: :rolleyes: :rolleyes:

عندي كم فكرة ودي أطبقها وبإذن الله سيكتب لها النجاح ..

عاجزين عن شكرك :)

ديموفنف
20-03-2007, 08:15 PM
ترسله لنا نشفره ونرجعه لك ترفعه لمجلد blocks وبعدها تضيفه كبلوك جديد بالطريقة العادية مثل أي بلوك آخر من لوحة التحكم
حبيت بعدها تنزله للجميع فهذا كرما منك :)

سبق
21-03-2007, 12:58 AM
هل لابد من إضافة القالب من القوالب في لوحة التحكم ؟
لأنك في شرحك فوق أننا نضعها في نموذج rcontent

وبما أننا وضعنا الملف في مجلد bolcks فلابد أننا نضيف البلوك عن طريق القوالب ؟!!

سبق
21-03-2007, 01:00 AM
http://www.sabq.org/inf/news.php?action=show&id=369

لاحظ في أسفل الصفحة

البلوك الأول هو اللي أضفناه في القوالب
والثاني اللي تم إضافته في نموذج rcontent
وإذا عطلت البلوك من الوقالب ما تظهر الأكثر مشاهدة ؟!!!
فهمت قصدي ؟

ديموفنف
21-03-2007, 01:10 AM
البلوك لا جيت تضيفه فقط تختار اسم البلوك من القائمة واللي هو block-topnewsviews

الكود الخاص بالنماذج يتم اضافته من خلال النماذج وبالتحديد في مثالنا rcontent لأنه يستخدم آلية نماذج انفنتي

البلوك اللي ما ظهر لك اي محتوى فيه هو بسبب انه يستخدم نظام البلوكات العادي (يعني بدون استخدام نظام النماذج ) وذا طريقته سبق شرحها في موضوع سابق

يعني ما تضيف إلا بلوك واحد

سبق
21-03-2007, 04:40 PM
معليش يا ابعاد ..

الآن الشرح أعلاه هل هو للبلوك أم للنموذج ؟
وما السبب في ارتباطهم ؟

بحيث إذا ألغيت البلوك تختفي الأخبار أكثر مشاهدة ؟

ديموفنف
21-03-2007, 11:34 PM
الشرح لبلوك يستخدم آلية تامبلتات انفنتي

اذا بغيت تستخدم آلية البلوك العادية فاستخدم طريقة الشرح التالية :
http://www.arabwebtalk.com/showthread.php?t=49620

يعني بالنهاية انت بتضيف بلوك واحد وليس اثنين لنفس المحتوى , ما الفائدة من ذلك

بالحكم
10-04-2007, 11:59 AM
السلام عليكم ورحمة الله وبركاته

هذه محاولة سريعة لتنفيذ الخطوات السهلة التى أوردتموها هنا

ولكنها اولى محاولاتى مع اكواد php

أتمنى منكم فقط ذكر أخطائها لنتعلّم منكم

فهل لو اردنا عمل كود لأكثر البطاقات مشاهدة

سيكون بهذا الشكل؟؟

وما مدى الخطأ به




<?php
if(THIS_SCRIPT=="card"){
$result=$DB->query("SELECT id,caption FROM cardm ORDER BY views DESC LIMIT 10");
if($DB->num_rows($result)>0){
$tpl->newBlock("extrablocks");
$tpl->assign("extrablockname","أكثر البطاقات مشاهدة");
while($row=$DB->fetch_array($result)){
$tpl->newBlock("extrablock");
$tpl->assign("action","cards.php?action=listcards&id=".$row[id]);
$tpl->assign("caption",unclean($row[caption]));
}
}
}
?>



أشكركم مقدّما لسعة صدركم ومجهودكم الجميل
ونتمنى أن نتعلم منكم المزيد

م.محمد عبدالله
13-04-2007, 04:22 AM
السلام عليكم ورحمة الله وبركاته

بالحكم ما اخترت إلا اصعب واحد :D

عموماً طريقتك 100% ولكنك لم تنتبه لطبيعة محتوى البطاقات
البطاقات لا يوجد بها مشاهدة وإنما إهداءات فقط
ولكي تكون فكرة عما ترغب بعمل بلوك له فيجب أن تقوم بمشاهدة جدول القسم , فالحقول المطلوبة هنا هي التالية :

id,caption,ext,thump
والأوردر سيكون بترتيب الإهداءات sent

لذلك الكود للبلوك سيكون :

<?php
if(THIS_SCRIPT=="cards"){
$result=$DB->query("SELECT id,caption,ext,thump FROM cardsm ORDER BY sent desc limit 10");
if($DB->num_rows($result)>0){
$tpl->newBlock("extrablocks");
$tpl->assign("extrablockname","أكثر البطاقات مشاهدة");
while($row=$DB->fetch_array($result)){
$tpl->newBlock("extrablock");
$tpl->assign("action","greet.php?division=card&action=prepair&id==".$row[id]);
$tpl->assign("caption",unclean($row[caption]));
}
}
}
?>

ولكن ستحتاج ايضاً لوضع متغير لصورة الكرت المصغرة وستكون ext وايضا في حالة كان الكرت فلاش فمن المفترض بأن يكون له thump

عموما الطريقة صحيحة لو كانت بشكل روابط مثل بلوك أكثر الأخبار والمقالات مشاهدة

للمعلومية البلوكات القادمة في الرحلة خاصة بالبطاقات

محاولة رائعة وأسجل اعجابي;)

ahmedipa
20-08-2007, 10:43 AM
تسلم ياأبعاد وإن شاء الله تسهل علينا استخدام المجلة

وعملها كيف مانحتاجها بإذن الله

وهذا ميزة خطيرة فيها