السلام عليكم ورحمة الله وبركاته
ليس لي خبرة كبيره في انشاء محركات القوالب ولكن أحببت ان اطرح هذه الفكره لعل وعسى ان تنفع او يتم تطويرها الى الأفضل
وهي بإختصار شديد يتم اضافة جدول في قاعدة البيانات يحتوي على عدة حقول وكل حقل له دور خاص فيه .
تقريبا الفكره مقاربه لقوالب المنتديات vb من حيث الفكره فقط وليست البرمجه :
نعتمد على هذا الجدول في عملنا لمحرك القوالب :
كود:
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`)
);
الحقل idstyle هو الرقم التسلسلي لكل قالب .
الحقل name هو إسم للقالب .
الحقل htmldir لإضافة كود اتجاه الصفحه والميتا والعنوان title للقالب .
الحقل css لإضافة اكواد الأنماط css .
الحقل body لإضافة كود الجسم والذي يشمل لون الصفحه والهوامش .
الحقل header هو لإضافة تصميم الصفحه العلوي .
الحقل footer لإضافة تصميم الصفحة السفلي .
الحقل frame لإضافة تصميم الإطارات .
الحقل menu لإضافة تصميم القوائم الجانبيه .
سنضرب أمثله للحقول أولا بأول :
الحقل htmldir سيكون الكود تبعه هكذا :
كود HTML:
<html dir="rtl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1256">
<title>{title}</title>
</head>
حيث ان المتغير {title} سيتم استبداله بإسم الصفحه .
الحقل css سيكون به الكود التالي :
كود HTML:
<style>
<!--
BODY {
scrollbar-base-color: #E8F3F9;
scrollbar-arrow-color: #72A5C0;
scrollbar-track-color: #D4E1E9;
FONT-SIZE: 12px; FONT-FAMILY: tahoma
}
TD {
FONT-SIZE: 12px;
FONT-FAMILY: tahoma
}
P {
FONT-SIZE: 12px;
FONT-FAMILY: tahoma
}
DIV {
FONT-SIZE: 12px;
FONT-FAMILY: tahoma
}
-->
</style>
والحقل body سيكون به الكود التالي :
كود HTML:
<body topmargin="0" leftmargin="0" bgcolor="#E8E8E8">
والآن قبل وضع اكواد الهيدر والفوتر يجب عليك ان تعمل تصميم للصقحة وتقصصه وتركبه كيفما تشاء وتنسقه وتعمله على جزئين فقط >>> كما بالمثال التالي :
فل نفرض ان هذا هو كود تصميم الصفحه كاملا :
كود HTML:
<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" bgcolor="#C0C0C0">
<tr>
<td width="100%">xxxxxxxx</td>
</tr>
</table>
</center>
</div>
يتم فصل الكود كما يلي >> ما فوق xxxxxxxx فهذا للهيدر وما تحته للفوتر
كود header :
كود HTML:
<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" bgcolor="#C0C0C0">
<tr>
<td width="100%">
كود footer :
كود HTML:
</td>
</tr>
</table>
</center>
</div>
وطبعا اسفل كود الفوتر سيتم إضافة كود إغلاق وسم الجسم والصفحه وهذا هو :
كود HTML:
</body>
</html>
كود الحقل frame :
كود HTML:
<div align="center">
<center>
<table border="1" cellpadding="2" style="border-collapse: collapse" bordercolor="#111111" width="60%" id="AutoNumber2" dir="rtl" bgcolor="#C0C0C0">
<tr>
<td width="100%">
<p align="center">{frame_title}</td>
</tr>
<tr>
<td width="100%">{frame_rows}</td>
</tr>
</table>
</center>
</div>
سيتم استبدال المتغير {frame_title} بإسم القسم أو إسم المقال أو إسم الصفحه ...
سيتم استبدال المتغير {frame_rows} إما بدالة تكرار أو المقال كاملا وحسب نوعية البيانات ...
كود الحقل menu تقريبا مشابه لطريقة كود الحقل frame .
=============
والآن كيف نجلب البيانات ونستخدمها ؟
إليكم بهذه الداله في تجمع كود اتجاه الصفحه وكود الانماط وكود الجسم والهيدر :
كود PHP:
function tpl_header($name_title)
{
global $defultstyle,$name_site;
$sql = @mysql_query("SELECT idstyle,htmldir,body,header,css,name FROM style where idstyle='$defultstyle'") or die ("Query failed");
$tpl= @mysql_fetch_array($sql);
$templates_name = $tpl['name'];
$templates_htmldir = stripslashes($tpl['htmldir']);
$templates_body = stripslashes($tpl['body']);
$templates_css = stripslashes($tpl['css']);
$templates_header = stripslashes($tpl['header']);
$templates_htmldir = eregi_replace("{title}","$name_title",$templates_htmldir);
$templates_header = eregi_replace("{title}","$name_site",$templates_header);
echo "$templates_htmldir";
echo "$templates_css";
echo "$templates_body";
echo "$templates_header";
echo "<br>";
@mysql_free_result($sql);
}
تم السماح لمتغيرين في الداله
كود PHP:
global $defultstyle,$name_site;
المتغير $defultstyle هو رقم id القالب الذي يتم استخدامه للصفحات .
المتغير $name_site هو اسم الصفحة .
والمتغير $name_title هو البارميتر الوحيد في الداله وهو اسم للصفحه بحيث سيتغير بتغير اسم الصفحه التي بها الداله .
طريقة الاستدعاء :
كود PHP:
$name_title = "ابوليالي";
tpl_header($name_title);
وهنا دالة الفوتر :
كود PHP:
function tpl_footer()
{
global $defultstyle;
$sql = @mysql_query("SELECT idstyle,footer FROM style where idstyle='$defultstyle'") or die ("Query failed");
$tpl= @mysql_fetch_array($sql);
$footer = stripslashes($tpl['footer']);
echo "$footer";
@mysql_free_result($sql);
}
طريقة الاستدعاء دائما تكون في آخر الصفحة تماما :
لا يسعني الوقت لإكمال البقيه وان شاء الله سيتم الإكمال في وقت لاحق
وانتظر الاقتراحات والتعديلات من اصحاب الخبرات المتقدمه .
والله ولي التوفيق