Understanding the Override System
This article is based on material originally posted by Networkdad, DrByte and other contributors.
"Template Override" and "Override System" are terms used to describe the collection of files needed to build or customize the look of your cart. Using Overrides allows you to make and save changes to your cart without the fear of losing them when upgrades and patches are released. Also See: The Override System Simplified.
The Override System includes:
CAPITALIZED words refer to a folder or language that you choose. This article uses /CUSTOM for your template and ENGLISH for your language. Use your own name wherever you see /CUSTOM.
Note: be sure to read How do I create a new Custom Template?
Remember only files which have been modified should be copied to your /CUSTOM directory. If you do not make modifications, then by default, Zen Cart® will use the default file.
Language Files
Template Files
Create Your Own Definitions
Extra Data Files
Custom Database Tables
Extra Javascript for an existing file
Zen Cart® Upgrades
Using the override system means you don't have to worry about over-writing your custom files when an upgrade comes along, because they are all in custom directories.
During an upgrade you may find that new code was added to some of the core files that you are overriding. Its very easy to compare the files in your override directories to the upgraded files. Using a file compare utility such as Beyond Compare or WinMerge you can incorporate the changes into your override files.
Save the changed files and upload them to your server.
"Template Override" and "Override System" are terms used to describe the collection of files needed to build or customize the look of your cart. Using Overrides allows you to make and save changes to your cart without the fear of losing them when upgrades and patches are released. Also See: The Override System Simplified.
The Override System includes:
Language Files: includes/languages
Module Files: includes/modules
Template Files: includes/templates/template_default
Extra Definitions: includes/languages/ENGLISH/extra_definitions
Extra Data Files: includes/extra_datafiles
CAPITALIZED words refer to a folder or language that you choose. This article uses /CUSTOM for your template and ENGLISH for your language. Use your own name wherever you see /CUSTOM.
Note: be sure to read How do I create a new Custom Template?
Remember only files which have been modified should be copied to your /CUSTOM directory. If you do not make modifications, then by default, Zen Cart® will use the default file.
Language Files
- Global information: /includes/languages/english.php
Suppose you want to change the Heading of your Categories sidebox.
Create a new directory: /includes/languages/CUSTOM
Copy english.php to this new directory
You now have /includes/languages/CUSTOM/english.php
Open the file in a text editor find and modify the following line of code
define('BOX_HEADING_CATEGORIES', 'Categories');
Save the file and upload your new directory and its contents to your server.
- Page Specific information: /includes/languages/ENGLISH/*.php (all files within this directory)
You need to modify some text in account.php - Let's say you want to change every instance of the word 'Account' to 'Profile'Module Files
Create a new directory: /includes/languages/ENGLISH/CUSTOM
Copy account.php to this new directory
You now have /includes/languages/ENGLISH/CUSTOM/account.php
Open the file in a text editor find and modify the following line of code
define('MY_ACCOUNT_TITLE', 'My Account');
Save the file and upload your new directory and its contents to your server.
- Sideboxes information: /includes/modules/sideboxes/*.php
You need to modify sidebox information.php to include another link.
Create a new directory: /includes/modules/sideboxes/CUSTOM
Copy information.php to this new folder
You now have /includes/modules/sideboxes/CUSTOM/information.php
Open the file in a text editor and modify it to suit your needs
Save the file and upload your new directory and its contents to your server.
Template Files
- Page templates: /includes/templates/template_default/templates/tpl_***.php
You need to modify some part of tpl_account_default.php
You should already have the following folder structure /includes/templates/CUSTOM/templates.
Copy tpl_account_default.php to this directory.
Open the file in a text editor find modify it to suit your needs
Save the file and upload it to your server.
- Sidebox templates: /includes/templates/sideboxes/tpl_***.php
To modify these files follow the steps above, with the exception of the sidebox path.
Create Your Own Definitions
As you customize your cart, you may find that you need to include additional definitions.Note: files in this directory get loaded automatically, ensuring your custom definitions can be used throughout your cart.
You can do this by using your text editor to create a definition file - your_definition_file.php.
All the definitions you need for your customization would be included in this file.
Save the file to includes/languages/ENGLISH/extra_definitions/your_definition_file.php and upload it to your server
Extra Data Files
- Custom file names - /includes/filenames.php
You've created a custom page (about_us) and need to reference the filename.Note: These files will be called automatically, as would any other file in this directory, thereby telling the system what your custom filenames are.
Create a new file (about_us_filenames.php) which would include the following:
<?php
// About Us Filename Define
define('FILENAME_ABOUT_US', 'about_us');
?>
Save the file to /includes/extra_datafiles/about_us_filenames.php and upload it to your server.
Custom Database Tables
You've created a new database field for your UPS tracking system, ups_track and need to define the table name for your code.Note: These files will be called automatically, as would any other file in this directory, thereby telling the system what your custom filenames are.
Create a new file (ups_track_database_tables.php) which would include the following:
<?php
// UPS Tracking Table
define ('TABLE_UPS_TRACK', 'ups_track');
?>
Save the file to /includes/extra_datafiles/usps_track_database_tables.php and upload it to your server.
Extra Javascript for an existing file
You need to load some javascript for your bizrate account, so that it loads from the existing page (checkout_success.php) after the order has completed.
Create a new file named jscript_bizrate.js which would include the following:
<script language="javascript" type="text/javascript"><!--
whatever the heck bizrate gave you
//--></script>
Save the file to /includes/modules/pages/checkout_success and upload it to your server.
Zen Cart® Upgrades
Using the override system means you don't have to worry about over-writing your custom files when an upgrade comes along, because they are all in custom directories.
During an upgrade you may find that new code was added to some of the core files that you are overriding. Its very easy to compare the files in your override directories to the upgraded files. Using a file compare utility such as Beyond Compare or WinMerge you can incorporate the changes into your override files.
Save the changed files and upload them to your server.