RightClick

امروز 19 شهريور 1389 11:35

همه زمانها UTC + 3:30 ساعت هستند




ارسال مبحث جديد پاسخ به مبحث [ 13 پست ] 
نويسندهپيغام
 موضوع پست: آموزش کلاس Template
پستارسال شده در: 5 اسفند 1386 2:12 
آفلاين
کاربر حرفه ای
کاربر حرفه ای
نماد کاربر

تاريخ عضويت: 29 تير 1384 20:03
پست ها : 1004
محل سکونت: شيراز
دريافتي: 15 تشكر
رسيده: 36 تشكر
سلام دوستان،
چند تا از دوستان خواسته بودن در مورد طرض کار و استفاده از کلاس Template توضيحاتي بدم. که البته توي اين پست فقط در مورد طرض استفادش توضيح مي دم.

اول کد کلاس رو ببينيد:
اين کلاس رو از يه Counter آلماني کپي زدم.

کد:
<?php
class Template
{
   var $tags = array();
   var $required_tags = array();
   var $blocks = array();
   var $tpl = '';
   var $parsed_tpl = '';

   function Template( $templatefile = '' )
   {
      if( !empty( $templatefile ) )
      {
         if( !file_exists( $templatefile ) )
         {
            print 'Could not find the template file <i>'. $templatefile ."</i>!\n";
            return FALSE;
         }
         $this->load_file( $templatefile );
      }
      return TRUE;
   }

   /*-----------------------------------------------------------------*/
   
   function load_template( $template )
   {
      $this->tpl .= $template;
   }
   
   /*-----------------------------------------------------------------*/
   
   function load_file( $file )
   {
      if( empty( $file ) )
      {
         return FALSE;
      }

      $template = @implode( '', @file( $file ) );
      if( $template == FALSE )
      {
         print 'Could not read the template file!';
         return FALSE;
      }
      $this->tpl .= $template;
   }

   /*-----------------------------------------------------------------*/
   
   function assign( $input, $value = '', $required = FALSE )
   {
      if( is_array( $input ) )
      {
         foreach( $input as $tag => $value )
         {
            if(empty( $tag ) )
            {
               print 'Tag name ist empty!';
               return FALSE;
            }
            if( $required == TRUE )
            {
               $this->required_tags[$tag] = $value;
            }
            else
            {
               $this->tags[$tag] = $value;
            }
         }
      }
      elseif( is_string( $input ) )
      {
         if( empty( $input ) )
         {
            print 'Tag name ist empty!';
            return FALSE;
         }
         else
         {
            if( $required == TRUE )
            {
               $this->required_tags[$input] = $value;
            }
            else
            {
               $this->tags[$input] = $value;
            }
         }
      }
      else
      {
         return FALSE;
      }
      return TRUE;
   }

   /*-----------------------------------------------------------------*/
   
   function add_block($block_name, $block_array)
   {
      if( !is_string($block_name) || empty($block_name))
      {
         print 'Block name is not a string or is empty!';
         return FALSE;
      }
      if( !is_array($block_array))
      {
         print 'Block array is not an array!';
         return FALSE;
      }
      $this->blocks[$block_name][] = $block_array;
   }

   /*-----------------------------------------------------------------*/
   
