السلام عليكم ورحمة الله و بركاته

درسنا اليوم متميز قليلا
لاني اعتقد انه لم يتم شرحه من قبل وان كانت فكرته من اسهل الافكار بل تعتبر من اولى الدروس التي تعلمناها في البرمجه

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

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

الان لو نظرنا الى الموضوع وحددنا ما نحتاج اليه لوجدنا اننا نحتاج لدالة تقرأ المجلد الخاص بالقوالب
ودالة تجلب لنا متويات القالب ودالة تقوم بحفظ ما سنقوم بالتعديل عليه (( يعني ماهي صعبه ولا حاجه))

طيب نمسك الموضوع شيئا فشيئا

طبيعي انه يوجد مجلد للقوالب الخاصه بكل استايل
اذن نقوم بتخصيص متغير لهذا المجلد كالتالي مثلا

كود PHP:
                       $path "path/to/files"
تمام؟

نقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعي

الان نقوم بفتح المجلد لقرائة محتوياته

كود PHP:
                       $dh  opendir($dir); 
بعد ذلك نقوم بعمل حلقة تكرار وشرط للتأكد ان المجلد قد تم فتحه ومن ثم تخصيص مصفوفه بكامل محتويات المجلد ثم نقوم بعد ذلك بإغلاق المجلد كالتالي

كود PHP:
                       while (false !== ($filename readdir($dh))) { 
    
$tpls[] = $filename

closedir($dh); 
اذن الان المصفوفه $tpls تحتوي على جميع اسماء القوالب التي تم ايجادها في المجلد القوالب
ما نحتاجه الان هو عمل حلقة تكرار بسيطه جدا ووضعها بداخل selectbox او بأي طريقة عرض تحبها انت وذلك لعرض اسماء القوالب على غرار الفي بي كالتالي

كود PHP:
                       echo 
<form name ='edit' method='post' action = ''> 
<select name=\"edit\" size=\"1\">"

if(
count($tpls) > 0

    foreach(
$tpls as $key => $value
    { 
        echo 
"<option value=\"$value\">$value</option>" 
    


echo 
"</select></form>"
الان اصبح عندنا فورم وبه سيليكت بوكس به جميع اسماء القوالب القادمة من مجلد القوالب

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

كود PHP:
                       if(isset($_POST['edit'])) 

    } 
يعني شرط التأكد اذا تم الضغط على زر تعديل الخاص بالقالب

كود PHP:
                       $file $path."/".$_POST['edit']; 
نا نلاحظ ان المتغير $path = رايط مجلد القوالب الاول و $_POST['edit'] هو قيمة اسم الملف المراد تعديله
ليصبح الرابط كاملا هو الرابط الى القالب المراد فتحه لتعديله
الان نضع شرط بسيط وهو التأكد من ان القالب موجود فعلا في مكانه

كود PHP:
                           if(!file_exists($file)) 
    { 
        exit(
'الملف غيرموجود'); 
    } 
يعني اذا كان القالب غير موجود يظهر رسالة خطأ
طيب اذا موجود؟؟

كود PHP:
                           else 
    { 
        
// جلب محتويات القالب 
        
$data file_get_contents($file); 
        if(!
$data
        { 
            
// اذا لم يتم جلب محتويات الملف يظهر رسالة خطأ 
            
exit("حدث خط اثناء عملية قراءة القالب"); 
        } 
        else 
        { 
            
// والا نقوم بعمل فورم محتواها الكود القادم من القالب 
            
echo "<form name ='edit' method='post' action = ''> 
            <input name=\"tpl_name\" type=\"text\" size=\"60\" dir=\"rtl\" value = \""
.$_POST['edit']."\"><br> 
            <textarea rows=\"4\" cols=\"35\" name=\"tpl_value\">
$data</textarea> 
            </form> 
            " 
        

    } 
اظن الشرح في الكود واضح جدا ومش محتاج تعديل

طيب الان نأتي لمرحلة الحفظ
انا عن نفسي دائما احب أتأكد في برامجي ان المستخدم هو من يقوم بالضغط على زر الفورم
فبالتالي دايما اضع شرط التأكد هذا
وبما اني وضعته فوق فمش محتاج اكتبه مرة تانيه يكفي فقط اني اذكر وانتم في برامجكم لا تنسوا
طيب بعد الضغط على زر الحفظ؟؟
نتأكد من الاخطاء كما نحب
يعني مثلا اذا كان كود القالب خاليا اظهر رسالة خطأ أو اي شروط انت تحب تضيفها
واذا تحققت الاخطاء يظهر رسالة الخطأ واذا لا يتم الحفظ
طيب كيف يتم الحفظ؟؟

اعتقد ان هذي اول دالة تعلمناها في البي اتش بي
اولا نستقبل البيانات كالتالي


كود PHP:
                       $data[name] = $_POST['tpl_name']; // أسم القالب  
$data[value] = $_POST['tpl_value']; // محتوي القالب أو الكود html 
طيب هذي البيانات
الان التعديل

كود PHP:
                       // بعد تجاوز الاخطاء الحفظ كالتالي 
$fp fopen($path."/".$data[name], 'w'); // فتح الملف المعني للكتابة واذا لم يكن موجودا سيقوم البرنامج بانشاؤه 
fwrite($fp$data[value]);// كتابة الكود في القالب  
fclose($fp); //إغلاق الملف 
أعتقد ان الكود ايضا لا يحتاج الى شرح

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

واخير ارجو الاستفاده للجميع
وإن اصبت فمن الله وإن أخطأت فمن نفسي ومن الشيطان
تقبلوا مروري جميعا