CS-Cart.jp開発者ドキュメント
  • はじめに
  • Getting Started
    • CS-Cart開発者向け注意事項
    • CS-Cartの構成
    • デバッグ方法
  • コア
    • Hooks
    • コントローラー
      • Pre&Post コントローラー
    • データベース
      • データベースの構造と命名規則
      • データベース・プレイスホルダー
      • 他のデータベースへの接続
    • ショップフロント
      • ブロック
      • blockメインスキーマ—
      • Dynamic Objects
      • ajaxリクエストの使用方法
      • 特別なCSSセレクター
      • マイクロフォーマット Microformats
      • 通知システム
      • ツールチップ
    • 設定
    • コア関数
    • イベントの通知
    • 言語変数
    • スキーマー
  • アドオン開発
    • フック
      • PHPフック
      • テンプレートフック
    • アドオンチュートリアル
      • 「Hello World」チュートリアル
      • Advanced Add-on チュートリアル
      • 商品リスト、詳細ページのカスタムテンプレートを作成
      • 支払方法の開発
    • アドオンの管理プロセス
    • Add-on スキーマー
      • アドオンの互換性
      • 他のアドオンとの競合・依存設定
    • APIの拡張
    • スキーマーの拡張
    • アドオンのディレクトリ構造
    • アドオンの言語変数
    • .poファイルによる言語ファイルの作成
  • テーマ開発
    • テーマ開発の概要
    • テーマの複製
    • レイアウトの管理
    • トップパネルとヘッダー
    • テーマを使用したショップの設定の変更
    • CSS
    • テーマの言語変数
    • メディアファイル
    • 親テーマ
    • スタイルとビジュアルエディター
    • レイアウトエディター
    • テンプレート
  • デバッグ
    • デバッガー
    • ファイルエディター
GitBook提供
このページ内
  • スキーマーとは
  • スキーマーの種類
  • データ配列
  • XML構造
  • 関数のセット
  • スキーマーの拡張
  • アドオンを使って拡張する方法
  • タグを編集して拡張する方法
  • スキーマーデータの取得方法
  1. コア

スキーマー

スキーマー(scheme)は特定のオブジェクト構造を記述した特別なファイルです。 ブロック、設定、プロモーションなどに関するスキーマーがあります。

全てのスキームは(...app/schemas)ディレクトリに置かれています。 アドオンはそれらを拡張したり、全体または部分的にそれらを無効にすることができます。[さらに詳しく](doc:extending a scheme)

スキーマーとは

スキーマーはデータ構造を含んでおり、スキーマーによって定義されたアクションを処理する際にエンティティ(オブジェクト)によって使用されます。

例えば、特定のアイテム(商品やページなど)のインポートやエクスポートに関する記述は、それらに直接書かれておらず、すべてのインポートやエクスポート用のスキームによって記述されています。

スキーマーの種類

CS-Cartには、3種類のスキーマーがあります: データ配列、XML構造、関数のセット

これら3種類を組み合わせることはできません。 (例えば、同じスクリプトにデータ配列と関数セットを記述することは出来ません)

データ配列

このスキーマーは配列を返します。

例)

  • app/schemas/permissions/admin.php

  • app/schemas/clone/objects.php

  • app/schemas/sharing/schema.php

<?php 
return array(
    'layouts' => array(
         'checked_by_default' => true,
        'function' => 'fn_clone_layouts'
    ),
    'settings' => array(
        'checked_by_default' => true,
        'tables' => array(
            array(
                'name' => 'settings_vendor_values',
                'key' => '', // Do not needed
             ),
         ),
    ),
    // Some other code
);
?>

XML構造

このスキーマーはfn_get_contents関数によって読み込まれるテキストファイルです。 現在では旧式のものとして扱われ、コアでは使用されていません。

<menu>
    <items>
        <subitems>
            ....
        <subitems>
    </items>
</menu>

関数のセット

関数は以下のようなスキーマーで記述されます。

関数を持つスキーマーのほとんどは、データ配列をスキーマーへ追加します。

