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:
    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'
    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.
Module Files
  • 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. 
    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
Note: files in this directory get loaded automatically, ensuring your custom definitions can be used throughout your cart.

Extra Data Files
  • Custom file names - /includes/filenames.php
    You've created a custom page (about_us) and need to reference the filename.
    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.
Note: These files will be called automatically, as would any other file in this directory, thereby telling the system what your custom filenames are.

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.
    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.
Note: These files will be called automatically, as would any other file in this directory, thereby telling the system what your custom filenames are.

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.
  • 50 Users Found This Useful
Was this answer helpful?

Related Articles

How can I find out what version of Zen Cart or PHP or MySQL I'm using?

To find out what version of Zen Cart or PHP or MySQL you are currently using, you can simply go...

Getting a BLANK PAGE? Here's the answer ...

If you're getting a blank page when trying to browse to a certain page on your store, or after...

What's New in the Upcoming v2.0 release?

Database Abstraction Layer and Sql CacheThe abstraction layer has been re-factored to include a...

Image Preparation - How-to

I've seen several posts where people obviously aren't quite sure about the best way to set up...

Some tips to modify stylesheet

1. Download Web Developer extension for FireFox here2. Install & restart FireFox. You should...