不少作電子商務站的朋友都問我,在ecshop中,裏面有個 assign_dynamic('index');這個究竟是什麼做用來的,這個實際上是ecshop中的模板技術,動態處理一些局部信息更新而不被緩存的機制。html
先看 assign_dynamic()函數,$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);
sql
經過條件,用$GLOBALS['smarty']->assign('goods_cat_' . $row['id'], assign_cat_goods($row['id'], $row['number']));給不一樣的模塊賦予他們的值得。好比在分類,就調用assign_cat_goods()函數,傳遞給模板參數'goods_cat_' . $row['id']緩存
在最後ecshopsmarty將會調用dyna_libs_replace()函數,對不一樣的模塊,給予template,經過例如 $str = '{assign var="cat_goods" value=$cat_goods_' .$row['id']. '}{assign var="goods_cat" value=$goods_cat_' .$row['id']. '}';方式傳遞。因此你在模板裏面,能夠看到$cat_goods.就是這麼來的。函數
全部的調用,就是這個機制。htm