不少作电子商务站的朋友都问我,在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