دريافت Firefoxشما از نسخه ساده رايت کليک استفاده مي نماييد. براي ديدن نسخه پيشرفته رايت کليک، در صورت استفاده از يک مرورگر استاندارد، [ اينجا ]کليک نماييد.

آخرين عناوين ارسالي به انجمن ها
لينک هاي دوستان
به دليل حجم زياد فقط تعدادي به صورت تصادفي نمايش داده شده اند.
آموزش کلاس Template
1 , 2بازديد ها: 8901, پاسخ ها: 22
Re: آموزش کلاس Template
توسط rsh_eboy در 7 مهر 1389 - 20:42 ، پست ها: 541
bluefox عزيز لطف كد ها رو در تگ
کد: انتخاب همه
[code]
[/code]

بذار تا خوانا باشند :kuss:
[ تبليغات ] سیستم تبلیغات تصویریسیستم تبلیغات تصویری
Re: آموزش کلاس Template
توسط HamedAli در 22 مهر 1389 - 11:55 ، پست ها: 13
من خیلی با این روش کیف نمی کنم چون به نظر من کلا بعد که بخواهیم داخل برنامه سیستم مدیریت تمپلیت بنویسیم خیلی سخت می شود به نظر من بهتره تمپلیت داخل دیتابیس ذخیره بشود و از اونجا فراخوانی بهشه و یک سیستم cashe خیلی ساده هم می تواند برای کم کردن تعداد کوئری کافی باشه.
Re: آموزش کلاس Template
توسط mojtaba در 1 آبان 1389 - 9:43 ، پست ها: 1007
کاملا موافقم
حتی میشه بعد از این که process کردیم اونو cache کنیم که بهتر هم بشه، که البته phpbb3 همین کارو میکنه البته با فایل.
بچه ها دست به کار شین. :-)
Re: آموزش کلاس Template
توسط HamedAli در 1 آبان 1389 - 11:11 ، پست ها: 13
نظر من هم دقیقا همین هست یعنی بعد از این که پردازش انجام شد cashe کنیم و حالا می تونیم یک سیستم هم برای clear داشته باشیم علاوه بر آن می توانیم شرط و حلقه و... را هم در سیستم تعریف کنیم مثلا برای شرط می تونیم از
کد: انتخاب همه
{if $login ==1}
Welcome , user
{else}
You need to login?
{/if}

استفاده کنیم
فکر می کنم یک کلاس ساده می تونه این کار را انجام بدهد من یک سری کد نوشتم ولی خوب هنوز روی cache کار نکرردهم البته وقت هم نشد.
ولی اگر وقت شد و تمام شد قرارش می دهم.

mojtaba نوشته:کاملا موافقم
حتي ميشه بعد از اين که process کرديم اونو cache کنيم که بهتر هم بشه، که البته phpbb3 همين کارو ميکنه البته با فايل.
بچه ها دست به کار شين. :-)
Re: آموزش کلاس Template
توسط rsh_eboy در 2 آبان 1389 - 0:28 ، پست ها: 541
با كش كردن شديدا موافقم
Smarty يك انجين خيلي قوي داره ، فرصت كنم حتما يك دور كاملش تجزيه تحليلش مي كنم تا بتونم يك كلاس حرفه اي براي كش كردنش هم بنويسم.
مجتبي جان بابت قالب ممنون ولي 2 كار مهم مونده :
1.سي اس اس رو يكم ويرايش كن مثلا يكاري كن اين كدهاي وقتي خيلي پر عرض هستند صفحه بزرگ نشه
2.تشكر رو مجددا نصب كن :دي
Re: آموزش کلاس Template
توسط bluefox در 25 آبان 1389 - 16:25 ، پست ها: 15
کد: انتخاب همه
class Template{

   private $variable = array();private $tag = array();
   private $tpl=""; private $base_tpl = "";

   function __construct($templatefile = ''){
      if((!file_exists($templatefile))and($templatefile=='')){
         print 'Error in load template <i>'. $templatefile ."</i>!\n";
         return false;
      }
      $this->base_tpl=(file_exists($templatefile)) ? implode("",(file($templatefile))) : $templatefile;
      return true;
   }

   function Add_Variable($input, $value = ''){ 
      if(is_array($input))foreach($input as $tag => $value)$this->variable[$tag] = $value;
      if(is_string($input)) $this->variable[$input] = $value;
   }

   function Add_Tag($block_name, $block_array=array()){$this->tag[$block_name][]= $block_array;}
   
   private function Parse_If($tpl,$variable,$erase=false){
      foreach($variable as $key=>$value)
      if (preg_match("/<IF:$key>(.*)<\/IF:$key>/sUi",$tpl))$tpl=str_replace(array("<IF:$key>","</IF:$key>"),array("",""),$tpl);

      if ($erase==true)preg_match_all("/<IF:(.*)>/sUi",$tpl,$emtyif);
      if (isset($emtyif[1]) && is_array($emtyif[1]))foreach($emtyif[1] as $iferr)$tpl=preg_replace("/<IF:$iferr>.*<\/IF:$iferr>/sUi","",$tpl);
      return $tpl;
   }