このスキーマーを特別に呼び出す必要はありません。 ファイルの先頭にinclude_once() で使用すれば、それらを利用することが出来ます。

スキーマーが独立したものである場合(例えば、アクションや設定の値等)、標準で含まれています:fn_get_schema("settings", "actions.functions")

  • app/schemas/exim/products.functions.php

  • app/schemas/last_view/frontend.functions.php

<?php
function fn_some_scheme_func1($params)
{
     ...
 }

function fn_some_scheme_func2()
{
     ...
}
?>

スキーマーの拡張

拡張には二種類の方法あります - アドオンを使用するか、タグを編集するかです。

アドオンを使って拡張する方法

アドオンを使ってスキームを拡張するためには、アドオンのパッケージ内にコアと同じディレクトリ構造を作成し、ファイル名に_.post_を加えます。

例えばメインファイルへのパスの場合は以下のようになります。:

app/schemas/permissions/admin.php

このファイルの拡張は:

app/addons/seo/schemas/permissions/admin.post.php

となります。 $schema 変数に拡張スキームを渡します。

$schema 変数は拡張データを含んでおり、最終的に追加された$schema変数を返します。

例:

<?php
// $schema変数はすでに標準のスキーマーを含んでいます。
$schema['news'] = array(
    'modes' => array(
        'manage' => array(
            'permissions' => 'manage_news'
        )
    )
);
return $schema;
?>

タグを編集して拡張する方法

編集されたタグはエディション(スタンダード版かマーケットプレイス版)毎に必要なスキームデータを形成するために使用します。

タグの編集によってスキーマーを拡張するには、 schemeディレクトリに_schema_[PRODUCT_EDITION]_ ファイルを作成します。

例えば、次のファイルのスキーマーを拡張する場合、

  • app/schemas/permissions/admin.php

編集するタグのファイルパスは以下となります。:

  • app/schemas/permissions/admin_ultimate.php

$schema変数はここでも使用されます。

$schema変数は拡張データを含んでいます。このスクリプトは拡張された変数で作動し、最終的に$schema変数を返します。

スキーマーデータの取得方法

スキームデータを取得するにはfn_get_schema()関数を使用します。

<?php 
function fn_get_schema($schema_dir, $name, $type = 'php', $force_addon_init = false)
{
		....
}

引数の解説:

  • $schema_dir - スキーマーディレクトリの相対パス(パーミッションや設定)

  • $name - 拡張されていないスキーマーファイル名(admin, schema)。スキーマータイプが関数の場合、この引数は次ようになります:actions.functions, variants.functions

  • $type - スキーマーの種類:php_や_xml

  • $force_addon_init - この引数がある場合、無効にするアドオンとその_func.php_ファイルが考慮されなければならないことを示します。

スキーマーをリクエストしているとき、全体のスキーマーは全てのアドオンのスキームを含んでいます。

例:

<?php 
$menu = fn_get_schema('menu', 'menu', 'php');

メインスキームファイルの検索: /app/schemas/menu/menu.php

拡張するスキーマーが次のアドオンディレクトリにも置かれている場合:addons/my_addon/app/schemas/xxx/yyy.php

次のような関数を使用してスキーマーを追加します:fn_get_schema('xxx', 'yyy')

スキームを追加するとキャッシュされますので、次回以降すべてのスキーマー・ディレクトリをスキャンする必要はありません。

  • アドオンによってスキーマーが追加されているか確認します:

    • app/addons/access_restrictions/schemas/menu/menu.post.php

    • app/addons/attachments/schemas/menu/menu.post.php

    • app/addons/banners/schemas/menu/menu.post.php

    • app/addons/data_feeds/schemas/menu/menu.post.php

    • app/addons/news_and_emails/schemas/menu/menu.post.php, ‥

  • CS-Cartはスキーマーファイルを1つずつ読み込みますので、結果として全ての有効なアドオンのスキーマーを含んだスキーマーを持つことになります。

前へ言語変数次へフック

最終更新 7 か月前

アドオンによるスキームの拡張方法のより詳しい情報はを確認してください。

こちら