zencart主要文件的功能总结和提炼

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()是按顺序找的,所以你只要在你的模板文件中存在该文件即可

 

第二篇:F系可刷主要功能总结

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

相关推荐