スキーマー
スキーマー(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
XML構造
このスキーマーはfn_get_contents
関数によって読み込まれるテキストファイルです。
現在では旧式のものとして扱われ、コアでは使用されていません。
関数のセット
関数は以下のようなスキーマーで記述されます。
関数を持つスキーマーのほとんどは、データ配列をスキーマーへ追加します。
このスキーマーを特別に呼び出す必要はありません。
ファイルの先頭にinclude_once()
で使用すれば、それらを利用することが出来ます。
スキーマーが独立したものである場合(例えば、アクションや設定の値等)、標準で含まれています:fn_get_schema("settings", "actions.functions")
app/schemas/exim/products.functions.php
app/schemas/last_view/frontend.functions.php
スキーマーの拡張
拡張には二種類の方法あります - アドオンを使用するか、タグを編集するかです。
アドオンを使って拡張する方法
アドオンを使ってスキームを拡張するためには、アドオンのパッケージ内にコアと同じディレクトリ構造を作成し、ファイル名に_.post_を加えます。
例えばメインファイルへのパスの場合は以下のようになります。:
app/schemas/permissions/admin.php
このファイルの拡張は:
app/addons/seo/schemas/permissions/admin.post.php
となります。
$schema
変数に拡張スキームを渡します。
$schema
変数は拡張データを含んでおり、最終的に追加された$schema
変数を返します。
例:
アドオンによるスキームの拡張方法のより詳しい情報はこちらを確認してください。
タグを編集して拡張する方法
編集されたタグはエディション(スタンダード版かマーケットプレイス版)毎に必要なスキームデータを形成するために使用します。
タグの編集によってスキーマーを拡張するには、 schemeディレクトリに_schema_[PRODUCT_EDITION]_ ファイルを作成します。
例えば、次のファイルのスキーマーを拡張する場合、
app/schemas/permissions/admin.php
編集するタグのファイルパスは以下となります。:
app/schemas/permissions/admin_ultimate.php
$schema
変数はここでも使用されます。
$schema
変数は拡張データを含んでいます。このスクリプトは拡張された変数で作動し、最終的に$schema
変数を返します。
スキーマーデータの取得方法
スキームデータを取得するにはfn_get_schema()
関数を使用します。
引数の解説:
$schema_dir
- スキーマーディレクトリの相対パス(パーミッションや設定)$name
- 拡張されていないスキーマーファイル名(admin, schema)。スキーマータイプが関数の場合、この引数は次ようになります:actions.functions, variants.functions$type
- スキーマーの種類:php_や_xml$force_addon_init
- この引数がある場合、無効にするアドオンとその_func.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つずつ読み込みますので、結果として全ての有効なアドオンのスキーマーを含んだスキーマーを持つことになります。
最終更新