ecshop的smarty库还原成smarty原生库方法

国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html
内部邀请码:C8E245J (不写邀请码,没有现金送)
国内私募机构九鼎控股打造,九鼎投资是在全国股份转让系统挂牌的公众公司,股票代码为430719,为“中国PE第一股”,市值超1000亿元。 

--------------------------------------------------------

写过ecshop模板的人都晓得,他们是用所谓的dwt的文件来嵌套lbi文件进行模板的彼此调用。在咱们调取数据的时分,ecshop的默许模板只提供给咱们几个简略的句子进行调用,那么有没有办法能够把这个精简的cls_template类添加其他的句子呢?

 

首要断定版别:ECShop v2.7.3

通过近一天对ecshop程序的研讨,发现这个所谓的cls_template类,其实是一个精简版的smarty,而且值得幸亏的是,这个cls_template类没有包括其他的文件。那么咱们完全能够将官方smarty直接拿来用。断定了这一点,剩余的就是看ECShop在哪里运用这个cls_template类了。

翻开index.php,咱们发现他里边有这样一句话:

	
  1. require(dirname(__FILE__) . '/includes/init.php');

所以咱们找到这个文件,找到创立的那个cls_template类,代码如下:

	
  1. require(ROOT_PATH . 'includes/cls_template.php');
  2. $smarty = new cls_template;

这里发现他们创立了一个smarty的一个目标,其实咱们写的模板中一切能用的标签都是用这个的。

我这里不说废话了,直接给办法了。

仿制一份init.php 为 init_x.php ,在根目录的 index.php 中,将:

	
  1. require(dirname(__FILE__) . '/includes/init.php');

改为:

	
  1. require(dirname(__FILE__) . '/includes/init_x.php');

即可。原因是还有其他地方运用了init.php,直接修正的话,会形成不行预知的成果。

如今去官方下载一个smarty模板,这里用的是2.6的版别(3.1的版别试过,有错。估量ecshop其时用的是2.6兼容的,别问我为啥。),放在include的文件夹里,而且在init_x.php中包括当时的原生smarty类而且用Smarty类交换之前的cls_template类,代码如下:

	
  1. /* 获得当时ecshop地点的根目录 */
  2. define('ROOT_PATH', str_replace('includes/init_x.php', '', str_replace('\\', '/', __FILE__)));
	
  1. /* 创立 Smarty 目标。*/
  2. require(ROOT_PATH . 'includes/Smarty-2.6.27/libs/Smarty.class.php');
  3. $smarty = new Smarty;
  4.  
  5. $smarty->cache_lifetime = $_CFG['cache_time'];
  6. $smarty->template_dir = ROOT_PATH . 'themes/' . $_CFG['template'];
  7. $smarty->cache_dir = ROOT_PATH . 'temp/caches';
  8. $smarty->compile_dir = ROOT_PATH . 'temp/compiled';

这里注重途径和类名的修正。还有就是细心查看smarty类需求的那几个变量和路近能否都存在。

持续往下查看:

	
  1. if ((DEBUG_MODE & 2) == 2)
  2. {
  3. $smarty->direct_output = true; //我记住这个变量smarty如同没有
  4. $smarty->force_compile = true;
  5. }
  6. else
  7. {
  8. $smarty->direct_output = false; //
  9. $smarty->force_compile = false;
  10. }

看这一段,查看smarty类里能否存在这几个变量,没有就删掉。

断定无误后,能够回到根目录的index.php文件上了。

之前,咱们将init.php 换成了init_x.php,这仅仅第一步。下面咱们要持续修正模板,将一切的dwt文件换成tpl文件(回忆中是两处)。

如今进入themes文件夹,将index.dwt文件修正为index.tpl文件。

如今咱们来翻开debug,看看能不能进行smarty调试,并运用其他的smarty标签了。(这里阐明一下,smarty文件夹需求有可运转的权限。)

还记住刚刚你屏蔽的那两行smarty不存在的变量么?那个是调试。咱们细心对照发现,2.6的smarty调试的变量名称为debuging。

咱们将方才:

	
  1. $smarty->direct_output = false;

中的direct_output,修正为debuging,而且改为true就能够弹出smarty官方的调试窗口了

时间: 2024-12-02 09:34:11

ecshop的smarty库还原成smarty原生库方法的相关文章

