CS-Cart用アドオン いくつか出来上がってきてます

ひとまず速報的に。

  • ショップ側ソート順拡張アドオン:ショップ側商品一覧の「ソート順」に「登録日順」を追加する
  • 詳細検索結果の拡張アドオン:新着商品、全商品を詳細検索の検索結果として一覧表示する
  • 管理側受注一覧検索拡張アドオン:受注一覧の詳細検索に「支払方法」を追加する
  • 受注商品のソート順指定アドオン:納品書や配送表等で受注商品の並び順をコントロールする

個々のネーミングは未定です。。

リリースタイミングも未定です。

先日告知した「日付オプション追加アドオンの機能追加」と同時にリリースしようかなと思ってます。

CS-Cart 日付オプション追加アドオンの拡張

先日リリースした日付オプション追加アドオンですが、必要に迫られていくつか機能拡張しました。

基本機能は下記の通りです。

  • オプションに日付を追加
  • 入力にカレンダーからの選択機能を追加
  • 携帯対応(通常のテキストフィールド)

これに下記の機能を追加しました。

  • 入力文字列の正規表現バリデート(デフォルトで持っている機能を当該アドオンでも利用するようにしただけですが。)
  • 特定の日付指定に対応(カンマ区切りで複数指定可 ex 2012/03/15,2012/03/30)
  • 日付範囲の指定に対応(入力可能な日付範囲を指定 ex 2012/04/01%%2012/05/26)
  • 当日より前の日付の指定禁止に対応(当日以降の日付選択のみに)
  • 携帯アドオンに完全対応(日付をセレクトボックスで生成 指定日も範囲も当日以降の日付表示も対応)

指定範囲を外れた入力に対してはPHP側でチェックします。
正規表現をうまく使えばデフォルトのバリデーションでチェックできます。
(上記画像の正規表現項目に設定してあるのは日付フォーマットのチェック用です)

これらの設定は商品の編集画面のオプションタブで行います。
携帯アドオンをご利用の場合には携帯用言語に切り替えてそちらでも設定する必要がありますので注意が必要です。

性質上「特定の日付指定」と「日付範囲の指定」は排他関係にありますが、それぞれの設定項目の入力制限は実装していませんので設定時にはどちらか片方のみにするようにしてください。(アップデートのリリース時には対応するかもしれませんが未定です)

このアドオンは某サイトのチケット販売でご利用頂いています。
(公開が可能であればご紹介させていただきますが現段階では導入サイトは非公開です)

ちなみに、CS-Cartでは jQuery UI のDatepicker が採用されています。

CS-Cart アドオンの構成

まず、アドオンには決められた作法があります。

ディレクトリ構成、ファイル構成、それらの名称が下記のように定められています。

 

ディレクトリ構成

/addons/[アドオン名]
アドオンのPHPファイルを格納するディレクトリ

/var/skins_repository/base/customer/addons/[アドオン名]
ショップフロント側で使用するアドオン用スキンファイルを格納するディレクトリ

/var/skins_repository/base/admin/addons/[アドオン名]
管理者用パネル側で使用するアドオン用スキンファイルを格納するディレクトリ

/var/skins_repository/base/mail/addons/[アドオン名]
アドオン用Eメールテンプレートを格納するディレクトリ

※ /addons/[アドオン名] 以外のディレクトリはアドオンの構成上必要な場合のみ作成(下位階層も同様)

ファイル構成

/addons/[アドオン名]のディレクトリに配置するファイルは下記の通り。

addon.xml
アドオンの設定ファイル。アドオンのインストールやアンインストールに必要。

func.php
アドオンのコントローラー内で使用する関数を定義するファイル。

init.php
アドオンで使用するフックを登録するファイル。

config.php
アドオンで使用する定数や各種設定値を登録するファイル。

/controllers
アドオンで使用するコントローラーおよびCS-Cart標準コントローラーのプレコントローラーおよびポストコントローラーを格納するディレクトリ。

/schemas
管理者用パネル内のメニューや管理者に付与する権限など、既存のスキーマを拡張するファイルを格納するディレクトリ。

 

全てのアドオンは上記のような構成で成り立っています。

上記のディレクトリ構成を見ると分かりますが、/var/skins_repository/以下に置くディレクトリの下位階層について触れていません。(テンプレートでの表示側ですね)

