zencart的源码文件中第一句话往往是包含include目录下的application_top.php文件,如:require(’includes/application_top.php’);
在zencart系统中application_top.php负责的是初始化工作,比如加载配置文件include(’includes/configure.php’);,如果系统没检测到该文件的存在则会尝试调用安装文件。然后它会自动遍历include/extra_configures下的配置文件并包含进来。
在加载了系统配置文件以后接下来是一个非常重要的文件,这也导致了zencart和oscommerce感觉上很大不同的原因,首先调用一个文件require(’includes/initsystem.php’); 在 initsystem.php中最先加载include/auto_loaders/config.core.php,config.core.php是一个二围数组$autoLoadConfig,即以数组的形式保存文件的信息供后面文件调用,然后系统会接着加载完 include/auto_loaders目录下所有文件名匹配$loaderPrefix(默认为config)的文件。
上面程序执行完以后就是加载自动执行程序了require(’includes/autoload_func.php’);在这里它会遍历$autoLoadConfig数组,它最终执行的效果会包含所有必须用到的函数或者类的定义,还有变量的初始化,config.core.php里面的注释比较清楚比如
$autoLoadConfig[0][] = array(’autoType’=>’class’,'loadFile’=>’class.base.php’);
在autoload_func.php里面执行完以后的效果就是require(DIR_WS_CLASSES . ‘class.base.php’),大部分的初始化化工作是通过包含init_includes目录下的文件来实现的,如:
$autoLoadConfig[110][] = array(’autoType’=>’init_script’,'loadFile’=> ‘init_templates.php’);
它在执行完autoload_func.php文件后就已经加载了init_includes目录下的init_templates.php文件。
下面来介绍下zencart是怎么根据摸版把内容显示出来的。
在index.php的第29行有句
$directory_array = $template->get_template_part($code_page_directory, ‘/^header_php/’);
由于所有初始化工作已经完成,所以我们就可以在上面的文件找到他们的定义,如
$autoLoadConfig[100][] = array(’autoType’=>’classInstantiate’,'className’=>’template_func’,'objectName’=>’template’);
在这里就定义了$template = new template_func(); ,然后$code_page_directory变量的定义是在init_includes/init_sanitize.php文件中定义在这里必须要对class/template_func.php中定义的template_func类比较熟悉,在该类中主要定义了两个方法 get_template_dir()和get_template_part();
这两个方法在zencart的模板使用中起到了决定性的作用。
get_template_dir 方法function get_template_dir($template_code, $current_template, $current_page, $template_dir, $debug=false),它定义了5个参数,第一个参数一般是个文件名,
它是用来判断后两个参数组成的目录中有没有匹配$template_code 的这个文件,该类复写了默认的系统函数file_exists所以很多初学者可能会比较迷惑
function get_template_dir($template_code, $current_template, $current_page, $template_dir, $debug=false) {
//echo ‘template_default/’ . $template_dir . ‘=’ . $template_code;
if($this->file_exists($current_template . $current_page, $template_code)){
return $current_template . $current_page . ‘/’;
}elseif ($this->file_exists(DIR_WS_TEMPLATES . ‘template_default/’ . $current_page, ereg_replace(’/', ”, $template_code), $debug)){
return DIR_WS_TEMPLATES . ‘template_default/’ . $current_page;
} elseif ($this->file_exists($current_template . $template_dir, ereg_replace(’/', ”, $template_code), $debug)){
return $current_template . $template_dir;
} else {
return DIR_WS_TEMPLATES . ‘template_default/’ . $template_dir;
//return $current_template . $template_dir;
}
}
/*
如
includes/templates/zccn/index
includes/templates/template_default/index
includes/templates/zccn/common
includes/templates/template_default/common
*/
get_template_part()方法有两个函数,第一个参数是文件目录,第二个参数是匹配的条件,执行的结果是包含该目录下所有文件名匹配这个条件的文件
比如$directory_array = $template->get_template_part($code_page_directory, ‘/^header_php/’);
这句话执行的结果就是返回目录下$code_page_directory所有文件名以header_php开头的文件
如此时的url(http://localhost/zencart/index.php?main_page=product_info&cPath=49_27&products_id=83)
你现在应该查看init_sanitize.php中$code_page_directory的定义此时的$code_page_directory的值应该是includes/modules/product_info/
所以它就应该包含该目录下所有以header_php开头的文件,在这里好象就只有一个header_php.php
$directory_array = $template->get_template_part($code_page_directory, ‘/^header_php/’);这个包含文件其实是初始化前台不同页面显示所需要用到的变量函数,主要是初始化数据库的东西,因为每个页面需要的数据资料都有可能不同,所以index.php?main_page=index 当main_page的值不同是在includes/modules/目录下都会有个对应的目录,这里是index目录
只要知道了这两个方法的用法,你就会知道模板文件都是怎么显示出来的了
再来解释一 require($template->get_template_dir(’html_header.php’,DIR_WS_TEMPLATE, $current_page_base,’common’). ‘/html_header.php’);
假设当前url:http://localhost/zencart/index.php?main_page=index&cPath=48
DIR_WS_TEMPLATE 定义是在includes/init_templates.php中定义define(’DIR_WS_TEMPLATE’, DIR_WS_TEMPLATES . $template_dir . ‘/’);,因为我现在用的是默认的zccn模板
所以现在的DIR_WS_TEMPLATE=includes/templates/zccn/
$current_page_base在这里已经就是index
上面已经解释了$template->get_template_dir()的方法了
程序会依次在
includes/templates/zccn/index
includes/templates/template_default/index
includes/templates/zccn/common
includes/templates/template_default/common
这四个目录下找html_header.php,在这里,最终在template_default\common目录下找到html_header.php
到这里就可以自己写摸板文件了,因为$template->get_template_dir()是按顺序找的,所以你只要在你的模板文件中存在该文件即可
1、 上锁解锁声音确认(防止无线干扰,转向灯确认不方便时增加声音确认锁车,需在设置里面打勾)
HU_CIC ACOUSTICAL_LOCK_CONFIRM nicht_aktiv 改为 aktiv
2、行车中可以操作导航菜单包括看DVD(为了行车安全,建议由副驾驶操作导航菜单) HU_CIC SPEEDLOCK_X_KMH_MIN 00 改为 FF
HU_CIC SPEEDLOCK_X_KMH_MAX 0A 改为 FF
3.显示发动机输出功率和扭矩表(纯属好玩,看看发动机输出)
HU_CIC EFF_DYN_SPORT_CID nicht_aktiv 改为 aktiv
4、取消大屏幕开机延时确认界面
HU_CIC LEGAL_DISCLAIMER_TIME ld_mit_timeout 改为 kein_ld
5、打开语音识别功能
CMB_MEDIA SVS_EIN_AUS nicht_aktiv 改为 aktiv
6、3种蓝牙电话铃声选择(个性而已)
CMB_MEDIA RINGTONE RING_TONE1,2,3可选
7、增加CIC的存储地址到50个
CMB MY_INFO_SUPPORTED_POIS 下的 25 改为 50
8、玻璃自动升起到顶的过程不被开车门终止(方便下车关窗等待)
FRM FH_TUER_AUF_STOP_MAUT aktiv 改为 nicht_aktiv
JBBF FH_TUERAUF_STOP_MAUT aktiv 改为 nicht_aktiv
9、数字车速显示(好玩而已)
KOMBI BC_DIGITAL_V nicht_aktiv 改为 aktiv
10、空调记忆上次熄火状态(不用开空调的季节更方便)
IHKA OFF_MEMORY nicht_aktiv 改为 aktiv
11、室内循环记忆为最后一次熄火时的状态
IHKA MEMORY_UMLUFT nicht aktiv 改为 aktiv
12、 电尾门A柱按键和遥控一键关闭电尾门,随时终止反向操作(熄火15分钟以上复位) HKL(HKFM) PHY_TASTER nicht aktiv改为aktiv
HKL(HKFM) REV_FBD nicht aktiv改为aktiv
HKL(HKFM) TASTER_FBD nicht aktiv改为aktiv
HKL(HKFM) SCH_TOEHKI nicht aktiv改为aktiv
HKL(HKFM) SCH_FBD nicht_aktiv 改为aktiv
14、PDC显示垂直和水平
HU_CIC PDC_DIRECTION horizontal 改为 vertical
15、交汇车远光灯自动控制(没有条件测试,不知道是否有效)
FRM FLA_AUTO_AKTIV manuel 改 automatisch
16、天使眼功能打开和取消
HU_CIC DAYDRIVING_LIGHT standerd为菜单可选;perm_off为关闭;prem_on为打开
17. 关闭发动机启停缺省打开功能
CAS TC_MSA_DEPAULT_OFF nicht aktiv 改为 aktiv
记忆上一次:
CAS TC_MSA_MEMORY nicht aktiv 改为 aktiv
18、GPS 时间同步
KOMBI GPS_UHR nicht aktiv改为aktiv
19、仪表模拟瞬时油耗20改30
KOMBI DIG_KVA_BEREICH 20_l/100km改为30_l/100km
20、修改安全带警告时间长度(原90秒,改好后为1秒,也就是叫一声就不叫了,也可以改为你想要的任意秒数,但要用十六进制)(这个最有用了,比那个直接关掉安全带提醒的强100倍~~~)
ACSM GWF_SBR_WARNDAUER Werte=5A 改为 Werte=01 10 秒0A 秒 20=14 秒 30=1E 40秒 =28 50秒 =32 60秒 =3C
21、DS显示S1—S7选择(通常改第一项就可以,如果不行两项都改)
EGS Sportschalter nicht aktiv改为aktiv
Sportschalter_ALT nicht aktiv改为aktiv
22、单麦克风设置
CMB_MEDIA USED_MICROPHONES stereo改为mono
23、发动机熄火中控自动解锁
CAS ER_KEYOUT_AUTOVR nicht aktiv改为aktiv
24、转向灯亮6次
FEM-BODY Blinkzyklen_Anzahl_Tipp Werte 2(闪三次)改为5(闪六次)
25、水平报警灵敏度调节,调到16,怎么震都不报警喔
FZD LIN_SINE Buzzer Level HIGH 最小值level_2,最大值level_16,默认值level_7
26、个性双跳灯(警示灯)
JBBF DOPPELBLINKIMPULS_WARNBLK
27、油耗柱状图
HU_CIC中打开ECO_MOD,改nicht_knive为knive
28、显示CIC版本
HU_CIC ENTWICKLER_MENUE nicht aktiv 改为 aktiv
29,天窗在打开状态下雨自动关闭 (刷此功能慎重)
FZD REGENSCHLIESSEN nicht_aktiv 改为 aktiv,,
30,天窗在倾斜状态下雨自动关闭 (刷此功能慎重)
FZD REGENSCHLIESSENTILT
31,天使眼亮度调节
FRM PWM_SL_1_FKT_SL_TFL默认wert_07,按01~09修改
32、HUD抬头显示隐藏功能 1,转向灯,
HU_CIC HUD_TURNSIGNAL nicht aktiv改为aktiv
KOMBI BLINKER_HUD_ENABLE nicht aktiv改为aktiv,
2,多媒体
KOMBI HUD_ENTERTAINMENT_ENABLE nicht aktiv改为aktiv
33平视显示距离显示
HU_CIC HUD_DISTANCE_INFO nickt-aktiv 改为 aktiv
34仪表盘的背景灯常亮
KOMBI M_TAG_SKALENBELEUCHTUNG nicht aktiv=00 修改为 aktiv=01
如刷机过程提示缺少文件可考虑下补丁,如没提示就不用加补丁。 cafd_00000794.caf.002_020_029:http://pan.baidu.com/share/link?shareid=100396&uk=2115507242 cafd_00000794.caf.004_122_077:http://pan.baidu.com/share/link?shareid=109644&uk=2115507242
石化集团20xx年主要工作总结及成效统计及快报方面公司一是要求各权属企业要严格按国资委要求的时限及时上报财务快报及分析资料,确保快…
20xx届高考政治一轮总结提炼训练:民族精神和先进文化建设(含答案解析)一、选择题1.绍兴是越剧的娘家。山野村夫的劳动之歌,妇孺皆…
【对点对位特训】20xx届高考政治一轮总结提炼训练:哲学思想与物质观、实践观(含答案解析)一、选择题1.维生素是维持人体正常功能的…
【对点对位特训】20xx届高考政治一轮总结提炼训练:生活与消费(含答案解析)一、选择题乡人种菜为业。每日晨起,担菜两筐,入城中,沿…
一、发达国家职业教育的特点1、思想重视考察发达国家的职业教育,其显著的特点之一,就是政府高度重视职业教育的发展,职业教育与其他教育…
[作者:张雪梅来源:应用写作杂志社点击数:1855更新时间:20xx-3-11文章录入:jlyhx]【字体:】(《应用写作》20x…
石化集团20xx年主要工作总结及成效统计及快报方面公司一是要求各权属企业要严格按国资委要求的时限及时上报财务快报及分析资料,确保快…
各制造部门及相关职能部门20xx年,各部门围绕年初制定的目标任务,认真扎实开展各项工作,取得了较好的成绩。为了回顾工作,总结成绩,…
总结写作中的经验提炼[作者:张雪梅来源:jihua918点击数:6942更新时间:20xx-03-1119:07:32文章录入:j…
素材是未经总结和提炼的实际生活现象,是文学、艺术的原始材料,“素材”写进文章之后就成为“题材”。广义的素材可以泛指客观大千世界里的…