在PHP语言中使用JSON和将json还原成数组的方法_php实例

在之前我写过php返回json数据简单实例,刚刚上网,突然发现一篇文章,也是介绍json的,还挺详细,值得参考.内容如下 从5.2版本开始,PHP原生提供json_encode()和json_decode()函数,前者用于编码,后者用于解码. 一.json_encode() <?php $arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5); echo json_encode($arr); ?> 输出 {"a&

smarty模板引擎中自定义函数的方法_php实例

本文实例讲述了smarty 自定义函数方法,分享给大家供大家参考.具体如下: 本实例目的:输出 times 次 con的内容(输出4次hello world) 文件1: 复制代码 代码如下: <?php //创建smarty对象 require_once("./libs/Smarty.class.php"); $smarty = new Smarty(); //自定义一个函数 //说明:(1).$arr为一个数组:(2).tpl调用形式{test times="4&qu

源码-通过摄像头扫描得到的畸形图形还原成方正的图形

问题描述 通过摄像头扫描得到的畸形图形还原成方正的图形 我现在想要弄一个通过摄像头扫描一张图片,这个图片是一个不规整的畸形图片,想通过一种软件提取这个软件的库,或者找一段代码来实现这个功能,求一个软件或者源码 解决方案 有这么高大上的软件吗?

jpeg bmp 源代码-jpeg数据还原成bmp Arduino

问题描述 jpeg数据还原成bmp Arduino 用摄像头拍摄照片传输到单片机上用电脑看到接收到的数据是一组jpeg数据 FFD8开头FFD9结束 该如何还原成为bmp再进行处理 因为需要用单片机处理 所以求个源代码 解决方案 参考:http://download.csdn.net/detail/efancier/2565884 解决方案二: http://bbs.csdn.net/topics/360091379 解决方案三: 先对jpge进行解码,然后获取到图像的rgb数据区,将数据区拷贝

实例:创建SWT项目的原生库导入问题

创建|问题|项目 对于 Eclipse 3.1.x 而言,并没有书中提到的那个"org.eclipse.swt.win32_3.0.1"目录,自然也不会有目录下的 swt.jar 和 swt-win32-3063.dll,这个目录在 Eclipse 3.1.x 中被 org.eclipse.swt.win32.win32.x86_3.1.x.jar 文件替代,而原生库文件也被压缩到这个 jar 文件中,用 WinRAR 解压即可得到. 在安装了 SWT Designer 后通过其建立项

python实现将汉字转换成汉语拼音的库

  本文实例讲述了python实现将汉字转换成汉语拼音的库.分享给大家供大家参考.具体分析如下: 下面的这个python库可以很容易的将汉字转换成拼音,其中用到了一个word.data 的字典,可点击此处本站下载. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 #!/usr/bin/env python # -*

win7系统移动桌面图标位置后会被还原成原来的位置怎么办

  win7系统移动桌面图标位置后会被还原成原来的位置怎么办           具体方法如下: 1.右击win7系统桌面任务栏空白区域点选"启动任务管理器"; 2.在其中找到一项名为"explorer.exe"的进程,点击"结束进程"键值将所有explorer.exe进程结束掉; 3.之后点选"任务管理器"中的"文件"--"新建",建立一项名为"explorer.exe&qu

link发射取得的属性怎么样再还原成发射以前得到的对象?

问题描述 link发射取得的属性怎么样再还原成发射以前得到的对象? link发射取得的属性怎么样再还原成发射以前得到的对象? 解决方案 首先搞清楚,可以通过反射创建一个属性值和原来一样的对象,但是这个对象不是原来那个对象 具体参考http://www.360doc.com/content/11/0422/14/5054188_111515699.shtml

写好的c程序如何封装成dll动态库

问题描述 写好的c程序如何封装成dll动态库 写好的c程序如何封装成dll动态库?其中此程序中已经调用了一个dll动态库.这种情况的要如何封装呢?即程序中包含普通函数和dll动态库.之前都没有做过这样的,小白菜一个,望知情人指教,最好附上详细的例子,谢谢! 解决方案 新建一个 dll 类型的项目,将程序贴进去,该使用的lib.h包括进来,在导出文件中写好函数名.即可. 你可以理解,windows api也是dll,c runtime也是dll,所以dll调用dll很正常很普遍,甚至不知不觉你早就