我一直关注论坛,看到很多网友在他们的购物车上做了很多修改。真是了不起!不过,我也看到Zen Cart的用户说到修改重要文件的信息,如下:
/includes/filenames.php
/includes/languages/english.php
/includes/languages/english/*.php
还有很多。
注意——如果你想更简单的升级,就不要修改这些文件,。
这些地方的文件覆盖系统做得很好。因此你不必要修改核心文件。
如果你已经修改了这些文件,下次你升级到Zen Cart的最新版本时,要重写这些文件,而且会丢失之前所做的修改。
那么,如何避免这个问题呢?什么才是覆盖系统的正确方法呢?
下面,我总结了关于如何正确使用覆盖系统的步骤——不要修改你的核心文件!
我下面所举的例子都是假定
*假设你的默认语言设置为英语。
*假设模板名称是/CUSTOM
引用:
Originally
posted by DrByte
The
"custom" folder/directory can be WHATEVER you want it to be.... just
be consistent in ALL places where you create it so that the overrides work properly.
You could
call it anything like:
- mytemplate
- custom
- billg
- helluvacart
- zenrocks
-
thisseemstoolongatemplatename
-
supercalifragilisticexpialidocious
- tpl
and the list
goes on !!!!
**注意,一定要阅读“如何创建一个新的自定义模板”这篇文章?**
在/includes/languages/english.php文件里修改默认的语言文件
例如:你需要修改标题,所以它会读取你的商店的名称而不是Zen Cart的。
在 /includes/languages中,设置一个与模板名称相同的目录名称,现在你有/includes/languages/custom文件。
复制english.php 到该目录
接下来,可以在新文件/includes/languages/custom/english.php里做任意的修改。
在/includes/languages/english/*.php 文件里修改语言文件。(该目录的所有文件)
例如:你需要在account.php 文件里修改一些文本。比方说,你想要修改'Account'为'Profile'。
设置一个与模板名称相同的目录名称。假设模板名称是custom.。这个目录的路径将是:
/includes/languages/english/custom
复制原始文件/includes/languages/english/account.php 到新的文件夹/includes/languages/english/CUSTOM
然后,修改自定义文件夹中的文件。这将“覆盖”/includes/languages/english现有的文件,从而使核心文件完整且独立。
另一个例子:/includes/languages/english/CUSTOM/meta_tags.php
(/includes/languages/english/meta_tags.php的副本):
代码:
define('TITLE', 'Zen Cart!');
变成代码:
define('TITLE', 'Your Store
Name');
修改模板文件
/includes/templates/template_default/templates/tpl_*_default.php
例如,你需要修改tpl_account_default.php文件中的一些HTML语言。
在模板目录( /includes/templates/CUSTOM ) ,你应该已经有一个文件夹模板了(
/includes/templates/CUSTOM/templates )。
复制 tpl_account_default.php到此目录。然后你可以做一些修改,它会再次覆盖/includes/templates/template_default/templates
directory.的基础文件。
你只能复制文件到你修改过的/CUSTOM template directory ,如果不作修改,则默认情况下,商店会从默认模板目录里call默认文件。
修改Sidebox模板
这些遵循定期模板(见上文)相同的格式,只有sidebox路径例外:/includes/templates/CUSTOM/sideboxes
修改Sideboxe模块 -/includes/modules/sideboxes/*.php
例如:修改sidebox information.php文件去包含另一个链接。
在你的sidebox目录(/includes/modules/sideboxes),创建另一个子目录,跟模板/CUSTOM同名,这样,你就有/includes/modules/sideboxes/custom文件了。
复制/includes/modules/sideboxes/information.php 到这个新文件夹。
稍后可以修改副本以满足需求,并且自定义版本将覆盖 /includes/modules/sideboxes的default
information.php文件。
通过登录到Admin->Tools->Layout Boxes Controller,你可以验证这个sidebox是否被覆盖。在'Box
File Name'列里,如果文字显示为红色,就表明被覆盖了。
在/includes/filenames.php文件中调用自定义文件名
例如:你可以创建一个“关于我们”的自定义页面,并需要call文件名。
与其放一个新定义在/includes/filenames.php文件中,不如从现有extra_datafiles目录调用文件名:
/includes/extra_datafiles.
创建一个新的文件名,about_us_filenames.php,然后放在/includes/extra_datafiles文件中。
在这个文件中,你将有代码:
<?php
// About Us
Filename Define
*define('FILENAME_ABOUT_US', 'about_us');
?>
该文件将被自动调用,就像 此目录中的任何其他文件,从而区别你的自定义文件名是什么系统。
尽量保持其他新文件格式一致。例如,调用命名文件或者有关文件等等。blah_filenames.php
在/includes/database_tables.php文件中调用自定义数据库表
例如:为你的UPS跟踪系统创建一个新的数据库,ups_track,需要为代码定义表名。
与其放一个新定义在/includes/database_tables.php文件中,不如从extra_datafiles
directory调用表名。
/includes/extra_datafiles.
创建一个新的文件名,ups_track_database_tables.php ,然后把它放在
/includes/extra_datafiles.文件里。
在这个文件里,你会获得一些代码:
<?php // UPS Tracking Table define('TABLE_UPS_TRACK', 'ups_track'); ?>
该文件将被自动调用,就像 此目录中的任何其他文件,从而告区别你的自定义文件名是什么系统。
附加语言文件
你需要一个叫做extra language definitions附加文件为你在资源中心创建的新框。
在/includes/languages/english/extra_definitions文件中,创建一个名为resource_center_box_defines.php的文件。把
language definitions放到你新的自定义sidebox里。
这个目录会自动加载,确保自定义框或页面被称为language definitions。
添加额外的JavaScript到一个特定的页面
例如:为你的Bizrate帐号加载一些JavaScript,使它能够在订单完成之后,从现有页面的checkout_success.php文件中加载。
在/includes/modules/pages/checkout_success目录中,
创建一个新的文件,命名为
jscript_bizrate.js
在这个文件中,你应该把 bizrate给你的代码放在你自定义的javascript 中,像这样:
<script
language="javascript" type="text/javascript"><!—
whatever the heck bizrate gave you
//--></script>
同样的,如果你使用Google的转换跟踪。在所需的文件夹中创建另一个文件(即:checkout_success如果只在该网页上处理),也许命名为jscript_google.php
CSS文件添加与修改
例如:你已经创建了一个新的对于你的网站来说是唯一的CSS类。
与其添加这个到你现有的CSS文件在/includes/templates/custom/css/stylesheet.css里,不如创建一个同样目录名为styleSOMETHINGHERE.css的新文件,并在那里添加CSS数据。
Zen Cart将从该文件夹中自动加载所有的"style*.css"
文件,按字母顺序排列,when
drawing your store's pages with that template.
升级
最后,我们需要谈谈升级的问题!
所以,你现在正常使用Zen Cart的覆盖系统!恭喜你,给自己一个掌声。现在,升级 - 你不必担心过度书写自定义文件,因为你所有的文件都在自定义目录里!
所以,做好升级。比如添加新的代码到核心文件,现在,你可以把你的自定义目录,比较新的核心文件的代码。
比如,自定义到/includes/languages/custom/english.php 文件中,然后升级,有一些新的定义在
/includes/languages/english.php ,你需要把这些定义放到你的 english.php文件中。
最简单的方法就是使用文件比较utilty!
强烈建议使用 Beyond Compare - 是的,它的成本只是30美元,但它的价值远不止于此!
好吧,如果你想要更便宜的,可以随时去WinMerge,打开资源并免费索取。
一旦得到了比较utilty文件,你可以比较你的/includes/languages/custom/english.php到新的核心文件,
/includes/languages/english.php,并覆盖新变化到你的文件。在所有的覆盖文件中复制所有的自定义文件。然后上传这些修改到你的网站,随着新版本的其他更新。有关升级的其他问题,还有更多细节,但这是整体的概念。 |