   function parse()
   {
      if( empty( $this->tpl ) )
      {
         return;
      }

      # blocks
      $tmp_blocknames = array();
      foreach( $this->blocks as $block_name => $block_arrays )
      {
         if( $anzahl = preg_match_all( '/<!-- BEGIN BLOCK '. preg_quote( $block_name, '/' ) .' -->(.*)<!-- END BLOCK '. preg_quote( $block_name, '/' ) .' -->/sU', $this->tpl, $matches ) )
         {
            for( $i = 0; $i < $anzahl; $i++ )
            {
               $block_plus_definition = $matches[0][$i];
               $block = $matches[1][$i];

               if( is_int( strpos( $block, '<!-- IF' ) ) )
               {
                  $parse_control_structures = TRUE;
               }

               $parsed_block = '';
               foreach( $block_arrays as $block_array )
               {
                  $tmp = $block;
                  if( isset( $parse_control_structures ) )
                  {
                     $tmp = $this->_parse_control_structures( $tmp, array_merge( $block_array, $this->tags, $this->required_tags ) );
                  }
                  foreach( $block_array as $tag_name => $tag_value )
                  {
                     $tmp = str_replace( '{'.$tag_name.'}', $tag_value, $tmp );
                  }
                  $parsed_block .= $tmp;
               }
               $this->tpl = str_replace( $block_plus_definition, $parsed_block, $this->tpl );
               $tmp_blocknames[] = $block_name;
               unset( $parse_control_structures );
            }
         }
      }
      if( count( $this->blocks ) > 0 )
      {
         $this->tpl = preg_replace( "/<!-- (BEGIN|END) BLOCK (". implode( '|', $tmp_blocknames ) .") -->/", '', $this->tpl );
      }

      # unbenutze blِcke entfernen
      $this->tpl = preg_replace( "/<!-- BEGIN BLOCK ([a-zA-Z0-9_-]+) -->.*<!-- END BLOCK \\1 -->(\r\n|\r|\n)?/msU", '', $this->tpl );

      # single tags
      foreach( $this->required_tags as $tag_name => $tag_value )
      {
         if( !is_int( strpos( $this->tpl, $tag_name ) ) )
         {
            print 'Could not find tag <i>'.$tag_name.'</i> in the template file!';
            return FALSE;
         }
         else
         {
            $this->tpl = str_replace( '{'.$tag_name.'}', $tag_value, $this->tpl );
         }
      }
      foreach( $this->tags as $tag_name => $tag_value )
      {
         $this->tpl = str_replace( '{'.$tag_name.'}', $tag_value, $this->tpl );
      }

      # if & else
      $this->tpl = $this->_parse_control_structures(
         $this->tpl,
         array_merge( $this->tags, $this->required_tags ),
         $this->blocks
      );


      $this->parsed_tpl = $this->tpl;
      $this->tpl = '';
   }

   /*-----------------------------------------------------------------*/
   
   function print_template()
   {
      if( !empty( $this->tpl ) )
      {
         $this->parse();
      }
      print $this->parsed_tpl;
   }
   
   /*-----------------------------------------------------------------*/
   
   function get_tpl_as_var()
   {
      if( !empty( $this->tpl ) )
      {
         $this->parse();
      }
      return $this->parsed_tpl;
   }   
   
   /*-----------------------------------------------------------------*/
      
   function free()   
   {
      $this->tpl = '';
      $this->parsed_tpl = '';
      $this->tags = array();
      $this->required_tags = array();
      $this->blocks = array();
   }
   
   /*-----------------------------------------------------------------*/
   
   function _parse_control_structures( $tpl, $vars, $blocks = array() )
   {
      if( $matchnumber = preg_match_all( '/<!-- IF (!?)((BLOCK )?)([_a-zA-Z0-9\-]+) -->(.*)((<!-- ELSEIF !\(\\1\\2\\4\) -->)(.*))?<!-- ENDIF \\1\\2\\4 -->/msU', $tpl, $matches ) )
      {
         for( $i = 0; $i < $matchnumber; $i++ )
         {
            //print( $matches[8 ][$i] . '<br />');
            if( !empty( $matches[2][$i] ) )
            {
               $code = 'if( '.$matches[1][$i].'isset($blocks[\''.$matches[4][$i].'\']) )'."\n";
            }
            else
            {
               $code = 'if( '.$matches[1][$i].'( isset($vars[\''.$matches[4][$i].'\']) ) )'."\n";
            }
            $code .= '{ $tpl = str_replace( $matches[0][$i], $this->_parse_control_structures( $matches[5][$i], $vars, $blocks ), $tpl ); }'."\n";
            $code .= ' else '."\n";
            $code .= '{ $tpl = str_replace( $matches[0][$i], !empty($matches[7][$i]) ? $this->_parse_control_structures( $matches[8][$i], $vars, $blocks ) : \'\', $tpl ); }';
            eval( $code );
         }
      }
      return $tpl;
   }
}
?>


