نظرة سريعة على مجريات يوم سوالف
الفائزون في المسابقة الأصغر لسوالف كاست

 

العودة   سوالف سوفت > قسم تطوير وبرمجة المواقع للمتقدمين > PHP
المدوّنات البحث مشاركات اليوم اجعل كافة المشاركات مقروءة

رد  
 
LinkBack أدوات الموضوع
عضو نشيط جدا
تاريخ التسجيل: May 2007-
#1 (permalink)  
ألا يفي نظام القوالب هذا بالغرض ؟


الجميع يعرف ان الهدف من نظام القوالب هو فصل المحتوى عن التصميم ..
المحتوى : هو الاكواد البرمجية
التصميم : نتيجة الاكواد البرمجية او ما سيظهر للزائر
و نظام القوالب فيه نوع من الصعوبة ..
قمت بالبحث في الانترنت وجدت احد الاكواد التي تقوم بهذا العمل ( فصل المحتوى عن التصميم ) بشكل مبسط ..
وقمت بتحليل هذا الكود ووجدت انه يفي بالغرض ..
وقمت ببعض التعديل على هذا الكود و تنسيقه و جعله بابسط شكل ممكن ..
الكود عبارة عن دالة اسمها template ..
كود PHP:
function template($file)
   { 
كما ترون في السطر الاول والثاني تعريف للدالة وكما في تعريف اي دالة هناك اسم الدالة ثم يتبعها المتغير االذي هو في دالتنا مسمى بـ $file الذي يمثل مسار ملف التصميم المراد دمجه مع المحتوى ..
كود PHP:
$open=fopen("$file","r"); 
السطر الثالث عبارة عن مجموعة من الاوامر في متغير اسمه $open ومن اسمه معناه انه للفتح .. يقوم المتغير بفتح ملف التصميم وتجهيزه للقراءة كما تلاحظون وجود حرف r في البارمتر الثاني للدالة fopen بينما البارمتر الاول هو عبارة عن مسار ملف التصميم الذي هو المتغير $file ..
الان تم تجهيز ملف التصميم للقراءة .. اذا الخطوة التالية طبعا هي القراءة !
كود PHP:
$template=fread($open,filesize("$file")); 
عن طريق الدالة fread نقرأ الملف كاملا وتلاحظون ان البارمتر الاول هو المتغير $open الذي يقوم بتجهيز الملف للقراءة والبارمتر الثاني هو عبارة عن دالة filesize التي تقوم بقياس حجم ملف التصميم وعدد حروفه .. وتلاحظون ان الدالة filesize البارمتر الوحيد لها هو مسار ملف التصميم ..
الان تم قراءة الملف وتخزينه في متغير بإسم $template ..
كود PHP:
fclose($open); 
نغلق الملف بعد الانتهاء من قراءته عن طريق الدالة fclose والبارمتر الوحيد لها هو المتغير $open الذي قام بتجهيز الملف للقراءة سابقا ..
كود PHP:
$template=str_replace('"','\"',$template); 
في هذه الخطوة نقوم باستبدال " بـ \" وذلك ليمكن استخدامها كمتغير وللحفاظ على تنسيق ملف التصميم فلا يتداخل مع اكواد البرمجة ..
كود PHP:
return($template);
   } 
في السطرين الاخيرين نقوم بارجاع القيمة للمتغير واغلاق الدالة ..
طبعا الان نحن لدينا دالة .. ولكل دالة طريقة استخدام معينة ..
طبعا لابد من وجود الدالة في نفس الملف وذلك بطريقتين :
اما وضع الدالة كما هي .. او استيراد الملف .. اذا افترضنا ان الدالة في ملف اسمه template.php فنقوم بــ :
كود PHP:
include("template.php"); 
اما بالنسبة للطريقة فهي كالتالي ..
كود PHP:
$template=template("template.html"); 
في السطر الاول نقوم بتطبيق الدالة template على الملف template.html ..
كود PHP:
eval("\$template=\"$template\";"); 
في السطر الثاني نقوم باستخدام الدالة eval التي تقوم بتحويل المتغيرات داخل ملف التصميم الى المتغيرات الموجودة في الكود البرمجي ..
كود PHP:
echo $template
في السطر الاخير نقوم بطباعة المحتوى النهائي ..
سأضع لكم الدالة كاملة ..
كود PHP:
 function template($file)
   {
   
$open=fopen("$file","r");
   
$template=fread($open,filesize("$file"));
   
fclose($open);
   
$template=str_replace('"','\"',$template);
   return(
$template);
   } 
