CS-Cart follows a modular architecture philosophy: there is a core part, which is responsible for the basic functionality, and numerous add-ons that extend it. Here are the core components:
Important
Core functions, controllers, templates, and schemes are strongly not recommended to be edited directly. Use add-ons to extend the default software behavior.
CS-Cart follows the MVC (Model-View-Controller) pattern.
Data model is stored directly in the database. The database engine used is MySQL, so the program components get data from the model using the MySQL SQL-query language with the help of placeholders.
Example:
$data = array (
    'payment_id' => 5
);
$order_id = 3;
db_query('UPDATE ?:orders SET ?u WHERE order_id = ?i', $data, $order_id);
CS-Cart uses the Smarty template engine and JavaScript to represent data. An example of a Smarty template with embedded JavaScript code:
{** block-description:my_twitter_addon **}
<script src="http://widgets.twimg.com/j/2/widget.js"></script>
<script>
new TWTR.Widget({ldelim}
    version: 2,
    type: 'profile',
    rpp: {$addons.my_twitter_addon.number_of_tweets},
    interval: 6000,
    width: 'auto',
    height: 300,
    theme: {ldelim}
        shell: {ldelim}
            background: '#FFFFFF',
            color: '#373737'
        {rdelim},
        tweets: {ldelim}
            background: '#D9EFF3',
            color: '#373737',
            links: '#005865'
        {rdelim}
    {rdelim},
    features: {ldelim}
        scrollbar: true,
        loop: true,
        live: true,
        hashtags: true,
        timestamp: true,
        avatars: true,
        behavior: 'default'
    {rdelim}
{rdelim}).render().setUser('{$addons.my_twitter_addon.username}').start();
</script>
Learn more about data representation in CS-Cart.
Controllers are written in PHP. Core controllers are located in the controllers directory; add-ons can define their own controllers to be put in the respective add-on directories.
Questions & Feedback
Have any questions that weren't answered here? Need help with solving a problem in your online store? Want to report a bug in our software? Find out how to contact us.