خوب اول طرض استفادش:
براي اين کار يه مثال ميزنم
فرض کنيد کد بالا رو توي يه فايل به نام Template.php ذخيره کرديم و يه فايل به نام index.php داريم که برنامه اصليمون هست و يه Folder به نام Tpls داريم که تمامي قالب هامون توي اونه، فعلا يه قالب به نام body.html داريم.

گام اول- محتويات فابل index.php :
کد:
<?php

   include('Template.php');

   $MyTpl = new Template();
   $MyTpl -> load_file( 'Tpls/body.html' );
   
   $MyTpl -> print_template();
   
?>


و محتواي body.html:

کد:
<html>
   <head></head>
   <body>

      <p align="left">
         Name:
         <font color="#0000FF">
            <b>
               Ahmad
            </b>
         </font>
      </p>

   </body>
</html>


توضيح گام اول:
در کل يه فايل template رو باز مي کنيم و اونو نمايش مي ديم.
body.html که يه صفحه ساده HTML هست.
توي index.php خط اول که فايل حاوي کلاس Template رو include کرديم.
خط بعد يه Object جديد از اين کلاس رو تعريف کرديم با نام MyTpl :
کد:
$MyTpl = new Template();


خط بعد فايل قالب رو Load کرديم:
کد:
$MyTpl -> load_file( 'Tpls/body.html' );

دقت کنيد که نام و پسوند فايل قالب اصلا مهم نيست چي باشه. من براي راحتي پسوندش رو HTML گرفتم.

خط بعد کل قالب رو چاپ کرديم:
کد:
$MyTpl -> print_template();


خوب اين از گام اول بريم سراغ گام بعد...
ما قالب ها رو مي سازيم که کد HTML رو از کد PHP جدا کنيم و کارمون تميزتر باشه. ولي بايد بتونيم توي قالب تغييرات ايجاد کنيم.

توي اين کلاس چيزهايي که توي کد HTML مربوط به قالب با داده هاي توليد شده در کد PHP جايگزين مي شوند بين {} قرار مي گيرند. مثل قالب وبلاگ ها که چيزايي مثل اين دارند <**> ، <##> ، [] , ...

مثال:
محتويات body.html:
کد:
<html>
   <head></head>
   <body>

      <p align="left">
         Name:
         <font color="#0000FF">
            <b>
               {TheVarName}
            </b>
         </font>
      </p>

   </body>
</html>


در اينجا TheVarName که در ميان {} قرار گرفته است در کد php با داده توليد شده جايگزين مي شه. توجه کنيد که اين کلاس به حروف بزرگ و کوچک حساس است.

کد index.php:
کد:
<?php

   include('Template.php');

   $MyTpl = new Template();
   $MyTpl -> load_file( 'Tpls/body.html' );
   
   if( 1 > 2 )
   {
   
      $Name = 'Ahamad';
   
   } else {
   
      $Name = 'Mohsen';

   }
   
   $MyTpl -> assign( 'TheVarName' , $Name );
   
   $MyTpl -> print_template();
   
?>


خوب همون طور که مي بينيد يه خط جديد داريم:
کد:
$MyTpl -> assign( 'TheVarName' , $Name );


با صدا زدن اين Method توي قالب Load شده هر جا که {TheVarName} ديد اون رو با محتويات متغير Name جايگزين مي کنه.
اگه چند تا متغير داشتيم مي تونيم اين Method رو چند بار Call کنيم ولي يه راه ساده تر هم هست و اون اينه که ورودي آرايه بهش بديم اين طوري:

محتويات body.html:
کد:
<html>
   <head></head>
   <body>

      <p align="left">
         First name:
         <font color="#0000FF">
            <b>
               {FrstName}
            </b>
         </font>
      </p>
      <p align="left">
         Last name:
         <font color="#0000FF">
            <b>
               {LstName}
            </b>
         </font>
      </p>

   </body>
</html>


محتويات index.php:

