صفحة 1 من 2 12 الأخيرةالأخيرة
النتائج 1 إلى 15 من 16

الموضوع: ألا يفي نظام القوالب هذا بالغرض ؟

  1. #1
    عضو سوبر نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    613

    ألا يفي نظام القوالب هذا بالغرض ؟



    الجميع يعرف ان الهدف من نظام القوالب هو فصل المحتوى عن التصميم ..
    المحتوى : هو الاكواد البرمجية
    التصميم : نتيجة الاكواد البرمجية او ما سيظهر للزائر
    و نظام القوالب فيه نوع من الصعوبة ..
    قمت بالبحث في الانترنت وجدت احد الاكواد التي تقوم بهذا العمل ( فصل المحتوى عن التصميم ) بشكل مبسط ..
    وقمت بتحليل هذا الكود ووجدت انه يفي بالغرض ..
    وقمت ببعض التعديل على هذا الكود و تنسيقه و جعله بابسط شكل ممكن ..
    الكود عبارة عن دالة اسمها 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;
       
    ?>
    وبهذا نكون قد انتهينا تماما من الدرس ..
    اعتذر على الاطالة ..
    واتمنى ان تستفيدو من هذا الدرس .





    الملفات المرفقة الملفات المرفقة
    التعديل الأخير تم بواسطة dev11 ; 01-09-2007 الساعة 09:04 AM
    __________________
    مدونة؟


  2. #2
    عضو فعال
    تاريخ التسجيل
    Aug 2007
    المشاركات
    1,431

  3. #3
    عضو نشيط جدا
    تاريخ التسجيل
    May 2007
    المشاركات
    509


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

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





    __________________
    EbNCaNa اخوكم ابن قانا

    [درس] قائمة بريدية بأسهل الطرق بواسطة PHP

    [توقيعك يجب أن لا يكون أطول من 400 حرف يتضمن تجاوز كود المنتدى] - الى متى المعاناة يا حضرة الأدارة ؟

  4. #4
    عضو نشيط
    تاريخ التسجيل
    May 2006
    المشاركات
    213


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

    استفدت منه

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



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





    __________________
    سبحان الله والحمد لله ولا اله الا الله والله اكبر
    افضل [ بيج رانك 4 ] <<< كان سابقا .. الحين 2 :(

  5. #5
    عضو سوبر نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    613


    اقتباس المشاركة الأصلية كتبت بواسطة 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;

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





    __________________
    مدونة؟

  6. #6
    عضو نشيط
    تاريخ التسجيل
    May 2006
    المشاركات
    213


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

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


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




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





    __________________
    سبحان الله والحمد لله ولا اله الا الله والله اكبر
    افضل [ بيج رانك 4 ] <<< كان سابقا .. الحين 2 :(

  7. #7
    عضو نشيط جدا
    تاريخ التسجيل
    Jan 2007
    المشاركات
    561


    رااااائع

    درس مميز اخوي

    جزاك الله خير






  8. #8
    عضو جديد
    تاريخ التسجيل
    Sep 2007
    المشاركات
    19


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






  9. #9
    عضو سوبر نشيط
    تاريخ التسجيل
    Mar 2003
    المشاركات
    790


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

    Dr.no





    __________________
    دكتور لا

  10. #10
    عضو جديد
    تاريخ التسجيل
    Sep 2007
    المشاركات
    5


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






  11. #11
    عضو سوبر نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    613


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





    __________________
    مدونة؟

  12. #12
    عضو نشيط
    تاريخ التسجيل
    Oct 2003
    المشاركات
    280


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





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

    العضوية يستخدمها اكثر من شخص
    Nabeel A. Galal
    Hawk Eye
    nabeel.galal AT hotmail.com

  13. #13
    عضو سوبر نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    613


    اقتباس المشاركة الأصلية كتبت بواسطة 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 الساعة 03:36 PM
    __________________
    مدونة؟

  14. #14
    عضو سوبر نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    613


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





    __________________
    مدونة؟

  15. #15
    عضو نشيط
    تاريخ التسجيل
    Oct 2003
    المشاركات
    280


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





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

    العضوية يستخدمها اكثر من شخص
    Nabeel A. Galal
    Hawk Eye
    nabeel.galal AT hotmail.com





ضوابط المشاركة

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

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