Ecshop 中的assign_dynamic($tmp)函數(shù)分析
近日需要在ecshop中新增一個(gè)php頁面,里面涉及到一些動(dòng)態(tài)文章內(nèi)容的調(diào)用。
因?yàn)橹皼]有做過所以就對(duì)照index.php來寫了。首先自己新增了一個(gè)dwt文件,在里面設(shè)置一個(gè)可編輯區(qū)域。在admin/includes /lib_template.php里面,在$template_files這個(gè)數(shù)組中添加了一個(gè)可以設(shè)置內(nèi)容的模板,news.dwt, 在$page_libs這個(gè)每個(gè)模板允許設(shè)置的庫項(xiàng)目的數(shù)組里面添加了’news’ => array(
‘/library/ur_here.lbi’ => 0,
‘/library/cart.lbi’ => 0,
‘/library/category_tree.lbi’ => 0,
‘/library/history.lbi’ => 0,
‘/library/pages.lbi’ => 0,
‘/library/exchange_hot.lbi’ => 5,
‘/library/exchange_list.lbi’ => 0,
),然后在后臺(tái)”設(shè)置模板”這里,在languages/zh_cn/admin/template.php里面對(duì)這個(gè)模板文件添加相應(yīng)的語言,$_LANG['template_files']['news'] = ‘新聞頁面’;
經(jīng)過以上這樣設(shè)置之后,在”后臺(tái)模板”—“設(shè)置模板”這里的下拉框這里就可以看到這個(gè)新添加的模板了。測(cè)試發(fā)現(xiàn),如果想在這個(gè)頁面內(nèi)顯示一些動(dòng)態(tài)的內(nèi)容。就必須加上:assign_dynamic(‘news’).
assign_dynamic($tmp)這個(gè)函數(shù)的作用是活的指定頁面的動(dòng)態(tài)內(nèi)容,動(dòng)態(tài)處理一些 局部信息更新而不被緩存的機(jī)制,其中$tmp為模板名稱。
$sql = ‘SELECT id, number, type FROM ‘ . $GLOBALS['ecs']->table(‘template’) . ” WHERE filename = ‘$tmp’ AND type > 0 AND remarks =” AND theme=’” . $GLOBALS['_CFG']['template'] . “‘”;$res = $GLOBALS['db']->getAll($sql) 其中字段number控制每次顯示多少個(gè)值,而字段type則控制屬于哪個(gè)動(dòng)態(tài)項(xiàng),0為 固定項(xiàng),1為分類下的商品,2為品牌下的商品,3為文章列表,4為廣告位.
通過過這個(gè)條件,分別執(zhí)行相應(yīng)的函數(shù),例如用$GLOBALS[‘smarty’]->assign(‘goods_cat_’.$row[‘id’],assign_cat_goods($row[‘id’],$row[‘number’])); 給不同的模塊賦值。比如在分類,就調(diào)用ssign_cat_goods()函數(shù),傳遞給模板參數(shù)’goods_cat_’ . $row['id'].
在最后ecshop smarty將會(huì)調(diào)用dyna_libs_replace()函數(shù),對(duì)不同的模塊,給予template,通過例如 $str = ‘{assign var=”cat_goods” value=$cat_goods_’ .$row['id']. ‘}{assign var=”goods_cat” value=$goods_cat_’ .$row['id']. ‘}’;方式傳遞。所以在模板里面,可以看到$cat_goods.就是這么來的。
所有的調(diào)用,就是這個(gè)機(jī)制。