کد:
<?php

   include('Template.php');

   $MyTpl = new Template();
   $MyTpl -> load_file( 'Tpls/body.html' );
   
   
   $FName = 'Maryam';
   $LName = 'Hamedi';
   
   $NamesArray = array( 'FrstName' => $FName,  'LstName' => $LName);
   
   $MyTpl -> assign( $NamesArray );
   
   $MyTpl -> print_template();
   
?>


معمولا براي راحتي آرايه رو مستقيما توي ورودي Method تعريف مي کنيم و به يه شکل تميز تر مي نويسيم. براي اين که توي متغير هاي زياد قاطي نکنيم يعني اين طوري:

کد:
   $FName = 'Maryam';
   $LName = 'Hamedi';
   
   $MyTpl -> assign( array(
      
      'FrstName' => $FName,
      'LstName' => $LName
      
      )
   );
   //End of assign template vars -->
گام بعد- IF در قالب.
بعضي وقتا مي خواييم با توجه به شرايطي قسمت هايي از قالبتون نمايش داده نشه. مثال:
کد قالب:

کد:
<html>
   <head></head>
   <body>

      <p align="left">
         First name:
         <font color="#0000FF">
            <b>
               {FrstName}
            </b>
         </font>
      </p>
      
      <!-- IF LstNameCond -->
      
      <p align="left">
         Last name:
         <font color="#0000FF">
            <b>
               {LstName}
            </b>
         </font>
      </p>
      
      <!-- ENDIF LstNameCond -->

   </body>
</html>

توي کد قالب به <!-- IF LstNameCond --> و <!-- ENDIF LstNameCond --> دقت کنيد که يک شرط رو بيان مي کنند LstNameCond عنوان دلخواهي براي شرط هست. خوب کد php:

کد:
   $MyTpl -> assign( array(
      
      'FrstName' => $FName,
      'LstName' => $LName,
      'LstNameCond' => 1
      
      )
   );
   //End of assign template vars -->


طبق شرط بالا محتويات ميان IF نمايش داده مي شوند. توجه کنيد که به جاي عدد 1 هرچيز ديگري مي تواند باشد حتي 0 يا false، اما براي عدم نمايش کافيه که توي ليست assign نباشه. مثل اين:
کد:
   $MyTpl -> assign( array(
      
      'FrstName' => $FName,
      'LstName' => $LName,
      //'LstNameCond' => 1
      
      )
   );
   //End of assign template vars -->


گام بعد- تکرار کد HTML.
فک کنم مهمترين قسمت اينجا باشه که ما مي خواهيم يه تعداد داده رو با قالب يکسان زير هم چاپ کنيم. براي اين کار به کد زير توجه کنيد:
کد قالب:
کد:
<html>
   <head></head>
   <body>

      <p align="left">
         #-
         Name
      </p>
      
      <!-- BEGIN BLOCK MyBlock -->
      
      <p align="left">
         {Row}-
         <b>
            {Name}
         </b>
      </p>
      
      <!-- END BLOCK MyBlock -->

   </body>
</html>


توي اين کد هم دوقسمت به نام هاي <!-- BEGIN BLOCK MyBlock --> و <!-- END BLOCK MyBlock --> به چشم مي خوره ... هر چي بين اين دو Tag باشه تکرار مي شه مثل وبلاگ ها که براي نمايش پست ها معمولا اسم خود سرويس دهنده وبلاگ رو مي ذارن. MyBlock نام اين قسمت هست که دلخواهه.

کد php:

کد:
<?php

   include('Template.php');

   $MyTpl = new Template();
   $MyTpl -> load_file( 'Tpls/body.html' );
   
   
   $Names = array( 'Ali', 'Morteza', 'Javad' , 'Maryam', 'Ehsan' , 'Fatemeh' , 'Ahmad');
   $TotalRecords = count( $Names);
   
   for( $Index = 0 ; $Index != $TotalRecords ; $Index++ )
   {
      $MyTpl -> add_block('MyBlock',  array(

         'Row' => $Index + 1,
         'Name' => $Names[ $Index ],
         
         )
      );
      //End of assign template vars -->
   }
   
   $MyTpl -> print_template();
   
?>


براي اين که پيچيده نشه پاي DataBase رو وسط نکشيدم. فرض کنيد داده هاي ما توي آرايه Names هست و تعداد Record هامون هم توي TotalRecords هست. به ازاي هر تکرار داده بايد متد add_block رو صدا بزنيم و همين طور که مي بينيد داده ها رو بهش اختصاص بديم.

نکات قابل توجه:
1- ما ميتونيم مستقيما کدهاي HTML توليد شده رو چاپ نکنيم ... مثلا شايد بخواييم براي خبرناممون يه قالب داشته باشيم و اين رو بايد Mail کنيم. براي اين کار يه Method ديگه وجود داره که محتواي توليد شده رو بر مي گردونه:

کد:
$HtmlCode = $MyTpl -> get_tpl_as_var();


2- ما به هر تعداد که بخواييم مي تونيم قالب Load کنيم. يعني متد load_file رو مي تونيم به هر تعداد براي قالب هاي مختلف Call کنيم، تمام قالب ها مثل رشته اي پشت سر هم قرار مي گيرند.
کاربرد: براي جاهايي استفاده مي شه که مثلا شما يه Header و Footer ثابت داريد و فقط قسمت وسط صفحه عوض مي شه، مثل همين صفحه انجمن. مثال:

کد:
<?php

   include('Template.php');

   $MyTpl = new Template();
   $MyTpl -> load_file( 'Tpls/Header.html' );
   
   ...
   
   switch ( $Action)
   {

      case 'Login': $Page = 'Login.html'; break;
      
      case 'Logout': $Page = 'Logout.html'; break;
      
      case 'Contacts': $Page = 'Contacts.html'; break;
      
      case 'ContactsSent': $Page = 'ContactsSent.html'; break;
      
      default   $Page = 'Index.html';

   }
   
   $MyTpl -> load_file( 'Tpls/' . $Page ); //Load the Body of page
   
   ...
   
   $MyTpl -> load_file( 'Tpls/Footer.html' );   
   $MyTpl -> print_template();
   
?>


فقط توي اين قسمت بايد دقت کنيد که چون اين صفحات پشت سر هم مي آيند توي کد هاي HTML قاطي نشه که از تگ هاي HTML, Head , Body و ... هر کدوم 3 تا وجود داشته باشه.

خوب دوستان عزيز، من ديگه برم بخوابم.
اگه جاييش خوب توضيح داده نشده، بگيد تا بهتر توضيح بدم.
از اين که دير شد از همتون عذر مي خوام، ان شاء ا... بتونم بيشتر فعال باشم.

با آرزوي موفقيت و سربلندي براي تمامي عزيزان. :kuss:

_________________
به جان زنده دلان، سعدیا، ملک وجود --- نیرزد آن که دلی را ز خود بیازاری


بالا
 مشخصات  
 
اين كاربر تشكر كرده mojtabaبراي پست:
rsh_eboy

 موضوع پست:
پستارسال شده در: 7 اسفند 1386 16:21 
آفلاين
کاربر فعال انجمن
کاربر فعال انجمن
نماد کاربر

تاريخ عضويت: 6 تير 1385 8:11
پست ها : 770
محل سکونت: اصفهان
دريافتي: 0 تشكر
رسيده: 5 تشكر
کارت درسته
ممنون... :D

_________________
چيزي رو كه دوست داري بدست بيار ... وگرنه مجبوري چيزي رو كه بدست مياري دوست داشته باشي
Chonoo.Com


بالا
 مشخصات  
 
 موضوع پست:
پستارسال شده در: 9 اسفند 1386 13:07 
آفلاين
کاربر فعال انجمن
کاربر فعال انجمن
نماد کاربر

تاريخ عضويت: 6 تير 1385 8:11
پست ها : 770
محل سکونت: اصفهان
دريافتي: 0 تشكر
رسيده: 5 تشكر
فکر کنم مجتبي جان يادش رفته راجه به تابع free در اين TemplateEngine توضيح بدهند، که من توضيحش را مي دهم که آموزش کامل بشود...

