コア

CS-Cart は、モジュラーアーキテクチャの哲学に従っています。

モジュラーアーキテクチャとは、構成要素がモジュール化されており、それらを結合することでシステムを設計・開発・製造できるように形作られたアーキテクチャのことです。

CS-Cartには、基本的な機能を担当するコア部分と、それを拡張する多数のアドオンがあります。

コアコンポーネントは次のとおりです。

  • コーディング規約
    • フック
    • HTML、CSS、JavaScript、Smarty
    • jQuery
    • PHP
  • コンテキストメニュー
  • コントローラー
    • プリコントローラーとポストコントローラー
  • データベースとの連携
    • 追加データベースの接続
    • プレースホルダーを使用したデータベースクエリの作成
    • データベースの構造と命名
  • メールテンプレートとドキュメントエディタ
    • メール通知
    • ドキュメント
    • スニペット
  • フロントエンド
    • ブロック
    • AJAXリクエストの使用
    • 特殊クラス
    • Microformats
    • 通知
  • 設定
  • コア機能
  • イベント通知
  • 言語変数
  • 複数のストアフロント
  • スキーム
  • アップグレードセンター

コア関数、コントローラー、テンプレート、スキームを直接編集することは推奨されません。アドオンを使用して、ソフトウェアのデフォルト動作を拡張してください。

CS-Cartは、MVC(Model-View-Controller)パターンに従っています。

MVC:モデル

データモデルは、直接データベースに保存されます。データベースエンジンはMySQLを使用しているため、プログラムのコンポーネントは、プレースホルダーを使用し、MySQL SQLクエリ言語を使用してモデルからデータを取得します。

$data = array (
    'payment_id' => 5
);

$order_id = 3;

db_query('UPDATE ?:orders SET ?u WHERE order_id = ?i', $data, $order_id);

MVC:表示

CS-Cartは、テンプレートエンジンの Smarty と JavaScript を使用してデータを表示します。

JavaScript が埋め込まれた Smarty テンプレートの例

{** 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>

MVC:コントローラー

コントローラはPHPで書かれています。

コアコントローラは、 controllers ディレクトリにあります。

アドオンは独自のコントローラを定義して、各アドオンディレクトリに配置することができます。