熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> PHP編程 >> 正文

PHP中獲得$Smarty.capture.name截獲的輸出

2013-11-15 12:38:58  來源: PHP編程 

  想要獲得$smarty>display後的輸出並作為字符串賦給php變量有兩種方法:

  ob_start

  ob_start();

  $smarty>display(StockNews/getLefttpl);

  $string = ob_get_contents();

  ob_end_clean();

  $smarty>_smarty_vars[capture][captureName];

  $smarty>display(StockNews/getLefttpl);

  $string = $smarty>_smarty_vars[capture][captureName];

  //captureName為{capture name=banner}中的name;

  //方法需在tpl中使用capture捕獲輸出

  //和第一種原理是一樣的查看編譯的php的到

  //php $this>_smarty_vars[capture][captureName] = ob_get_contents(); ob_end_clean(); ?>

  //不難看出smarty的capture正是使用了php的ob_start方法

  總結這個技巧在部分靜態化頁面中很有用處也就是說當使用了smarty而且某頁面需一部分靜態一部分動態輸出時可以利用上述方法

  我在smarty中靜態頁面時采用這種方法

  statichtml

  indexphp

  includeStatictpl

  indextpl

  needStatictpl

  indexphp //主頁此頁中分需靜態部分及動態輸出部分

  <?PHP
if(file_exists(statichtml)){
//存在靜態頁輸出靜態頁
//使用capture截獲包含靜態頁後的輸出
$smarty>assign(filenamestatichtml);
$smarty>display(includeStatictpl);
//動態輸出部分
$num = rand();
$smarty>assign(num$num );
//再次display輸出index
$smarty>display(indextpl);
}else{
//不存在靜態頁往下繼續運行並生成靜態頁
//這裡使用上述方法動態獲得需靜態部分的輸出這裡使用的方法一同樣也可以使用方法二
ob_start();
//假如要靜態數組$array在display後的輸出
$smarty>assign(array$array);
$smarty>display(needStatictpl);
//將動態輸出內容存至$string變量
$string = ob_get_contents();
ob_end_clean();
//生成靜態頁
$handle = fopen(statichtmlwb);
fwrite($handle$string);
fclose($handle);
//動態輸出部分
$num = rand();
$smarty>assign(num$num );
//輸出index
$smarty>display(indextpl);
}
?>
statichtml //此頁是主頁中靜態部分產生的靜態頁

  我是靜態頁!

  includeStatictpl //假如存在靜態頁則通過display此頁截獲一個輸出(用在index中的)

  {capture name=staticed}

  {include file=$filename}

  {/capture}

  needStatictpl //沒有已靜態好的頁面時動態生成靜態頁此處為主頁靜態部分的tpl

  {capture name=staticed}

  {section name=a loop=$array}

  {$array[a]}

  {/section}

  {/capture}

  indextpl //首頁輸出包括靜態及動態部分無論靜態html是否存在都會通過capture截獲輸出用在此頁

  我是首頁

  這裡是靜態部分

  {$smartycapturestaticed}

  這裡是動態部分

  {$num}

  當不願在php中使用界定符或直接輸出html標記時(這樣顯得代碼很亂==!)可以通過上述兩種方法將display後的html賦給一個php變量以便操作


From:http://tw.wingwit.com/Article/program/PHP/201311/21345.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.