随着O2O的盛行,更多的传统行业开始选择线上,电商这一行,最近有句流行的话—-“现在卖个香蕉都要请一个技术人员”。但是往往传统行业的老板并不是这样的思维,他们以为花个少量的钱买个程序往那儿一放,一个类似淘宝的线上商城就出来了,公司就可以收钱了。于是乎,公司请了一个所谓的技术人员,或者压根就不请,搞了一套ecshop,因为在不买授权之前它丫的是免费的,然后这些人员在各种群问不授权会怎样啊这种问题,答案见《Ecshop十大基础问题Q/A》,也是醉了。
言归正传,Ecshop的模板文件怎么接受PHP页面传过来的变量并显示在前端的?技术党直接切换至/include/cls_template.php文件,其他的往下看。之所以写这篇文章,也是因为tiandi见过不少人(写代码入门级别的,和不会写代码的)问类似同样的一个问题,比如下面这段模板代码里写着,
<!-- {foreach from=$goodslist item=goods} 显示商品--> 商品名称:{goods.name} 商品货号:{goods.goods_bn} 商品价格:{goods.price} 商品重量:{goods.weight} ...... <!-- {/foreach} -->
于是懂一点技术的人,通过英文判断name,goods_bn,price,weight这些分别等于goods表里的字段,然后他们在goods数据表里加了一个字段goods_color,但是在这里用下面代码却发现没有显示出来。
{goods.goods_color}
至于为什么没有显示出来呢?他们不去看代码,群里一遍又一遍重复地有人问同样的问题,解答解答着就累了,于是有人抽空花了时间写了开发手册放群里,可这些人压根就不会去看手册,他们总想用最快的,最廉价的方式让能帮助他们的人来付出,给他们答案,甚至内心巴不得最好是远程帮他们把代码都写上,网站直接生效。tiandi在这里不禁要问,凭什么呢?
抱怨一下,继续往下说,上文里模板的变量$goodslist是从php里通过下面一行代码赋值过来的:
$smarty->assign('goodslist',$goodsarray)
比方说你有一个goods.php的文件,其中
$goodsarray = array('name'=>'myname','goods_bn'=>'bn1234','price'=>'99','weight'=>'20'); $smarty->assign('goodslist',$goodsarray)//赋值到模板; $smarty->display('goods.dwt');//指定模板文件
这样你才能用之前的代码在指定的模板goods.dwt里显示相关的项目,因此你要显示出goods_color的值,则必须在$goodsarray里添加’goods_color’=>’red’才行,和数据表里的字段没有半毛关系,不要自以为是地觉得模板里的变量名称和表字段相同就是调用表了。
以上代码纯手打,可能有误,请自行修正。
最近在研究这个程序,这篇文章帮了我大忙