تابع freeرا وقتي از داخل Class صدا بزيد، شي شما را reset مي کند (همه ي تنظيمات و بلاک هاي اضافه شده و ... از بين مي رود) و بايد دوباره همه چيز را مقدار دهي کنيد ... از تعيين قالب گرفته تا ...

موفق و پيروز باشيد :wink:

_________________
چيزي رو كه دوست داري بدست بيار ... وگرنه مجبوري چيزي رو كه بدست مياري دوست داشته باشي
Chonoo.Com


بالا
 مشخصات  
 
اين كاربر تشكر كرده mahdiبراي پست:
rsh_eboy

 موضوع پست:
پستارسال شده در: 9 اسفند 1386 17:50 
آفلاين
اگه نباشه جاش خاليه
اگه نباشه جاش خاليه

تاريخ عضويت: 16 تير 1385 21:26
پست ها : 116
دريافتي: 0 تشكر
رسيده: 0 تشكر
از آقا مجتبي و آقا مهدي عزيز ممنون ام از بابت اين آموزش خوبتون :kuss:


بالا
 مشخصات  
 
 موضوع پست: باز گشايي دوباره مبارك
پستارسال شده در: 4 فروردين 1387 20:10 
آفلاين
داره خودمونی میشه
داره خودمونی میشه

تاريخ عضويت: 28 مرداد 1385 12:38
پست ها : 23
دريافتي: 0 تشكر
رسيده: 0 تشكر
سلام .
چطوري ميشه اين تگ ها رو هر چي خواستيم بزاريم مثل <!-- BEGIN BLOCK MyBlock --> رو بكنيك <halghe> ....
تو نستم متغير ها رو اينكاري بكنم اما حلقه ها و شرط ها رو نشد ...
لطفا راهنمايي كنيد .
----------------------------------
از اينكه دوباره اينجا به راهه خيلي خوشحالم ... يه مدت كار نمي كرد ...
در ضمن فكر مي كنم اين دامنه هاي اي آر يه مشكلي داشته باشن ... شايد هم مشكل هاستت باشه چون من بايد چندين بار براي باز كردن سايتت اونو رفرش كنم ..


بالا
 مشخصات  
 
 موضوع پست:
پستارسال شده در: 5 فروردين 1387 9:04 
آفلاين
کاربر حرفه ای
کاربر حرفه ای
نماد کاربر

تاريخ عضويت: 29 تير 1384 20:03
پست ها : 1004
محل سکونت: شيراز
دريافتي: 15 تشكر
رسيده: 36 تشكر
سلام،
عزيزم نياز به پيام خصوصي نيست، من خودم اگه بتونم حتما به سايت سر ميزنم.

اينا رو برات پيدا کردم:

http://www.forum.rightclick.ir/topic-218.html
http://www.forum.rightclick.ir/post-551.html#551
http://rightclick.ir/downloads/regex_pdf

موفق باشي.

_________________
به جان زنده دلان، سعدیا، ملک وجود --- نیرزد آن که دلی را ز خود بیازاری


بالا
 مشخصات  
 
 موضوع پست:
پستارسال شده در: 12 شهريور 1387 4:34 
آفلاين
تازه وارد
تازه وارد
نماد کاربر

تاريخ عضويت: 21 مرداد 1387 21:10
پست ها : 16
دريافتي: 0 تشكر
رسيده: 0 تشكر
آقا مجتبي ممنون واقعا پکندي :kuss:
دستتون از اين آموزش درد نکنه فقط اگه ميشه يه مثال براي ديتبايس بزنيد هرچه سريع تر بدين ممنون مي شم :wink:
آقا مهدي از شما هم ممنونم :kuss:

_________________
ویکتور هوگو:صالح ترین فرزندان آنها هستند که با اعمال خود باعث افتخار پدر و مادر خود شوند


بالا
 مشخصات  
 
 موضوع پست:
پستارسال شده در: 12 شهريور 1387 10:12 
آفلاين
کاربر فعال انجمن
کاربر فعال انجمن

