الكتابة في سوالف سوفت: لماذا أشارك في منتدى سوالف؟









النتائج 1 إلى 12 من 12
    صفحة جديدة 1
  1. #1
    مشراق غير متواجد حالياً عضو سوبر نشيط
    تاريخ التسجيل
    Aug 2004
    المشاركات
    722
    معدل تقييم المستوى
    9

    هل من طريقة لعمل محرك بحث لقوالب المنتدى

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


    الآلية البرمجية لحذف وتعديل واضافة القوالب لهذا المنتدى مبرمجة بهذا الشكل :

    كود:
    <?php
    
            class STControl
        {
                     var $tdir;     #Template dir
                     var $mainpath; #main file path
                     var $editpath; #edit file path
                     var $addpath;  #add file path
                     var $delpath;  #delete file path
                     var $starteditpath; #start edit file path
                     var $defualtex;     #defualt extension .. example (.tpl)
    
    
                    /*
                    GetTemplate :
                            this function get template name and put it in list
                    */
    
            function GetTemplate()
            {
                              if (is_dir($this->tdir))
                {
                                       if ($dh = opendir($this->tdir))
                    {
                                        echo '<br /><div align="center">';
                                        echo '<table class="border" summary="جدول" cellspacing="1" width="50%">
                                                        <tr>
                                                          <td class="row2" width="60%">اسم القالب</td>
                                                          <td class="row2" width="20%">تحرير</td>
                                                          <td class="row2" width="20%">حذف</td>
                                                        </tr>';
    
                                        while (($file = readdir($dh)) !== false)
                        {
                                                 if ($file == "." or $file == ".." or $file == ".htaccess")
                            {
                                                          continue;
                                                 }
    
                            echo '<tr>
                                                                  <td class="row1">' . $file . '</td>
                                                                  <td class="row1"><a href="' . $this->editpath . '&file=' . $file . '&path=' . htmlspecialchars($_GET['path']) . '">تحرير</a></td>
                                                                  <td class="row1"><a href="' . $this->delpath . '&file=' . $file . '&path=' . htmlspecialchars($_GET['path']) . '">حذف</a></td>
                                                                  </tr>';
    
                                        }
    
                                        echo '</table>';
                                        echo '</div><br />';
    
                        closedir($dh);
                                       }
                              }
                     }
    
            /*
                    EditTemplate :
                            edit form get one parameter and usualy it $D1 , this parameter = file name
                    */
    
                     function EditTemplate($D1,$path)
            {
                    global $SF;
    
                    if (!file_exists($this->tdir . $D1))
                    {
                            $SF->error('الملف المطلوب غير موجود');
                    }
    
                              $fp = file($this->tdir . $D1);
                              $ln = count($fp);
    
                              echo '<table border="0" cellpadding="0" cellspacing="0" width="100%"><tr><td valign="top">';
                              echo '<div dir="rtl" align="center">تحرير القالب ' . $D1 . '</div>';
                              echo '<form method="POST" action="' . $this->starteditpath . '&filename=' . $D1 . '&path=' . $path . '">';
                              echo '<p align="center"><textarea rows="30" name="S1" cols="70" dir="ltr">';
    
                for ($i=0;$i<=$ln;$i++)
                {
                                       echo htmlspecialchars($fp[$i]);
                              }
    
                echo '</textarea>';
                              echo '<br><input type="submit" value="موافق" name="B1" style="font-family: Tahoma; font-size: 8pt"></p>';
                     }
    
                    /*
                    StartEdit :
                            this function will change template code and get one parameter , it is usualy $S1
                            and $S1 = template code
                    */
    
                     function StartEdit($S1,$path)
            {
                              global $filename;
    
                              $S1 = stripslashes($S1);
                              $fp = fopen($this->tdir . $filename,'w+');
                              $fw = fwrite($fp,$S1);
    
                              if ($fw)
                {
                                       echo '<table border="0" cellpadding="0" cellspacing="0" width="100%"><tr><td valign="top">';
                                       $this->msg("حُرِّرَ القالب بنجاح");
                                       $this->goto($this->mainpath . '&path=' . $_GET['path'],'2');
                              }
                     }
    
            /*
                    AddTemplate :
                            this function will show add form
                    */
    
    
    				 function AddTemplate()
    					{ 
    						  include('config.php');
                              global $DB;
    
                              $getstyle_query = $DB->sql_query("SELECT * FROM " . $db_prefix . "style ORDER BY id DESC");
    
                              echo '<form method="POST" action="' . $this->addpath . '">';
                              echo '<table border="0" cellpadding="0" cellspacing="0" width="100%"><tr><td valign="top">';
                              echo '<p dir="rtl" align="center">اسم القالب : ';
                              echo '<input name="T1" type="text" style="font-family: Tahoma; font-size: 8pt">';
                              echo '<br>القالب يعود للستايل التالي : ';
                              echo '
                              <select size="1" name="D1" style="font-family: Tahoma; font-size: 8pt" dir="rtl">
                              ';
                              echo '<option selected value="no">[الستايل]</option>';
    
                while ($getstyle_row = $DB->sql_fetch_array($getstyle_query))
                {
                                       echo '<option value="' . $getstyle_row['template_path'] . '">' . $getstyle_row['style_title'] . '</option>';
                              }
    
                              echo '</select><p align="center"><textarea rows="30" name="S1" cols="70" dir="ltr" style="font-family: Tahoma; font-size: 10pt">';
                              echo '</textarea>';
                              echo '<br><input type="submit" value="موافق" name="B1" style="font-family: Tahoma; font-size: 8pt"></p>';
                     }
    
                    /*
                    StartAdd :
                            this function will add template
                    */
    
                     function StartAdd()
            {
                              global $T1,$S1,$_POST;
    
                              $S1 = stripslashes($S1);
                              $fp = fopen("../" . $_POST['D1'] . "/" . $T1 . $this->defualtex,'w');
                              $fw = fwrite($fp,$S1);
    
                              if ($fw)
                {
                                       echo '<table border="0" cellpadding="0" cellspacing="0" width="100%"><tr><td valign="top">';
                                       $this->msg("أُضيفَ القالب بنجاح");
                                       $this->goto("template.php?edit=1&form=1&path=" . $_POST['D1'],'2');
                              }
                     }
    
                    /*
                    DeleteTemplate :
                            this function will kll template
                            by: bokhalifa -- bo@ib4arab.com
                    */
                     function DeleteTemplate($D1,$path)
                {
                              $fw = unlink("../" . $path . "/" . $D1 . "");
    
                    if ($fw)
                    {
                                       echo '<table border="0" cellpadding="0" cellspacing="0" width="100%"><tr><td valign="top">';
                                       $this->msg("حُذِفَ القالب بنجاح");
                                       $this->goto($this->mainpath . "&path=" . $path,'2');
                              }
                     }
    
                     function msg_die($msg)
                {
                              die('<p align="center" dir="rtl">' . $msg . '</p>');
                     }
    
                     function msg($msg)
                {
                              echo('<p align="center" dir="rtl">' . $msg . '</p>');
                     }
    
                      function goto($site,$m)
                {
                              echo "<META HTTP-EQUIV=\"refresh\" CONTENT=\"$m; URL=$site\">\n";
                     }
            }
    
    ?>

  2. صفحة جديدة 1
  3. #2
    dewan159 غير متواجد حالياً عضو نشيط جدا
    تاريخ التسجيل
    Jan 2008
    المشاركات
    450
    معدل تقييم المستوى
    6
    السلام عليكم ,
    هل تقصد ان يقوم بالبحث عن الملفات من انوع tpl ؟ ...
    كود PHP:
    <?php
    $f 
    scandir("dir");
    echo 
    "<ul>";
    for(
    $z 2$z count($f); $z++){
        if(
    ereg(".tpl",$f[$z])){
        echo (
    "<li>$f[$z]</li>");
        }
    }
    echo 
    "</ul>";
    ?>
    وبالنسبة لباقى العمليات ( حذف , تعديل , اضافة ) استطيع عملها لك !
    انتظر ردك ..
    التعديل الأخير تم بواسطة dewan159 ; 18-03-2008 الساعة 07:04 PM

  4. صفحة جديدة 1
  5. #3
    تاريخ التسجيل
    Mar 2005
    الدولة
    USA
    المشاركات
    942
    معدل تقييم المستوى
    20
    السلام عليكم

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

    Class: Search File Contents - PHP Classes

  6. صفحة جديدة 1
  7. #4
    مشراق غير متواجد حالياً عضو سوبر نشيط
    تاريخ التسجيل
    Aug 2004
    المشاركات
    722
    معدل تقييم المستوى
    9
    dewan159

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

    أخي جواني

    بالفعل افدتني واقتربت نوعا ما
    تم ظهور جميع الملفات التي بصيغة tpl ولم تقم بالبحث بداخلها عن الكلمة او الجملة التي اريدها !! سأستفيد من هذا في البحث عن اسماء القوالب كخيار إضافي لكن لو يظهر نتيجة اسم الملف او القالب المراد فقط لكان افضل ..
    ما اريده بالتحديد ان يتم البحث بداخل هذه الملفات واظهار النتيجة بشكل دقيق عن الكلمة المبحوث عنها واظهار فقط الملفات التي تحتوي بداخلها على هذه الكلمة ..

  8. صفحة جديدة 1
  9. #5
    تاريخ التسجيل
    Mar 2005
    الدولة
    USA
    المشاركات
    942
    معدل تقييم المستوى
    20
    السلام عليكم
    اخي مشراق ..

    يبدو لم تقوم بالطريقة الصحيحة للبحث داخل الملفات ..


    كود PHP:

    //Example :
    echo "<pre>";
    $search = new searchFileContents;
    $search->search('The directory to search''</html>');
    var_dump($search->foundFiles); 
    راح يظهر لك قائمة بروابط الملفات الي وجد فيها النص </hml>

    اطيب تحية

  10. صفحة جديدة 1
  11. #6
    dewan159 غير متواجد حالياً عضو نشيط جدا
    تاريخ التسجيل
    Jan 2008
    المشاركات
    450
    معدل تقييم المستوى
    6
    انت تريد البحث داخل الملفات نفسها .... انا والله لم افهم استفسارك

  12. صفحة جديدة 1
  13. #7
    مشراق غير متواجد حالياً عضو سوبر نشيط
    تاريخ التسجيل
    Aug 2004
    المشاركات
    722
    معدل تقييم المستوى
    9
    انت تريد البحث داخل الملفات نفسها .... انا والله لم افهم استفسارك
    للتوضيح اكثر انا اريد عمل محرك بحث بداخل قوالب الاستايلات
    مشابه لمحرك بحث القوالب الموجود في منتدى الفي بي او منتدى الآي بي ..
    جربت القالب السهل للأخ ضيف لكنه ويبدو ان غير متوافق مع كافة إصدارات php

  14. صفحة جديدة 1
  15. #8
    أشرف السمهوري غير متواجد حالياً مشرف قسم PHP
    تاريخ التسجيل
    May 2007
    المشاركات
    1,644
    معدل تقييم المستوى
    7
    أخي يبدو أنك تجاهلت رد الأخ جواني ؟ حيث أنه أدلى لك بطريقة البحث من خلال الكلاس المذكور ..

  16. صفحة جديدة 1
  17. #9
    مشراق غير متواجد حالياً عضو سوبر نشيط
    تاريخ التسجيل
    Aug 2004
    المشاركات
    722
    معدل تقييم المستوى
    9
    جواني ياعبقري
    بالفعل تمت عملية البحث وقد ظهرت نتائج البحث عن النص بنجاح ..

    لكن
    في هذا الكلاس :
    كود:
    $search->search('C:/AppServ/www/MySmartBB/styles', '</html>');
    يجري البحث بداخل الملفات عن هذا العبارة </html> فقط !

    هل يمكن ربط (search_phrase) عبارة البحث </html>
    بمتغير يتم ربطه بفريم بحث عادي كهذا :

    كود:
    <form method="POST" action="../includes/searchFileContents.php">
    <p dir="rtl" align="center">ابحث :
    <input name="T1" type="text" style="font-family: Tahoma; font-size: 8pt">
    <br><input type="submit" value="ابحث" name="B1" style="font-family: Tahoma; font-size: 8pt"></p>

  18. صفحة جديدة 1
  19. #10
    عبقري العرب غير متواجد حالياً عضو سوبر نشيط
    تاريخ التسجيل
    Nov 2005
    الدولة
    سلطنة عمان
    المشاركات
    774
    معدل تقييم المستوى
    8
    هل يمكن ربط (search_phrase) عبارة البحث </html>
    بمتغير يتم ربطه بفريم بحث عادي كهذا :
    كود:
    $search->search('C:/AppServ/www/MySmartBB/styles', $_POST[T1]);
    أهلا و سهلا بكم في :-
    موقع دار الأوائل
    تفضل معنا خدمات الاستضافة
    موقع العبقري لخدمات الاستضافة

  20. صفحة جديدة 1
  21. #11
    مشراق غير متواجد حالياً عضو سوبر نشيط
    تاريخ التسجيل
    Aug 2004
    المشاركات
    722
    معدل تقييم المستوى
    9
    اقتباس المشاركة الأصلية كتبت بواسطة عبقري العرب مشاهدة المشاركة
    كود:
    $search->search('C:/AppServ/www/MySmartBB/styles', $_POST[T1]);

    عبقري العرب والله انك اسم على مسمى بالفعل

  22. صفحة جديدة 1
  23. #12
    مشراق غير متواجد حالياً عضو سوبر نشيط
    تاريخ التسجيل
    Aug 2004
    المشاركات
    722
    معدل تقييم المستوى
    9
    استفسار آخر بخصوص تنسيق نتائج البحث
    حالياً تظهر لدي بهذا الشكل :
    array(2) { [0]=> string(57) "C:/AppServ/www/MySmartBB/styles/main/templates/header.tpl" [1]=> string(58) "C:/AppServ/www/MySmartBB/styles/smart/templates/header.tpl" }
    الكلاس :
    كود:
    class searchFileContents{
        var $dir_name = '../style';
        var $search_phrase = '$_POST[T1]';
        var $allowed_file_types = array('tpl');
        var $foundFiles;
        var $myfiles;
        
        function search($directory, $search_phrase){
            $this->dir_name = $directory;
            $this->search_phrase = $search_phrase;
            
            $this->myfiles = $this->GetDirContents($this->dir_name);
            $this->foundFiles = array();
            
            if ( empty($this->search_phrase) ) die('لم تقم بكتابة كلمة للبحث');
            if ( empty($this->dir_name) ) die('You must select a directory to search');
            
            foreach ( $this->myfiles as $f ){
                if ( in_array(array_pop(explode ( '.', $f )),  $this->allowed_file_types) ){
                    $contents = file_get_contents($f);
                    if ( strpos($contents, $this->search_phrase) !== false )
                        $this->foundFiles [] = $f;
                }
            }
            return $this->foundFiles;
        }
        
        function GetDirContents($dir){
           if (!is_dir($dir)){die ("Function GetDirContents: Problem reading : $dir!");}
           if ($root=@opendir($dir)){
               while ($file=readdir($root)){
                   if($file=="." || $file==".."){continue;}
                   if(is_dir($dir."/".$file)){
                       $files=array_merge($files,$this->GetDirContents($dir."/".$file));
                   }else{
                   $files[]=$dir."/".$file;
                   }
               }
           }
           return $files;
        }
    }
    
    //Example :
    echo "<style type='text/css' media='all'>
    @import url(../admin/style/css/style.css);
    </style>";
    echo "<br /><body bgcolor='#EEEEEE'><table dir='rtl' class='td' border='1' cellpadding='1' cellspacing='1' width='100%'><tr><td dir='rtl' valign='top'>"; 
    $search = new searchFileContents;
    $search->search('C:/AppServ/www/MySmartBB/styles', $_POST[T1]);
    var_dump($search->foundFiles);
    echo "</td></tr></table>";

    اريدها ان تكون منسقة بشكل افضل وتظهر بهذا الشكل بالمرفقات :
    الصور المرفقة الصور المرفقة  