これらは必要に応じてと書いていますが、おおざっぱに言うとCS-Cart本体のディレクトリ構成に準じた命名規則と配置で設置します。
admin側、customer側、mail以下ではその構成が異なりますが多くのアドオンは下記のようなディレクトリを持っています。
(一部CS-Cart本体に無いディレクトリ名を使っている物もあります。が理由が無い限りCS-Cart本体のディレクトリ構成に則った方が良いと思います。)

/var/skins_repository/base/admin/addons/[アドオン名]以下

  • common_templates
  • hooks
  • views

/var/skins_repository/base/customer/addons/[アドオン名]以下

  • blocks
  • hooks
  • views

/var/skins_repository/base/mail/addons/[アドオン名]以下

  • hooks

 

まずはアドオンがどういった構成で成り立っているのか上記を念頭においてください。

 

下記は実際のアドオンの構成例です。

CS-Cart アドオン開発リファレンス

これ需要あるかなー。

飯のタネなんでこういうことを明文化するのは賛否ありそうなんだけど「CS-Cart利用者」を増やす為には「採用サイトを増やす」ことと同じくらい、いや普及フェーズにおいてはそれ以上に「CS-Cartをプロモーション」する必要がある。

その為には「CS-Cartってなんぞや」ということを紹介していかなきゃいけない。

機能紹介はうちのサイトでもそのうち拡充するとして、今現在あんどぷらすにしか出来ないことをやるべきなんじゃないかと。

そのひとつが「アドオン」に関すること。

アドオンの受託開発は勿論業務として行っているんだけど、もっと多くの優秀な人たちにアドオン開発に参加してもらいたい。
世のPGとか俺より遥かに優秀な人たちばかりなので参入されるのは脅威でもあるんだけど。

そんなわけで「アドオンの作り方」的な記事を書いていこうと思う。
本当はCS-Cartそのものの動作について触れるべきなんだけどそこは最大限省略。

 

CS-Cartではアドオンと呼んでいるけど、ZenCartではモジュール、WordPressではプラグイン。色々呼び名はあるけどまぁ似たようなもの。

WordPressでは管理画面からプラグインを探してオンラインでインストールできちゃう。アップデートも管理画面からポチってやるだけで終わる。基本的にはどのプラグインも共通の作法に則って作られてるからできる芸当。
良い仕組みだよね。

ZenCartはFTPアップロードしてモジュールごとの仕様でインストール方法が異なる。ものによっては手動でSQLを走らせる必要がある。

CS-CartはアドオンのファイルをFTPでアップロードする必要はあるけど本体へのインストール、アンインストールは管理画面からポチっとすれば終わる。XOOPSみたいな感じ。

 

WordPress優位かな。現状は。
でもいずれCS-CartもWordPress的になると思うよ。いつになるか分かんないけどw

 

アドオンの構成

アドオンの仕組み(未

CS-Cart 2.2.4-jp-1 アップデート

CS-Cart 2.2.4-jp-1 どこが変わったかなーとちょっとだけマージツールで比較してみた。
(運用サイトは特に気にせずアップデート済み)

個人的に気になっていた「[*] アドオン : アドオンの設定画面に独自テンプレートを利用可能に」 がどうなってるのか調べようと。
ほんとはリリース済み、リリース待ちのアドオンが2.2.4-jp-1でちゃんと動くかの確認が主目的だけど。。

 

「Twigmo」 アドオンにそれらしきものを発見したのでコードとかアドオンの構成を見てみた。

下記は2.2.4-jp-1(設定にタブが追加)

こっちが従前2.2.3-jp-1以前

アドオンの設定ページにタブが表示されるのは従前よりあるのですがその表現方法が異なります。

アドオンの構成を見ると
var/skins_repository/base/admin/addons/twigmo/settings/settings.tpl
なんてのが増えてる。テンプレート側に(repositoryね)アドオンの設定ファイルを置く形らしい。

ぱっと見ただけだと、これまでのaddon.xmlに書く形と大差ない、むしろ分割することがめんどくさいという捉え方もありそうです。

でも実際のところ期待していいように思えます。

というのも、これまではxmlファイルに書く必要があったので制約も多かったんですよ。
動的にプルダウンの中身を生成するとかタブンできなかったはず。
条件分岐をして、他の設定に応じて表示非表示を切り替えたりってのも同様。

今回のアップデートで設定ファイルにtplファイルを充てることができるようになったので smartyで色々制御できることは間違いないですね。

PHPで制御できるかはまだちょっと見てないですけど。。
感覚的には決済系のアドオンの支払方法の設定ファイルに似てるかなーという感じ。

ちょっと速報気味にエントリー投稿しました。