zencart $body_code变量解析

修改centerColumn

可以修改中间产品方框的大小

2.2.5 、BODY文件在这个文件生效 require($body_code)

includes/modules/pages/index/main_template_vars.php

zencart具体页面调用:先看modules/pages/。下存不存在main_template_vars.php这个妖精文件有就 先迷惑调用这 不然就模版下templates/tpl_X_default.php

如果目录下存在  /public_html/includes/modules/pages/index/main_template_vars.php 就调用main_template_vars.php这文件

不存在的话就  /public_html/includes/templates/mytemplate/templates/tpl_index_default.php文件

如果目录下存在  /public_html/includes/modules/pages/faq/main_template_vars.php 就调用main_template_vars.php这文件

不存在的话就  /public_html/includes/templates/mytemplate/templates/tpl_faq_default.php文件

在文件\includes\templates\模板\common\tpl_main_page.php 文件里面有$body_code这样一个变量,他具体什么意思,可能很多人不知道.但是从他字面的意思,可以知道他大概什么意思.我们知道,zencart系统默认的页面结构是上 中(左中右), 下,而这个变量所处的位置就是左中右的中间部分,也就是夹在左右边框的中间. 
这个变量其实是一个文件路径, require($body_code); 这样调用意思就是加载这个文件.而这个变量则来源,includes\templates\模板\common\main_template_vars.php 文件 (没有的话在默认模版下)

if (file_exists(DIR_WS_MODULES . 'pages/' . $current_page_base . '/main_template_vars.php')) { 
   $body_code= DIR_WS_MODULES . 'pages/' . $current_page_base . '/main_template_vars.php'; 
  } else { 
    $body_code= $template->get_template_dir('tpl_' . preg_replace('/.php/',  '',$_GET['main_page']) . '_default.php',DIR_WS_TEMPLATE,  $current_page_base,'templates'). '/tpl_' . $_GET['main_page'] .  '_default.php'; 
  } 
它的意思就是,如果当前页面的目录下面存在main_template_vars.php这个文件,则页面的$body_code就引用该文件做为中体文件的内容来加载,否则就直接引用模板目录下的/tpl_当前页面_default.php文件.

举 个例子来说,

比如访问地址中包含 index.php?main_page=index

的页面,那么页面的主体部分,也就是中间部分引用的是 includes\modules\pages\index\main_template_vars.php  这个文件,因为includes\modules\pages\index\目录下面有main_template_vars.php这个文件.

但 是如果我们访问页面index.php?main_page=products_all 

这个页面的话,那么他的主体部分加载的则是includes\templates\模板\templates \tpl_products_all_default.php这个文件,因为includes\modules\pages\products_all \目录下面没有main_template_vars.php这个文件. 
了解这点对于修改模板很有帮助,比如要修改某个页面的主体部分的话,首 先要想到的是查找includes/moduless/pages/页面名字这个目录下面的main_template_vars.php这个文件.如果 没有这个文件,那就找到includes\templates\模板\templates\tpl_当前页面_default.php.熟悉这个流程,就 可以快速的定位需要修改的地方所在的文件路径.

zencart 具体页面调用规则: $body_code变量解析的更多相关文章

  1. zencart 新页面调用好功能代码集:

    其实很多就是看变量,就可以直接调用,而变量的定义地方很多,比如language 1.  includes\languages\语言.php 2. 写个文件,放进includes\extra_confi ...

  2. C#保存登录用户名供其他页面调用

    一.保存登录用户名供其他页面调用 步骤: (1)项目自带的Program.cs,类方法里定义登录的用户名为全局变量loginid,这样整个项目都可以调用它 static class Program { ...

  3. Crash工具实战-变量解析【转】

    转自:http://blog.chinaunix.net/uid-14528823-id-4358785.html Crash工具实战-变量解析 Crash工具用于解析Vmcore文件,Vmcore文 ...

  4. Don’t Use Accessor Methods in Initializer Methods and dealloc 【初始化和dealloc方法中不要调用属性的存取方法,而要直接调用 _实例变量】

    1.问题:    在dealloc方法中使用[self.xxx release]和[xxx release]的区别? 用Xcode的Analyze分析我的Project,会列出一堆如下的提示:Inco ...

  5. Atitit main函数的ast分析  数组参数调用的ast astview解析

    Atitit main函数的ast分析  数组参数调用的ast astview解析 1.1. Xxcls.main(new String[]{"","bb"}) ...

  6. 探索C++的秘密之详解extern "C",这就是为什么很多.lib被我们正确调用确总是无法解析的。

    (转载,绝对的有用) lib被我们正确调用确总是无法解析.这是C++编译和C编译的区别 时常在cpp的代码之中看到这样的代码: #ifdef __cplusplus extern "C&qu ...

  7. iframe父子页面调用小结

     子页面调用父页面 $('#Id', window.parent.document); //调用父页面元素 window.parent.func1(); //调用父页面方法  (子页面同理,需将js方 ...

  8. iframe页面调用父窗口JS函数

    A页面iframe 页面B, 此时 如果要在B页面调用父页面A的函数 B页面写法 parent.functionName(); 错误1: 解决办法 var js_domain_async = 'bai ...

  9. JS 的子父级页面调用

    window.frames["iframevehquery"].add(); // 父页面调用嵌套子页面的js函数, iframevehquery 为 iframe 的name值, ...

随机推荐

  1. lldp中与snmp相关内容agentx

    struct lldpd { int    g_snmp; struct event  *g_snmp_timeout; void   *g_snmp_fds; char   *g_snmp_agen ...

  2. Number-guessing Game

    Number-guessing Game Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 131072/65536K (Java/Othe ...

  3. jsp第1讲(上集)

    jsp讲解框架 (一)Java EE核心十三种技术介绍 (二)Java EE程序员修炼成精的法门 (三)jsp版本的用户管理系统演示 (四)jsp概述 (五)jsp的运行原理 (六)jsp版的计算器 ...

  4. PHP:urlencode

    urlencode是用于对字符串进行编码,使得所有字符都能被放入url中,而不会被解析器误解. 正如html中的<>这样的符号是标记符,如果正文中存在<,要把它转义为< url ...

  5. [tableView dequeueReusableCellWithIdentifier:CellIdentifier] 后面forIndexPath:indexPath参数的解释

    解决以下错误: *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'u ...

  6. Qt Creator下载和安装(详细教程)

    简介 Qt是跨平台的图形开发库,目前由Digia全资子公司 Qt Company 独立运营,官方网址: http://www.qt.io/ 也可以访问Qt项目域名:http://qt-project. ...

  7. IOS中Label根据上个label的内容设置下个label的frame

    #import "ViewController.h" @interface ViewController () @property(nonatomic,strong)UILabel ...

  8. MyEclipse build path no actions available

    MyEclipse,是在eclipse 基础上加上自己的插件开发而成的功能强大的企业级集成开发环境,主要用于Java.Java EE以及移动应用的开发.MyEclipse的功能非常强大,支持也十分广泛 ...

  9. addEventListener与removeEventListener

    addEventListener:添加事件监听器 element.addEventListener(event, function, useCapture) event:事件类型,字符串,不要加&qu ...

  10. 【搜索 回溯】 zoj 1002

    题意:一些机枪彼此不能在同一行和同一列,但是由于有墙的阻隔,能保证子弹无法穿透,即可以同行同列,现问如果说给了一个n*n(n<=4)的矩阵,并给出了墙的分布情况,能否求出最大能繁殖的机枪数. 思 ...