تاريخ عضويت: 30 مرداد 1386 12:49
پست ها : 467
محل سکونت: اصفهان
دريافتي: 38 تشكر
رسيده: 88 تشكر
سلام،
با اجازه!:D
مثال ديتابيس:
کد:
<?
$T = new Template();
$T->load_file("File_Name");
$Query = mysql_query("SELECT * FROM `Table_Name`");
  while($Rslt = mysql_fetch_array($Query)) {
   $Field = $Rslt['fiel_name'];
$T->add_block("post", array("field" => $Field));
   }
$T->print_template();
?>

آخه اين با مثالي که مجتبي زده چه فرقي داره! :shock:
بهتر بود خودت...!
موفق باشي. :wink:

_________________
http://bur.a20.ir
http://abbasali.ir


بالا
 مشخصات  
 
اين كاربر تشكر كرده abbasبراي پست:
rsh_eboy

 موضوع پست: Re: آموزش کلاس Template
پستارسال شده در: 30 مرداد 1388 1:52 
آفلاين
کاربر فعال انجمن
کاربر فعال انجمن
نماد کاربر

تاريخ عضويت: 8 تير 1387 16:57
پست ها : 511
محل سکونت: مشهد مقدس
دريافتي: 128 تشكر
رسيده: 62 تشكر
سلام
این کلاس خیلی باحاله فقط نمی دونم چرا وقتی تکرار زیاد می شه گاهی عملکرد کل کلاس بهم می ریزه!البته هنوز دقیقا نفهمیدم این مشکل کی ها پیش می آد تا دنبال راه حل برم چون یک بار که تست کردم یک متن طولانی رو نزدیک 100 بار تو یک بلوک جایگزین کردم و مشکلی پیش نیومد اما یک بار هم تو یک بلوک با جایگزنی یک متن کوتاه به تعداد تقریبا 20 تا کلاس کار نکرد :?
اگه کسی متوجه این مشکل شده و اونو حل کرده دستش رو بالا کنه :kuss:
موفق باشید :wink:

_________________
خود پسندی مانع آموختن است.:: امام علی (ع) ::.
سیستم جامع و هوشمند افزایش آمار مجیک -
شبكه آموزش پارسيان - سیستم مدیریت محتوای ایرانی راش
عشق من = rightclick


بالا
 مشخصات  
 
 موضوع پست: Re: آموزش کلاس Template
پستارسال شده در: 30 مرداد 1388 11:03 
آفلاين
اگه نباشه جاش خاليه
اگه نباشه جاش خاليه
نماد کاربر

تاريخ عضويت: 16 اسفند 1386 13:12
پست ها : 231
محل سکونت: بابل
دريافتي: 8 تشكر
رسيده: 12 تشكر
سلام رضا جا برای منم شدش بیشتر هم موقعه نظرات می شد مثلا نظرات تو یه صفحه به 20 میرسد خراب می شد یعنی طوری می شد تمام پیغام هایی که تو صفحه بود رو نشون می داد
من فقط تونستم اون قسمت رو صفحه بندیش کنم با صفحه بندی مشکلش حل شد

http://www.link.baboli.ir

_________________
بازارکار و خبرگذاری بابلی
http://www.baboli.ir


بالا
 مشخصات  
 
 موضوع پست: Re: آموزش کلاس Template
پستارسال شده در: 30 مرداد 1388 11:27 
آفلاين
داره خودمونی میشه
داره خودمونی میشه
نماد کاربر

تاريخ عضويت: 31 مرداد 1385 13:26
پست ها : 44
دريافتي: 0 تشكر
رسيده: 3 تشكر
rsh_eboy نوشته است:
سلام
اين کلاس خيلي باحاله فقط نمي دونم چرا وقتي تکرار زياد مي شه گاهي عملکرد کل کلاس بهم مي ريزه!البته هنوز دقيقا نفهميدم اين مشکل کي ها پيش مي آد تا دنبال راه حل برم چون يک بار که تست کردم يک متن طولاني رو نزديک 100 بار تو يک بلوک جايگزين کردم و مشکلي پيش نيومد اما يک بار هم تو يک بلوک با جايگزني يک متن کوتاه به تعداد تقريبا 20 تا کلاس کار نکرد :?
اگه کسي متوجه اين مشکل شده و اونو حل کرده دستش رو بالا کنه :kuss:
موفق باشيد :wink:

