| |||||||
| المدوّنات | البحث | مشاركات اليوم | اجعل كافة المشاركات مقروءة |
|
| | LinkBack | أدوات الموضوع |
| |||||
| محرك قوالب عن طريق قواعد البيانات mysql محرك القوالب يستخدم غالبا في فصل الكود البرمجي عن أكواد التصميم . وبما أن محركات القوالب التي تعتمد على قوالب html او اي امتداد آخر كثيره جدا ومن اشهرها : محرك القوالب تبع ضيف العتيبي وهو القالب السهل . محرك القوالب سمارتي . ولكن لم اشاهد محرك قوالب عن طريق قواعد البيانات !! يعني محرك قوالب شبيه باللي مستخدم في منتديات vb . وقد فكرت قليلا بفضل الله تعالى تم تطبيق فكره بسيطه واصبحت محرك قوالب بسيط يعتمد على قواعد البيانات . إليكم الشرح : أولا ننشي جدول في قاعدة البيانات بإسم style مثلا ونضيف فيها حقول كالتالي : كود: `idstyle` int(10) NOT NULL auto_increment, كود: `name` varchar(100) NOT NULL default '', كود: `htmldir` text, كود: `css` text, كود: `body` text, كود: `header` text, كود: `footer` text, كود: `frame` text, كود: `menu` text, طبعا كل حقل يحمل الخاصيه تبعه . ========== واليكم بكود جدول قاعدة البيانات كاملا : كود: CREATE TABLE `style` ( `idstyle` int(10) NOT NULL auto_increment, `name` varchar(100) NOT NULL default '', `htmldir` text, `css` text, `body` text, `header` text, `footer` text, `frame` text, `menu` text, PRIMARY KEY (`idstyle`) ); والآن كيف نقوم بتصميم استايل في قاعدة البيانات : أولا يجب ان تعمل قورم لإدخال البيانات في الحقول الخاصه بها جدول القاعدة : الحقل name نضع فيه مثلا : استايل تجريبي . الحقل htmldir وهو خاص برأس الصفحة ونضع به الكود التالي : كود: <html dir="rtl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1256">
<title>{title}</title>
</head> كود: <style>
<!--
body {
scrollbar-base-color: #CC3300;
scrollbar-arrow-color: #FFEFDF;
scrollbar-track-color: #FFEFDF;
font-family: Tahoma; color: #CC6600;
font-size: 12px }
p {
font-family: Tahoma;
font-size: 12px;
color: #CC3300 }
button { border: 1px solid #CC6600 }
input {
font-family: Tahoma;
font-size: 12px;
color: #CC3300;
border: 1px solid #CC6600;
background-color: #FFEFDF }
textarea {
font-family: Tahoma;
font-size: 12px;
color: #CC3300;
border: 1px solid #CC6600;
background-color: #FFEFDF }
A:link {
FONT-WEIGHT: normal;
FONT-SIZE: 12px;
BACKGROUND: ;
COLOR: #CC6600;
TEXT-DECORATION: none ;
FONT-FAMILY: tahoma
}
A:active {
FONT-WEIGHT: normal;
FONT-SIZE: 12px;
BACKGROUND: none transparent scroll repeat 0% 0%;
COLOR: #CC6600;
FONT-FAMILY: tahoma;
TEXT-DECORATION: underline
}
A:visited {
FONT-WEIGHT: normal;
FONT-SIZE: 12px;
BACKGROUND: none transparent scroll repeat 0% 0%;
COLOR: #CC6600;
FONT-FAMILY: tahoma;
TEXT-DECORATION: none
}
A:hover {
FONT-WEIGHT: normal;
FONT-SIZE: 12px;
BACKGROUND: none transparent scroll repeat 0% 0%;
COLOR: #CC3300;
FONT-FAMILY: tahoma;
TEXT-DECORATION: underline
}
-->
</style> كود: <body topmargin="10" leftmargin="10" bgcolor="#ffffff"> هذا الكود فلنفرض انه تصميمنا الذي قمنا بعمله : كود: <div align="center"> <center> <table border="1" cellpadding="2" style="border-collapse: collapse; border-style: double; border-width: 3" bordercolor="#000000" width="90%" id="AutoNumber1" dir="rtl"> <tr> <td width="100%">xxxxxxxxxxxxx</td> </tr> </table> </center> </div> ما قبل الحروف xxxxxxxxxxxxx فهو يعتبر الجزء العلوي أي الـ header ومابعد الحروف xxxxxxxxxxxxx يعتبر الجزء السفلي أي الـ footer ... والآن هيا نقسم الكود ونضعه بمكانه الصحيح : الحقل header نضع به الكود التالي وهو الجزء العلوي : كود: <div align="center"> <center> <table border="1" cellpadding="2" style="border-collapse: collapse; border-style: double; border-width: 3" bordercolor="#000000" width="90%" id="AutoNumber1" dir="rtl"> <tr> <td width="100%"> كود: </td> </tr> </table> </center> </div> كود: <table border="1" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber3" cellspacing="3">
<tr>
<td width="100%">
<p align="center">{frame_title}</p></td>
</tr>
<tr>
<td width="100%">{frame_rows}</td>
</tr>
</table> والحقل menu خاص بتصميم القائمه ونضع به الكود التالي : كود: <div align="center">
<center>
<table border="1" cellpadding="2" style="border-collapse: collapse" bordercolor="#111111" width="150" id="AutoNumber2" dir="rtl">
<tr>
<td width="100%"><p align="center">{menu_title}</td>
</tr>
<tr>
<td width="100%">{menu_rows}</td>
</tr>
</table>
</center>
</div> ========= والآن نأتي لطريقة عرض القوالب وطريقة عرض المحتويات بداخلها : أولا نكتب متغير خاص برقم id الاستايل الذي سوف نستخدمه في تصميمنا . كود PHP: كود PHP: ثم نقوم بعرض كود الهيدر وهو كالتالي : كود PHP: كود PHP: وأيضا كود عرض المينو أو القائمه كالتالي : كود PHP: اقتباس:
وهكذا انتيهينا من تضبيط جميع قوالب الاستايل . وإليكم كود الدوال كاملا : كود PHP: والآن كيفية استخدام الدوال وعرضها للمشاهده : هذا مثال بسيط للاستخدام : كود PHP: السطر الثاني : قمنا بتضمين ملف دوال القالب . السطر الثالث : قمنا بعرض دالة الهيدر وقمنا بكتابة عنوان الصفحه bwady.com home السطر الرابع : متغير يحمل عنوان الحتوى . السطر الخامس : متغير يحمل موضوع المحتوى . السطر السادس : دالة عرض تصميم الاطار وبداله المتغيرات عنوان المحتوى وموضوع المحتوى . السطر السابع : دالة عرض الفوتر . وهذا مثال آخر أكثر تقدما : وهو كيفية استخدام دالة عرض الاقسام والمينو مع دوال التكرار . اليكم المثال : كود PHP: السطر الثاني : قمنا بتضمين ملف دوال القالب . السطر الثالث : الداله selectdata1() وهي للاستعلام من جدول في قاعدة البيانات واستخدمنا بها دالة التكرار ... وهي خاصه لإطار المحتويات . ثم تليها الدالة selectdata2() وهي ايضا استعلام من قاعدة البيانات واستخدمنا حلقة التكرار ... وهي خاصه بالمينو . ثم تليها دالة عرض الهيدر tpl_header("موقع بوادي"); وقمنا بكتابة اسم الموقع فيها . ثم انشأنا جدول عن طريق الفرونت بيج ذو حقلين اثنين والحقل الذي على اليمين وضعنا به دالة عرض المينو والحقل اللي على اليسار وضعنا به دالة عرض اطار المحتويات . ثم اخيرا أغلقنا الصفحة بكود عرض الفوتر tpl_footer() . ========= ستجدون رابط لتحميل ملفات القالب كامله ومن ضمنا ملف خاص بإضافة وتعديل وحذف الاستايلات التي ستضاف لقاعدة البيانات وايضا يوجد ملف إسمه addtest.php وهذا خاص للتجربه فقط لإظافة سجلات في جدول اسمه test حتى نرى مثال حي للقالب ... الملفات هي كالتالي : style.php : خاص بإضافة وتعديل وحذف الاستايل . addtest.php : خاص بإضافة سجلات للتجربه فقط . example.php : مثال بسيط للعرض القالب من قاعدة البيانات . example2.php : مثال لعرض القالب من قاعدة البيانات وبداخله عرض حلقات التكرار بداخل المينو والاطار . sql&data.txt : خاص بأكواد قاعدة البيانات جاهزه فقط ازرعها . include/config.php : ملف الاتصال بقاعدة البيانات . include/function.php : ملف الدوال الخاص بالقالب . رابط تحميل القالب http://www.tlbat.com/downloadfile-100.html رابط الموضوع الأصلي محرك قوالب عن طريق قواعد البيانات mysql محرك قوالب عن طريق قواعد البيانات mysql هذا والحمدلله رب العالمين وما توفيقي إلا بالله العلي العظيم . ابوليالي | |||||
|
| |||||
|
سلم الله يداك , مجهود جميل تستحق كل التقدير اخي الكريم ..
__________________ فايلاتي لتحميل الصور و الملفات . اسرع موقع عربي لتحميل الصور و الملفات جرب فايلاتي ولاحظ الفرق :) Reverya Web Solutions ريفيريا لحلول الإنترنت تصميم و إستضافة مواقع الإنترنت | |||||
|
| |||||
|
طيب عندي أسألة سلمك الله : 1/لماذا استخدمت مرة stripslashes ومرة eregi_replace وايش فائدة الثانية لأني أول مرة أشوفها بصراحة stripslashes($tpl[menu]); $tpl[menu] = eregi_replace("{menu_title}","$menu_title",$tpl[menu]); هل تقصد أن eregi_replace هي لإظهار قيمة المتغير في القوالب 2/ طيب لو القالب يحتوي على متغيرة $titel فهل سيظهر قيمته أم ماذا ? وكيف ؟ وهل بنفس الطريقة ؟ معليش أسألة واحد ملخبط شوي ![]() وشكرا | |||||
|
| |||||
|
الداله stripslashes تستخدم لإزالة علامة السلاش / من النص . الدالة eregi_replace تستخدم لإستبدال نص مكان نص آخر وتستخدم كثيرا في استبدال اكواد html بـ bbcode وهي غير حساسه لحالة الأحرف بحيث A هي نفسها a . وقمنا بإستبدال النص المكتوب في القالب وهو {menu_title} بالمتغير $menu_title اقتباس:
وبالتوفيق | |||||
|
| |||||
|
أشكرك أخي العزيز ابو ليالي .. عندي سؤالين : السؤال الاول : مالفائدة من التقسيم الذي وضعته للجدول ؟؟ السؤال الثاني : ما فائدة هذا الامر .. كود PHP: اضافة : لقد اوحيت لي بفكرة ، وهي ان يكون للمستخدم امكانية تقسيم القالب كما يريد .. بحيث لا تكون هناك تقسيمات محددة كما تفضلت بوضعها htmldir , css الخ .. ساعطيك مثال بسيط .. يتكون هذا الجدول من : id الرقم الخاص بالقالب name الاسم الخاص بالقالب code الكود الخاص بالقالب حسنا .. ماذا لو اردنا تقسيم القالب الى عدة اقسام .. مثلا header , body , footer الخ.. بالطبع سيكون نوع الحقل code في قاعدة البيانات اما text او longtext .. الطريقة هي وضع علامة فاصلة بين كل قسم وقسم .. مثل : كود بلغة HTML: <!--code--> كود PHP: شكرا لك مرة اخرى .. واعتذر عن الاطالة . | |||||
|
| |||||
| اقتباس:
طريقتك جميله ولكن أهم شي الترتيب ومن وجهة نظري لو ان كل كود مستقل في حقل يكون أفضل ويجب ان تراعي أصحاب الخبرات الضعيفه !!! والتقسيم يسهل لهم أكثر . وأيضا طريقتي تمكنك من تغيير حقل واحد دون عناء البحث في قالب واحد مليء بالاكواد . فرضا اردنا تغيير خلفية body لاي لوووون آخر في هذه الحاله تذهب مباشره لخانة الحقل الخاص وتغييرها واما في طريقتك يذهب ويبحث في حقل مليء بالاكواد >>>> أيهما افضل !! وبالتوفيق للجميع | |||||
|
| |||||
|
بداية مبشرة ولكن هناك شئ صغير : ان هذا موجود فى نظام سمارت ويمكنك البحث فى الدليل موضوع قاعدة البيانات هذا معقد نوعا ما لانه مع كثرة الضغط على السيرفر سوف يكون التصفح بطئ ولذلك اذا لم تتمكن من ضبط الاداء بشكل جيد فلا انصحك نهائيا بهذا الامر وسيكون الخيار الافضل هو الملفات انت استخدمن الدالة erge ولكن اعتقد ان الدالة preg* اسرع مرتين منها ولو استطعت استخدام str_replace لكان هذا افضل بكثيييييييير جدا جدا وانت لا تستخدم دوال ergi او preg لا فى حالة وجود تعبير معين تريد مقارنته *رأيى : اذا اضفت عمودا وسمته lang يمكنك ان تقوم بتصميم استايل لكل لغه نوعا ما تحتاج الى جهد ولكنها ستبدو جيده
__________________ مدونتى : http://ahmedaraby.wordpress.com | |||||
|
| |||||
| اقتباس:
| |||||
|
![]() |
| |
| |
| أدوات الموضوع | |
|