程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP基礎知識 >> ecshop模板smarty foreach詳解

ecshop模板smarty foreach詳解

編輯:PHP基礎知識
 

Smarty目錄:
/libs Smarty的功能類目錄
/tempalates 模板文件目錄
/templates_c 模板緩存文件目錄
/configs 配置文件目錄
/cache 緩存文件目錄

載入Smarty功能類:
require(’路徑/Smarty.class.php’);
$smarty = new Smarty;
自定義Smarty工作目錄:
$smarty->template_dir = ‘路徑/templates/’;
$smarty->compile_dir = ‘路徑/templates_c/’;
$smarty->config_dir = ‘路徑/configs/’;
$smarty->cache_dir = ‘路徑/cache/’;

常用語法:
$smarty->assign(’模板中的變量名’, 值); //給模板中的變量賦值(可以是數組或對象)
$smarty->display(’模板文件名’); //輸出模板

常用標簽語法:
所有的smarty模板標簽都被加上了定界符, 默認情況下是 { 和 }

注釋:{* 注釋內容 *}
函數:{函數名稱[ 參數名1=值1[ 參數名2=值2]]}
變量: {$變量名}
數組: {$數組名.元素名} 或 {$數組名.[元素索引]}
對象:{$對象名->屬性名}

從配置文件引用的變量:
配置文件名為: *.conf
在模板中引入:{config_load file=”配置文件名.conf”}
在模板中的變理標簽:{#變量名#}

變量調節器:
{$變量名|調節器名} //用於變量
{”字符串”|調節器名} //用於字符串
{函數名|調節器名 函數的參數名=值} //用於函數
{$變量名|調節器名1[|調節器名2|...]} //使用多個調節器

‘{’字符: {ldelim}
‘}’字符: {rdelim}

原文輸出:{literal}{/literal} 裡面的文本內容將不會被模板引擎解析,原樣輸出

在模板中直接寫PHP語句: {php}php語句;{/php}

條件:
為了簡單,條件表達式與PHP中相同即可.
{if 條件表達式1}
內容1
[{elseif 條件表達式2}
內容2
{else}
內容3]
{/if}

循環:
{foreach from=$數組名 item=當前處理元素的變量名稱[ key=當前處理元素的鍵名][ name=用於嵌套中的名稱必須唯一]}
循環體…
{$當前處理元素的變量名稱} {* //遍歷數組時元素的引用 *}
{/foreach}

緩存:
$smarty = new Smarty;
$smarty->caching = 2; //緩存設置,值為: 0,關閉緩存(默認) 1,開啟緩存(緩存默認時間為3600秒) 2,指定緩存的時間
$smarty->cache_lifetime = 3600; //設置緩存時間,單位秒。
$smarty->display(’index.tpl’);

 

ecshop模板smarty foreach詳解
{foreach},{foreachelse}
{foreach} 用於像循環訪問一個數字索引數組一樣循環訪問一個關聯數組,與僅能訪問數字索引數組的{section}不同,{foreach}的語法比 {section}的語法簡單得多,但是作為一個折衷方案也僅能用於單個數組。每個{foreach}標記必須與關閉標記{/foreach}成對出現。
屬性
1、from 類型:array數組 必要性:Yes必要 默認值:n/a 描述:循環訪問的數組
2、item 類型:string字符串 必要性:Yes必要 默認值:n/a 描述:當前元素的變量名
3、key 類型:string字符串 必要性:No可選 默認值:n/a 描述:當前鍵名的變量名
4、name 類型:string字符串 必要性:No可選 默認值:n/a 描述:用於訪問foreach屬性的foreach循環的名稱
from和item是必要屬性
{foreach}循環的name可以是任何字母,數組,下劃線的組合,參考PHP變量。
{foreach}循環可以嵌套,嵌套的{foreach}的名稱應當互不相同。
from屬性通常是值數組,被用於判斷{foreach}的循環次數。
在from變量中沒有值時,將執行{foreachelse}。
{foreach}循環也有自身屬性的變量,可以通過{$smarty.foreach.name.property}訪問,其中"name"是name屬性。
注意:name屬性僅在需要訪問{foreach}屬性時有效,與{section}不同。訪問未定義name的{foreach}屬性不會拋出一個錯誤,但將導致不可預知的結果。
{foreach}屬性有index, iteration, first, last, show, total.
示例:
例一. item屬性
<?php
$arr = array(1000, 1001, 1002);
$smarty->assign('myArray', $arr);
?>
用模板以無序列表輸出$myArray
<ul>
{foreach from=$myArray item=foo}
<li>{$foo}</li>
{/foreach}
</ul>
上例將輸出:
<ul>
<li>1000</li>
<li>1001</li>
<li>1002</li>
</ul>
例二. 演示item和key屬性
<?php
$arr = array(9 => 'Tennis', 3 => 'Swimming', 8 => 'Coding');
$smarty->assign('myArray', $arr);
?>
用模板按鍵名/鍵值對的形式輸出$myArray, 類似於PHP的foreach。
<ul>
{foreach from=$myArray key=k item=v}
<li>{$k}: {$v}</li>
{/foreach}
</ul>
上例將輸出:
<ul>
<li>9: Tennis</li>
<li>3: Swimming</li>
<li>8: Coding</li>
</ul>
例三. {foreach}的item屬性是關聯數組
<?php
$items_list = array(23 => array('no' => 2456, 'label' => 'Salad'),
96 => array('no' => 4889, 'label' => 'Cream')
);
$smarty->assign('items', $items_list);
?>
模板中,url通過$myId輸出$items
<ul>
{foreach from=$items key=myId item=i}
<li><a href="item.php?id={$myId}">{$i.no}: {$i.label}</li>
{/foreach}  

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