وطريقة الاستخدام كاملة ..
كود PHP:
$template=template("template.html");
   eval(
"\$template=\"$template\";");
   echo 
$template
انتهيت الان من شرح الدالة ..
بقي مثال بسيط ..
لدينا ملف التصميم اسمه template.html وهذا محتواه :
كود بلغة HTML:
<style type="text/css">
  #content {
    width:75%;
    padding:5px;
    font-family:verdana;
    color:#000000;
    text-align:left;
    background:#f5f5f5;
    border-width:1px;
    border-style:dashed;
    border-color:#cccccc;
  }
  </style> <center><div id="content"> <h1>$title1</h1> <p>$text1</p> <h1>$title2</h1> <p>$text2</p> </div></center>
لدينا في هذا الملف ( الغير قياسي ) أربعة متغيرات هي :
$title1 : العنوان الاول
$text1 : النص الاول
$title2 : العنوان الثاني
$text2 : النص الثاني
وتلاحظون اننا لم نقم بكتابة المتغيرات بين قوسين { } أو قوسين ( ) بل كتبنا المتغير كما هو ..
ولدينا ملف البرمجة واسمه template.php وهذا محتواه :
كود PHP:
<?php
   
function template($file)
   {
   
$open=fopen("$file","r");
   
$template=fread($open,filesize("$file"));
   
fclose($open);
   
$template=str_replace('"','\"',$template);
   return(
$template);
   }
   
$title1="We believe you're talented!";
$text1="<b>Social Freelancing</b><br><br>
We believe all people are talented and skilled. That is why we are launching <a target=\"_blank\" href=\"http://www.a3mali.com/en\">a3mali</a>. The first social freelance site in the Arab World, all for free.<br><br>
<b>Give Help, Get Paid</b><br><br>
Come meet other people who are looking for the skills you've got. Help them with their projects and get paid for it.<br><br>
<b>Get Help from the professionals</b><br><br>
If you're looking for help this is the right place for you to find talent. Just post your projects and relax while the best people bid to win."
;
$title2="Who are we?";
$text2="We are three friends who think we can help empower people in the Arab World by giving them an outlet for their skills. Our service, <a target=\"_blank\" href=\"http://www.a3mali.com/en\">a3mali</a> is based in Dubai and we soon will be rolling out the first beta.";
   
$template=template("template.html");
   eval(
"\$template=\"$template\";");
   echo 
$template;
   
?>
وبهذا نكون قد انتهينا تماما من الدرس ..
اعتذر على الاطالة ..
واتمنى ان تستفيدو من هذا الدرس .






الملفات المرفقة
نوع الملف: zip template.zip‏ (1.2 كيلوبايت, المشاهدات 34)

التعديل الأخير تم بواسطة : dev11 بتاريخ 01-09-2007 الساعة 08:04 AM.
dev11 غير متواجد حالياً   قديم 31-08-2007, 06:28 AM
رد مع اقتباس
عضو سوبر نشيط
تاريخ التسجيل: Aug 2007-
#2 (permalink)  

الله يجزاك خير على الدرس

ومشكور...






__________________
موقع مبرّمج - zawyte
php(x)3
www.tdwenty.com Domain Is 4 Sale | fahad1ad2 @ hotmail.com
ff5006 غير متواجد حالياً   قديم 31-08-2007, 09:05 AM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: May 2007-
#3 (permalink)  

ما شاء الله عليك اخوي على الدرس الرائع وللعلم : الاستاذ نايف الموكلي php-ar يستعمل هذا الكود بشكل اساسي في سكربتاته وانا ايضا من تلاميذه وعلى نفس الخطى ... الكود رائع بحق .

الى الامام حبيبي وان شاء الله نشوف ابداعاتك القادمة .






EbNCaNa متواجد حالياً   قديم 31-08-2007, 10:56 AM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: May 2006-
#4 (permalink)  

بااارك الله فيك

استفدت منه

ولكن كيف العمل لو كان في ملف البرمجة استعلام و حلقة تكرار



او كانت فيه شروط






__________________
سبحان الله والحمد لله ولا اله الا الله والله اكبر
افضل [ بيج رانك 4 ] <<< كان سابقا .. الحين 2 :(
abady 999 غير متواجد حالياً   قديم 31-08-2007, 07:43 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: May 2007-
#5 (permalink)  

اقتباس:
المشاركة الأصلية كتبت بواسطة abady 999
ولكن كيف العمل لو كان في ملف البرمجة استعلام و حلقة تكرار
او كانت فيه شروط
بالنسبة للاستعلام من قاعدة بيانات فقط ضع الاستعلام قبل كود الاستخدام ..
مثال :
كود PHP:
// جلب البيانات من القاعدة
$result=mysql_query("SELECT * FROM `table`");
// تحويل البيانات الى مصفوفة
$row=mysql_fetch_array($result);
$id=$row[id];
$name=$row[name];
// إحضار ملف التصميم
$template=template("template.html");
eval(
"\$template=\"$template\";");
echo 
$template
اما حلقة التكرار ..
كود PHP:
// بداية حلقة التكرار
while($id==1)
{
// إحضار ملف التصميم
$template=template("template.html");
eval(
"\$template=\"$template\";");
echo 
$template;
// نهاية حلقة التكرار

اما الشرط ..
كود PHP:
// بداية الشرط
// اذا كان تسجيل الدخول صحيح
if ($login==1)
{
// احضار ملف التصميم الذي يوضح تمام تسجيل الدخول
$template=template("login_successful.html");
eval(
"\$template=\"$template\";");
echo 
$template;
// نهاية الشرط
}
// غير ذلك
else
{
// احضار ملف التصميم الذي يوضح عدم تمام تسجيل الدخول
$template=template("login_error.html");
eval(
"\$template=\"$template\";");
echo 
$template;

اتمنى يكون كل شيء واضح ..






dev11 غير متواجد حالياً   قديم 01-09-2007, 01:34 AM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: May 2006-
#6 (permalink)  

بارك الله فيك اخوي asaamas

قربت لي الفكرة كثير واحتاج للتجربة


انشغلت مؤخرا ببطاقة فيزا وكيفية حجز دومين واستضافة ونقل موقع .. اعاننا الله




استاذي ... لي عودة باذن الله






__________________
سبحان الله والحمد لله ولا اله الا الله والله اكبر
افضل [ بيج رانك 4 ] <<< كان سابقا .. الحين 2 :(
abady 999 غير متواجد حالياً   قديم 02-09-2007, 10:44 AM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Jan 2007-
#7 (permalink)  

رااااائع

درس مميز اخوي

جزاك الله خير






x_yousef_x غير متواجد حالياً   قديم 02-09-2007, 12:16 PM
رد مع اقتباس
عضو جديد
تاريخ التسجيل: Sep 2007-
#8 (permalink)  

شكرا لك أخي الكريم على الموضوع و الدرس الرائع ,, بارك الله بك ,, تحياتي






ZERIAB غير متواجد حالياً   قديم 02-09-2007, 04:51 PM
رد مع اقتباس
عضو سوبر نشيط
تاريخ التسجيل: Mar 2003-
#9 (permalink)  

شكراً على الدرس
أستخدم نفس الطريق و لكن بالتخزين في قاعدة البيانات و ليس في ملفات html
و لي تجارب في عمل تعدد الستايلات آمل إني أضيفها قريباً إن شاء الله ( لما أكون فاضي بعد المذاكرة كده )

Dr.no






__________________
دكتور لا
Dr.no غير متواجد حالياً   قديم 02-09-2007, 10:42 PM
رد مع اقتباس
عضو جديد
تاريخ التسجيل: Sep 2007-
#10 (permalink)  

الله يدخلك الجنة انا الان فهمان الطريقة 99%
وشكرا لك اخي






ابو ليل غير متواجد حالياً   قديم 03-09-2007, 02:10 AM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: May 2007-
#11 (permalink)  

حياكم الله ..
اتمنى اني افدتكم ولو بالقليل






dev11 غير متواجد حالياً   قديم 05-09-2007, 05:34 PM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Oct 2003-
#12 (permalink)  

استاذي الكريم .. بالنسبة لحلقة التكرار .. اعتقد ليس هذا المقصود بها ..
المقصود مثلا وضع اخر خمسة دروس من قاعده البيانات في التصميم !! او وضع شريط متحرك باخر المقالات
اعتقد ان الطريقة






__________________
سبحان الله وبحمده سبحان الله العظيم

العضوية يستخدمها اكثر من شخص
Nabeel A. Galal
Hawk Eye
nabeel.galal AT hotmail.com
hawkeye غير متواجد حالياً   قديم 09-09-2007, 09:24 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: May 2007-
#13 (permalink)  

اقتباس:
المشاركة الأصلية كتبت بواسطة hawkeye
بالنسبة لحلقة التكرار .. اعتقد ليس هذا المقصود بها ..
المقصود مثلا وضع اخر خمسة دروس من قاعده البيانات في التصميم !!
حسناً ..
ما رأيك في الكود التالي ؟
كود PHP:
while($row=mysql_fetch_array(mysql_query("select * from $table order by id desc limit 5")))
{
$id=$row["id"];
$title=$row["title"];
$date=$row["date"];
$template=template("$template");
eval(
"\$template=\"$template\";");
echo 
$template;

أتمنى تعطيني رايك ..
أشكرك على التفاعل ..







التعديل الأخير تم بواسطة : dev11 بتاريخ 10-09-2007 الساعة 02:36 PM.
dev11 غير متواجد حالياً   قديم 10-09-2007, 02:30 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: May 2007-
#14 (permalink)  

واحب اضيف ان النظام السابق نظام بسيط جدا ولا يقارن بالانظمة الاخرى ..
وانا انصح الجميع باستخدام احد الانظمة التالية :
- easy template
- smarty template
- template power






dev11 غير متواجد حالياً   قديم 10-09-2007, 02:33 PM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Oct 2003-
#15 (permalink)  

اخي الكريم العبره ليست في تحديد عدد المخرجات
لاحظ معي انك وضعت التصميم في حلقة التكرار !!
اي انه سوف يتكرر خمسة مرات؟؟ هل فهمت قصدي
حاول ان تجربها فانا قرات الكود فقط وومنطقيا ارى هذا
جزاك الله خيرا على حرصك على نفع اخوانك وبارك الله في جهدك






__________________
سبحان الله وبحمده سبحان الله العظيم

العضوية يستخدمها اكثر من شخص
Nabeel A. Galal
Hawk Eye
nabeel.galal AT hotmail.com
hawkeye غير متواجد حالياً   قديم 11-09-2007, 01:39 AM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: May 2007-
#16 (permalink)  

اقتباس:
المشاركة الأصلية كتبت بواسطة hawkeye
اخي الكريم العبره ليست في تحديد عدد المخرجات
لاحظ معي انك وضعت التصميم في حلقة التكرار !!
اي انه سوف يتكرر خمسة مرات؟؟ هل فهمت قصدي
حاول ان تجربها فانا قرات الكود فقط وومنطقيا ارى هذا
جزاك الله خيرا على حرصك على نفع اخوانك وبارك الله في جهدك
نعم التصميم سوف يتكرر خمس مرات بالطبع ..
لكن ان كان قصدك ان عدد ملفات التصميم ستزيد .. فهذا صحيح ..
ولذلك انا اقوم بتقسيم ملف templates الى عدة مجلدات فرعية :
- index.php يحتوي ملفات التصميم الخاصه بهذه الصفحة
- send.php يحتوي ملفات التصميم الخاصه بها
وهكذا ..
وكما اسلفت هذا نظام بسيط .. ويحتوي على عدد من العيوب ..
والذي فهمته من ردك انك تريد التصميم كاملا في صفحة واحدة ..
فهذا بالطبع يحتاج الى نظام افضل ..
اشكرك على التفاعل ..






dev11 غير متواجد حالياً   قديم 11-09-2007, 02:02 PM
رد مع اقتباس
رد


 

أدوات الموضوع

تعليمات المشاركة
لا تستطيع كتابة مواضيع
لا تستطيع كتابة ردود
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة


المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
بنغالي يتسلل إلى مدرسة للبنات متنكراً في زي نسائي jooood2004 سوالف عامة 12 24-06-2007 06:48 PM
مشكلة مزمنة ((كيف اصنع شعار لموقعى)) Mr.Mido تطوير الويب 20 23-05-2007 03:46 PM
يامصممي الإستايلات ..نداءنا لكم ..... feras007 إصلاح وصيانة المنتديات 3 01-06-2006 03:11 PM
ماهو نظام لينكس (ادخل لتعرف ) ارجوو التثبيت q84h.com قسم تبادل خبرات الاستضافة 3 22-05-2006 03:40 PM
هل الأسهم حلال أو حرام ..؟؟؟ Dr-Design سوالف عامة 13 15-06-2005 03:56 AM


الساعة الآن: 06:44 PM بتوقيت المملكة العربية السعودية