   private function Parse_Tag(){
      foreach($this->tag as $tag_name => $tag_var){
         $tmp=array();preg_match_all("/<Tag:$tag_name>(.*)<\/Tag:$tag_name>/sUi",$this->tpl,$all_tag);
         foreach($tag_var as $tag_row){
            if(isset($all_tag[1]))foreach($all_tag[1] as $kk=>$tag_text){
               foreach($tag_row as $key=>$value)$tag_text=str_replace("#-$key-#",$value,$tag_text);
               $tmp[1][$kk]=(isset($tmp[1][$kk]))? $tmp[1][$kk].$this->Parse_If($tag_text,$tag_row,false) : $this->Parse_If($tag_text,$tag_row,false);
               $tmp[0][$kk]=$all_tag[0][$kk];
            }
         }
         if(isset($tmp[0]))$this->tpl=str_replace($tmp[0],$tmp[1],$this->tpl);
      }

      preg_match_all("/<Tag:(.*)>/sUi",$this->tpl,$emtytag);
      if (isset($emtytag[1]) && is_array($emtytag[1]))foreach($emtytag[1] as $tagerr)$this->tpl=preg_replace("/<Tag:$tagerr>.*<\/Tag:$tagerr>/sUi","",$this->tpl);
   }

   private function Parse_Variable(){
      foreach($this->variable as $key=>$value)$this->tpl=str_replace("#-$key-#",$value,$this->tpl);
      $this->tpl=preg_replace("/#-.*-#/i","",$this->tpl);
   }
   
   function Parse_Template(){
      $this->tpl=$this->base_tpl;
      $this->Parse_Tag();
      $this->tpl=$this->Parse_If($this->tpl,$this->variable,true);
      $this->Parse_Variable();
      $this->tpl=(@func_get_arg(0)==true) ? $this->tpl : preg_replace("/<\?.*\?>/isU","",$this->tpl);
      return $this->tpl;
   }

   function Run(){eval(" ?>".$this->Parse_Template(true)."<?php ");}

}

تگها مجدا يه کوچولو تغيير کردن :

کد: انتخاب همه
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>#-title-#</title>
</head>

<body>


<IF:if1>
شرط صحيح
</IF:if1>


<Tag:tage1>
Tage1 #-Num-#<br />
</Tag:tage1>

اجراي دستورات php در صورت استفاده از تابع Run()
<?php print time() ;?>

<Tag:tage1>
NewTage1 #-Num-#<br />
</Tag:tage1>

</body>
</html>



براي اجرا :
کد: انتخاب همه
<?php
   $MyThm=new Template('newtheme.html');
   $MyThm->Add_Variable("title","عنوان صفحه");
   $MyThm->Add_Tag("tage1",array("Num"=>time()));
   
   print $MyThm->Run();
?>
Re: آموزش کلاس Template
توسط imanmoodi در 22 دي 1389 - 0:32 ، پست ها: 1
سلام بچه ها
اگه ميشه يكم راهنمايي كنيد كه چه طوري بايد كدهاي قالب را به جاي اينكه توي يه فايل قرار داد آنها را در ديتا بيس ذخيره كرد و مورد استفاده قرار داد ؟
خيلي بهش نياز دارم ممنون ميشم كمك كنيد
Re: آموزش کلاس Template
توسط webm_67 در 29 دي 1389 - 13:51 ، پست ها: 54
bluefox نوشته:
کد: انتخاب همه

<IF:if1>
شرط صحيح
</IF:if1>



من يک مشکل توي استفاده از اين کد ها دارم، اونم توي شرط هست!!! چطوري بايد از شرط استفاده کرد؟ يعني چطور مي شه شرط رو True يا False کرد؟ يا يه جورايي مقدار شرط رو بررسي کرد؟

من می خوام توی قالب هایی که طراحی می کنن یکسری کد رو فیلتر کنم (مثل کدهای php که یکسری تگ های خواص داره مثل این : <?php و ?> و یا اینکه تمامی متن هایی که بین این دو تا تگ هستن رو حذف کنم!!
یه روز داشتم به یک سیستم وبلاگدهی نفوذ می کردم، وقتی شلرم رو توی سیستمش آپ کردم (سیستم آپلود سنترش رو دور زدم) وقتی قالب می خواست لود بشه (شلر از طریق قالب لود می شد) شلر من باز می شد اما کد هاش همه حذف شده بودن، با یه ترفند شلر رو گرفتم دیدم فقط دوتا تگ بیشتر نداره اون تگ هام اینا هستن (<?php ?>) از شلر 100 کیلو بایتی من فقط همینش باقی مونده بود!!!!

خیلی دوست دارم یاد بگیرم چطور این کار انجام می شه

از اساتید محترم خواهش می کنم جواب من رو بدن (تشکر از همتون ...)

1 , 2
صفحه اصليرايت کليکانجمن هاپروژه هاCopyright © 2005-2009 RightClick.ir All rights reserved.