程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> smarty模板中for循環的擴展插件

smarty模板中for循環的擴展插件

編輯:關於PHP編程

smarty是php開發中非常流行的一個模板,以前曾發過一篇文章php smarty中文截取插件開發示例是說明如何開發smarty插件的,這篇文章將分享一下如何為smarty模板做一個for循環的擴展插件,方面我們日常的程序開發。

首先說說這個for循環擴展是做什麼用的吧。今天在改以前的一個網站的時候,由於一些特定的原因需要在smarty模板中做一個for循環,雖然smarty是可以在模板中以{php}......{/php}標簽的形式來直接書寫php語句語法的。但由於循環中要用到模板中的變量的值,而在模板中直接寫的php語句沒辦法獲取到模板變量中的值,所以這個想法就行不通了,最後就想到是不是也可以實現在smarty模板中直接使用for循環呢?

下面是作者為smarty增加一個for循環擴展插件的具體步驟。

(1)在smarty模板的安裝目錄下的plugins目錄內新建一個文件,命名為 block.for.php ,然後在這個文件裡面輸入如下代碼:

<?php
function smarty_block_for($params,$content,&$smarty){
	if(is_null($content)){
		return;
	}
	$start=0;
	$to=0;
	$step=1;
	foreach($params as $k=>$v){
		switch($k){
			case 'start':
			case 'to':
			case 'step':
				$$k=(int)$v;
			break;
			default:
				$smarty->trigger_error("textformat: 未知屬性:'$k'");
		}
	}
	$_output='';
	for($_x=$start;$_x<=$to;$_x+=$step){
		$_output.=$content."\n\r";
	}
	return $_output;
}

(2)然後就可以直接在smarty模板中使用for循環了,作者的使用案例如下:

php文件部分代碼:

$vote='[[[';//我要在模板中將這三個符號轉變為三個五角星圖片
$smarty->assign('vote',$vote);

smarty模板文件部分代碼:

{if false!==$vote|@stripos:'['}
{for start=1 to=$vote|@strlen step=1}
<img src="http://www.phpernote.com/images/xing.gif" />
{/for}
{/if}

ok,以上問題解決。大同小異,如果你還需要為smarty擴展更多功能,方法同上,基本上都可以實現。

您可能感興趣的文章

  • smarty 模板中循環表格補充不全的td
  • smarty模板中使用php函數以及smarty模板中如何對一個變量使用多個函數
  • thinkphp模板中判斷volist循環的最後一條記錄
  • smarty模板中判斷數組為空的方法
  • smarty模板中給信息添加最新標簽
  • smarty模板保留變量總結
  • php smarty中文截取插件開發示例
  • smarty模板中如何生成隨機數

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved