CS-Cartの自作Addonでコントローラを追加して、管理画面(backend)を追加する方法。
CS-CartではURLとコントローラがどう対応しているか?
http://example.com/admin.php?dispatch=[コントローラ名].[モード名]
上のURLは下のコントローラに対応する。
app/addons/[アドオンID]/controllers/backend/[コントローラ名].php
コントローラ名はグローバルなので、dispatchパラメータにはアドオン名が含まれない。
モード名は、コントローラのファイルで自動定義される$mode
変数に入ってくるので、ファイル名には出てこない。
例えば、http://example.com/admin.php?dispatch=my_controller.update
にアクセスしたら、インストールされているアドオンからmy_controller.php
を探してきて実行される。
コントローラを作ったのに404になるのですが?
コントローラを作っただけでは、CS-Cartは404エラーを返す。これはviewテンプレートがないため。テンプレートを作るとエラーが解消される。
テンプレートのファイル名は
- design/backend/templates/addons/[アドオンID]/views/[コントローラ名]/[モード名].tpl
となる。
design/backend/templates/addons/myaddon/views/my_controller/update.tpl
{capture name="mainbox"}
メインボックス
{/capture}
{capture name="buttons"}
ボタン
{/capture}
{capture name="sidebar"}
サイドバー
{/capture}
{include
file="common/mainbox.tpl"
title=__("my_addon")
content=$smarty.capture.mainbox
buttons=$smarty.capture.buttons
sidebar=$smarty.capture.sidebar}