zen Cart二次开发笔记.docx
- 文档编号:11346165
- 上传时间:2023-02-28
- 格式:DOCX
- 页数:19
- 大小:35.66KB
zen Cart二次开发笔记.docx
《zen Cart二次开发笔记.docx》由会员分享,可在线阅读,更多相关《zen Cart二次开发笔记.docx(19页珍藏版)》请在冰豆网上搜索。
zenCart二次开发笔记
CenCart二次开发
Author:
leafageQ:
317856394
跟着序程跑(安装略)
http:
//localhost/testCart/index.php
require('includes/application_top.php');//包含以下重要信息
define('DEBUG_AUTOLOAD',false);//debug
include('includes/configure.php');
/**
*ifmainconfigurefiledoesn'tcontainvalidinfo(ie:
isdummyordoesn'tmatchfilestructure,displayassistancepagetosuggestrunningtheinstaller)如果主要的配置文件不包含有效的信息(即:
是假的或不匹配filestructure,显示帮助页面,建议在运行安装程序)也就是这个是安装时用的,不用管
*/
if(!
defined('DIR_FS_CATALOG')||!
is_dir(DIR_FS_CATALOG.'/includes/classes')){
$problemString='includes/configure.phpfilecontentsinvalid.ie:
DIR_FS_CATALOGnotvalidornotset';
require('includes/templates/template_default/templates/tpl_zc_install_suggested_default.php');
exit;
}
require('includes/initsystem.php');
进入这个文件是一个加载文件器的初始工作
$base_dir=DIR_WS_INCLUDES.'auto_loaders/';
if(file_exists(DIR_WS_INCLUDES.'auto_loaders/overrides/'.$loader_file)){
$base_dir=DIR_WS_INCLUDES.'auto_loaders/overrides/';
}
/**
*loadthedefaultapplication_topautoloaderfile.
*/
include($base_dir.$loader_file);
if($loader_dir=dir(DIR_WS_INCLUDES.'auto_loaders')){
while($loader_file=$loader_dir->read()){
$matchPattern='/^'.$loaderPrefix.'\./';
if((preg_match($matchPattern,$loader_file)>0)&&(preg_match('/\.php$/',$loader_file)>0)){
if($loader_file!
=$loaderPrefix.'.core.php'){
$base_dir=DIR_WS_INCLUDES.'auto_loaders/';
加载了config.core.php和paypal_ipn.core.php这两个文件
config.core.php
/**
*加载了下面的文件并放入$autoLoadConfig数组里
*require(DIR_WS_CLASSES.'class.base.php');
*require(DIR_WS_CLASSES.'class.notifier.php');
*$zco_notifier=newnotifier()'
*require(DIR_WS_CLASSES.'mime.php');
*require(DIR_WS_CLASSES.'email.php');
*require(DIR_WS_CLASSES.'boxes.php');
*require(DIR_WS_CLASSES.'category_tree.php');
*require(DIR_WS_CLASSES.'cache.php');
*require(DIR_WS_CLASSES.'sniffer.php');
*require(DIR_WS_CLASSES.'shopping_cart.php');
*require(DIR_WS_CLASSES.'navigation_history.php');
*require(DIR_WS_CLASSES.'currencies.php');
*require(DIR_WS_CLASSES.'message_stack.php');
*require(DIR_WS_CLASSES.'template_func.php');
*require(DIR_WS_CLASSES.'split_page_results.php');
*require(DIR_WS_CLASSES.'breadcrumb.php');
*require(DIR_WS_CLASSES.'language.php');
*
*/
$autoLoadConfig[0][]=array('autoType'=>'class',
'loadFile'=>'class.base.php');
$autoLoadConfig[0][]=array('autoType'=>'class',
'loadFile'=>'class.notifier.php');
$autoLoadConfig[0][]=array('autoType'=>'classInstantiate',
'className'=>'notifier',
'objectName'=>'zco_notifier');
$autoLoadConfig[0][]=array('autoType'=>'class',
'loadFile'=>'class.phpmailer.php');
。
。
。
让人还看不懂的是有下面的加载一直到Breakpoint180
$autoLoadConfig[10][]=array('autoType'=>'init_script',
'loadFile'=>'init_file_db_names.php');
$autoLoadConfig[10][]=array('autoType'=>'init_script',
'loadFile'=>'init_database.php');
/**
*Breakpoint60.
*
*require('includes/init_includes/init_general_funcs.php');
*require('includes/init_includes/init_tlds.php');
*/
$autoLoadConfig[60][]=array('autoType'=>'init_script',
'loadFile'=>'init_general_funcs.php');
$autoLoadConfig[60][]=array('autoType'=>'init_script',
'loadFile'=>'init_tlds.php');
/**
*Breakpoint70.
*require('includes/init_includes/init_sessions.php');
*/
$autoLoadConfig[70][]=array('autoType'=>'init_script',
'loadFile'=>'init_sessions.php');
显然模块很细,并且一次性
装入内存中,运行起来速度优势。
还有
里的部分文件。
比如:
在加载inti_databasese.php里
require('includes/classes/db/'.DB_TYPE.'/query_factory.php');
/**
*loadtheautoloaderinterpretercode.
加载自动加载器代码这个很迷惑人
*/
require('includes/autoload_func.php');
Configure.php内容以DIR_开头数据连字符串
define('HTTP_SERVER','http:
//localhost');
define('HTTPS_SERVER','https:
//localhost');
//Usesecurewebserverforcheckoutprocedure?
define('ENABLE_SSL','false');
//NOTE:
besuretoleavethetrailing'/'attheendoftheselinesifyoumakechanges!
//*DIR_WS_*=Webserverdirectories(virtual/URL)
//thesepathsarerelativetotopofyourwebspace...(ie:
underthepublic_htmlorhttpdocsfolder)
define('DIR_WS_CATALOG','/zenCart/');
define('DIR_WS_HTTPS_CATALOG','/zenCart/');
define('DIR_WS_IMAGES','images/');
define('DIR_WS_INCLUDES','includes/');
define('DIR_WS_FUNCTIONS',DIR_WS_INCLUDES.'functions/');
define('DIR_WS_CLASSES',DIR_WS_INCLUDES.'classes/');
define('DIR_WS_MODULES',DIR_WS_INCLUDES.'modules/');
define('DIR_WS_LANGUAGES',DIR_WS_INCLUDES.'languages/');
define('DIR_WS_DOWNLOAD_PUBLIC',DIR_WS_CATALOG.'pub/');
define('DIR_WS_TEMPLATES',DIR_WS_INCLUDES.'templates/');
define('DIR_WS_PHPBB','/');
//*DIR_FS_*=Filesystemdirectories(local/physical)
//thefollowingpathisaCOMPLETEpathtoyourZenCartfiles.eg:
/var/www/vhost/accountname/public_html/store/
define('DIR_FS_CATALOG','D:
/APMServ/www/htdocs/zenCart/');
define('DIR_FS_DOWNLOAD',DIR_FS_CATALOG.'download/');
define('DIR_FS_DOWNLOAD_PUBLIC',DIR_FS_CATALOG.'pub/');
define('DIR_WS_UPLOADS',DIR_WS_IMAGES.'uploads/');
define('DIR_FS_UPLOADS',DIR_FS_CATALOG.DIR_WS_UPLOADS);
define('DIR_FS_EMAIL_TEMPLATES',DIR_FS_CATALOG.'email/');
//defineourdatabaseconnection
define('DB_TYPE','mysql');
define('DB_CHARSET','utf8');
define('DB_PREFIX','zen_');
define('DB_SERVER','localhost');
define('DB_SERVER_USERNAME','root');
define('DB_SERVER_PASSWORD','root');
define('DB_DATABASE','zencart');
define('USE_PCONNECT','false');
define('STORE_SESSIONS','db');
//forSTORE_SESSIONS,use'db'forbestsupport,or''forfile-basedstorage
//Thenext2"defines"areforSQLcachesupport.
//ForSQL_CACHE_METHOD,youcanselectfrom:
none,database,orfile
//Ifyouchoose"file",thenyouneedtosettheDIR_FS_SQL_CACHEtoadirectorywhereyourapache
//orwebserveruserhaswriteprivileges(chmod666or777).Werecommendusingthe"cache"folderinsidetheZenCartfolder
//ie:
/path/to/your/webspace/public_html/zen/cache--leavenotrailingslash
define('SQL_CACHE_METHOD','none');
define('DIR_FS_SQL_CACHE','D:
/APMServ/www/htdocs/zenCart/cache');
//EOF
/**
*loadthecountercode
**/
if($spider_flag==false){
//counterandcounterhistory
require(DIR_WS_INCLUDES.'counter.php');
}
counter.php
下面是客户登陆记录
if(isset($_SESSION['session_counter'])&&$_SESSION['session_counter']==true){
$session_counter=0;
}else{
$session_counter=1;
$_SESSION['session_counter']=true;
}
回到index.php
$language_page_directory=DIR_WS_LANGUAGES.$_SESSION['language'].'/';//语言
$directory_array=$template->get_template_part($code_page_directory,'/^header_php/');
Template
template_func.php
//这个类是用来为模板覆盖计算
classtemplate_funcextendsbase{
functiontemplate_func($template_dir='default'){
$this->info=array();
}
//得到模板文件的路径且返回,而下一方法是只得到模板路径因为模板是可以换的
functionget_template_part($page_directory,$template_part,$file_extension='.php'){
$directory_array=array();
if($dir=@dir($page_directory)){
while($file=$dir->read()){
if(!
is_dir($page_directory.$file)){
if(substr($file,strrpos($file,'.'))==$file_extension&&preg_match($template_part,$file)){
$directory_array[]=$file;
}
}
}
sort($directory_array);
$dir->close();
}
return$directory_array;
}
functionget_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,preg_replace('/\//','',$template_code),$debug)){
returnDIR_WS_TEMPLATES.'template_default/'.$current_page;
}elseif($this->file_exists($current_template.$template_dir,preg_replace('/\//','',$template_code),$debug)){
return$current_template.$template_dir;
}else{
returnDIR_WS_TEMPLATES.'template_default/'.$template_dir;
//return$current_template.$template_dir;
}
}
functionfile_exists($file_dir,$file_pattern,$debug=false){
$file_found=false;
$file_pattern='/'.str_replace("/","\/",$file_pattern).'$/';
if($mydir=@dir($file_dir)){
while($file=$mydir->read()){
if(preg_match($file_pattern,$file)){
$file_found=true;
break;
}
}
$mydir->close();
}
return$file_found;
}
}
在inti_template.php里有两句:
require(DIR_FS_CATALOG.DIR_WS_CLASSES.'template_func.php');
$template=newtemplate_func(DIR_WS_TEMPLATE);
回到index.php里:
$directory_array=$template->get_template_part($code_page_directory,'/^header_php/');
foreach($directory_arrayas$value){
/**
*Wenowloadheadercodeforagivenpage.
*Pagecodeisstoredinincludes/modules/pages/PAGE_NAME/directory
*'header_php.php'filesinthatdirectoryareloadednow.
*加载页面信息,页面的制定存储在SQL里面,这些参数在后台设置的
*/
require($code_page_directory.'/'.$value);
}
require($template->get_template_dir('html_header.php',DIR_WS_TEMPLATE,$current_page_base,'common').'/html_header.php');
//**
require($template->get_template_dir('main_template_vars.php',DIR_WS_TEMPLATE,$current_page_base,'common').'/main_template_vars.php');
//**下面是找到pages/目录下以on_load_开头的js文件。
$directory_array=$template->get_template_part(DIR_WS_MODULES.'pages/'.$current_page_base,'/^on_load_/','.js');
foreach($directory_arrayas$value){
$onload_file=DIR_WS_MODULES.'pages/'.$current_page_base.'/'.$value;
$read_contents='';
$lines=@file($onload_file);
foreach($linesas$line){
$read_contents.=$line;
}
$za_onload_array[]=$read_contents;
}
//nowread"includ
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- zen Cart二次开发笔记 Cart 二次开发 笔记