معلومات الموضوع

الأعضاء الذين يشاهدون هذا الموضوع

الذين يشاهدون الموضوع الآن: 1 (0 من الأعضاء و 1 زائر)

المواضيع المتشابهه

  1. مساعدة , كيفية ارشفة صفحات الموقع تمهيداً لعمل محرك بحث
    بواسطة The Wolf في المنتدى الويب والويب 2.0 والـ Semantic Web
    مشاركات: 7
    آخر مشاركة: 16-04-2007, 10:52 PM
  2. دمج محرك قوقل مع محرك بحث المنتدى
    بواسطة سكر وملح في المنتدى اصلاح وصيانه المنتديات
    مشاركات: 4
    آخر مشاركة: 19-02-2007, 10:15 PM
  3. مشاركات: 1
    آخر مشاركة: 20-11-2006, 07:49 AM
  4. هل من طريقه لعمل محرك بحث بأزرار راديو
    بواسطة TrustWork في المنتدى php
    مشاركات: 10
    آخر مشاركة: 15-02-2005, 07:18 PM
  5. ملاحظات لعمل محرك بحث يتوافق مع العربية
    بواسطة سردال في المنتدى الويب والويب 2.0 والـ Semantic Web
    مشاركات: 29
    آخر مشاركة: 10-10-2004, 11:46 AM

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

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