ecshop中的些assign_dynamic(’')

很多做电子商务站的朋友都问我,在ecshop中,里面有个 assign_dynamic(‘index‘);这个到底是什么作用来的,这个其实是ecshop中的模板技术,动态处理一些局部信息更新而不被缓存的机制。

先看 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);

通过条件,用$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.就是这么来的。

所有的调用,就是这个机制。

ecshop中的些assign_dynamic(’')

时间: 2024-11-07 11:14:31

ecshop中的些assign_dynamic(’')的相关文章

关于ecshop中'/library/cat_goods.lbi'的调用来源

library/cat_goods.lbi中 循环代码是这样的, {foreach from=$cat_goods item=goods} 很显然找到$cat_goods这个变量在哪里定义就行了,发现是在这里定义的: includes/libs_goods.php中的assign_cat_goods函数: $GLOBALS['smarty']->assign('cat_goods_' . $cat_id, $goods); 这里对cat_goods进行了全局定义.后发现: includes/li

ecshop 中的json

ecshop中有2个地方使用了json,一个是cls_json.php文件,一个是transport.js文件. cls_json 封装了json类,可以调用里面的encode的方法,根据参数不同,进行不同的转化,调用json_encode可以直接进行转化.是php对json的处理. transport.js是ecshop封装的ajax方法,通过ajax.call 来实现ajax的调用.ajax传值的过程中,可以选择json来传递,一般也是选择它的,因为这样调用起来方便,转化也方便.所以它对js

ECshop中defined('IN_ECS')的实现原理

在PHP中经常看到如下代码 if (!defined('IN_ECS')) { die('Hacking attempt'); } 实现的原因以及原理如下: ecshop里的有些.php页是不需要用户通过url直接访问的,用来被其它页调用的,例如/includes/init.php,就不需要直接访问,通过url访问你的网址/includes/init.php是无意义的,所以我们在可以直接方问的php里加上define('IN_ECS', true); 例如在index.php中有如下代码,一开头

ecshop中猜你喜欢的原理

最近在实现ecshop中的一个猜你喜欢的原理,一直不明白这个是如何猜的,难道是根据最近浏览记录来得到?百思不得其解,就放下了这个问题,一天在百度搜索东西的时候,突然发现这个右边有个猜你喜欢的功能,其实以前也知道,这里有这个版块,只不过没加注意,这次经过仔细观察发现,原来猜你喜欢的时候,就根据你搜索的相关结果,关联出一些同类产品. 举个例子,比如我搜索notepad2的时候,notepad++,editplus等软件就被列入了猜你喜欢的类别中,因此,在ecshop中如果我们记录了用户的浏览记录,通

ECSHOP中transport.js和jquery的冲突的简单解决办法

ECSHOP中transport.js和jquery的冲突的简单解决办法 一流资源网近日在ECSHOP网站加入了几个JS特效代码,在谷歌.火狐下正常,在各版本IE下都不常,左思不得其解. 最后才知道原来是"ECSHOP中transport.js和jquery的冲突" 因为通用头部文件中引用了 1 {insert_scripts files='transport.js,utils.js'} transport.js与jquery有冲突.原因不多讲.在网上找到一个最简单解决办法: 成功了,

ecshop中404错误页面设置

在ecshop系统当中,比如你随意将商品详细页面的地址中的ID修改为一个不存在的商品ID,ecshop会自动跳转到首页.ecshop在这方面做得非常的差,甚至导致了很多的站不被搜索引擎收录.最模板提供该ecshop教程分析如下: 1.分析:ECSHOP程序文件category.php及goods.php等页面多处存在以下这样的代码:ecs_header("Location:./\n");exit;以上代码的意思是,如果找不到当前ID下的分类或者商品,则跳转到网站首页.这样子跳转,返回的

ecshop中$user对象

ecshop中$user对象 2011-10-01 18:41:23|  分类: ECSHOP |  标签:ecshop  $user  对象  |举报|字号 订阅 http://blog.163.com/[email protected]/blog/static/11597944120119164123135/ 下载LOFTER客户端 有时候我们是需要把ecshop跟我们现有的项目整合,比如典型的会员系统是我们自己的,网店是ECshop的.或者,我们需要在ucenter的用户跟ECSHOP的做

ecshop中的SESSION机制

ecshop中的session机制不是PHP自带的,而是ecshop自定义的一套机制,这两天利用时间学习了一下,以下是学习笔记. 1.session的初始化是在 includes下的 init.php 文件中,具体代码如下: 1 if (!defined('INIT_NO_USERS')) 2 { 3 /* 初始化session */ 4 include(ROOT_PATH . 'includes/cls_session.php'); 5 6 $sess = new cls_session($d

ecshop 中分页的介绍

分页在一个大型系统中是必不可少的,当数据量过大时,一页显示的内容是有限的,这时我们就想把数据分页展示,下面介绍下mysql下的分页原理,以及ecshop中的分页函数的使用. mysql中的分页主要是通过关键词limit来实现的, limit 可以给以给起始值,然后再给一个范围,就可以逐次地取出所有的数据. 举个简单的例子: create table user(int 10 not null auto_increment, name varchar(20), sex tinyint(1), reg