سلام
منم در یک پروژه که نوشتم دقیقا با همین مشکل مواجه شدم
بعضی وقتا تعداد بلوک که زیاد میشه همه المنت های صفحه رو نشون میده! و نتونستم راه حلی برای اون پیدا کنم... جالب اینه که این مشکل برای من روی اینترنت پیش می اومد و روی LocalHost به درستی کار می کرد!
بنابراین پس از تحقیقات زیاد تصمیم گرفتم که از smarty استفاده کنم
موفق باشید

_________________
تا پرسپوليس هست زندگي بايد كرد ...
به وب سايت قاسم پرسپوليسي سر بزنيد ...
http://wWw.FcPersepolis.Ir


بالا
 مشخصات  
 
 موضوع پست: Re: آموزش کلاس Template
پستارسال شده در: 30 مرداد 1388 13:40 
آفلاين
کاربر فعال انجمن
کاربر فعال انجمن
نماد کاربر

تاريخ عضويت: 8 تير 1387 16:57
پست ها : 511
محل سکونت: مشهد مقدس
دريافتي: 128 تشكر
رسيده: 62 تشكر
سلام
آره دقيقا همينطور هست!منم رو لوکال به مشکل بر نخوردم ولي فکر نکنم ربطي داشته باشه...
به هر حال يک دليلي داره!من در اولين فرصت کد رو کاملا بررسي مي کنم بقيه دوستان هم اگه متوجه چيزي شدند بگند :kuss:
در مورد smarty هم اينقدر حديث شنيدم که يکي مي گفت خوبه و يکي مي گفت بده که کلا بي خيالش شدم! :shock:
موفق باشيد :wink:

_________________
خود پسندی مانع آموختن است.:: امام علی (ع) ::.
سیستم جامع و هوشمند افزایش آمار مجیک -
شبكه آموزش پارسيان - سیستم مدیریت محتوای ایرانی راش
عشق من = rightclick


بالا
 مشخصات  
 
 موضوع پست: Re: آموزش کلاس Template
پستارسال شده در: 31 مرداد 1388 15:46 
آفلاين
کاربر فعال انجمن
کاربر فعال انجمن
نماد کاربر

تاريخ عضويت: 8 تير 1387 16:57
پست ها : 511
محل سکونت: مشهد مقدس
دريافتي: 128 تشكر
رسيده: 62 تشكر
سلام
فهميدم گير کار کجاست و چرا گاهي گير مي ده....
مشکل اصلي روي شرط if هست
اگه شرط if رو درست تموم نکنيم اين مشکل پيش مي اد...
البته مشکل اصلي تو اينه که نميشه شرط تو شرط استفاده کرد...
يعني اگه اينجوري بذاريم گير مي ده
کد:
<!--IF TEST -->

<!--IF TEST1 -->

<! END IF TEST1 -->

<! END IF TEST -->

فکر کنم اگه لازم باشه کل بخش مورد نظر تو کلاس رو بايد اديت کرد :shock:
البته واسه تکرار پایین مثلا 5 تا این مشکل پیش نمیاد!چرا؟!
موفق باشيد :wink:

_________________
خود پسندی مانع آموختن است.:: امام علی (ع) ::.
سیستم جامع و هوشمند افزایش آمار مجیک -
شبكه آموزش پارسيان - سیستم مدیریت محتوای ایرانی راش
عشق من = rightclick


بالا
 مشخصات  
 
نمايش پست ها از پيشين:  مرتب سازي بر اساس  
ارسال مبحث جديد پاسخ به مبحث [ 13 پست ] 

همه زمانها UTC + 3:30 ساعت هستند


چه کسي حاضر است ؟

کاربران حاضر در اين انجمن: بدون کاربران عضو شده و 0 مهمان


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

جستجو براي:
پرش به:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Persian Translation By : www.Maghsad.com