{"__v":1,"_id":"5544d76bd8833c0d0058283d","category":{"__v":1,"_id":"5544d76ad8833c0d00582802","pages":["5544d76bd8833c0d00582832","5544d76bd8833c0d00582833","5544d76bd8833c0d00582834","5544d76bd8833c0d00582835","5544d76bd8833c0d00582836","5544d76bd8833c0d00582837","5544d76bd8833c0d00582838","5544d76bd8833c0d00582839","5544d76bd8833c0d0058283a","5544d76bd8833c0d0058283b","5544d76bd8833c0d0058283c","5544d76bd8833c0d0058283d"],"project":"55227389b4a0de0d00de7e28","version":"5544d76ad8833c0d00582801","sync":{"url":"","isSync":false},"reference":false,"createdAt":"2015-04-06T11:52:42.014Z","from_sync":false,"order":0,"slug":"_","title":"コア"},"project":"55227389b4a0de0d00de7e28","user":"552342f6e20da719000e7925","version":{"__v":1,"_id":"5544d76ad8833c0d00582801","forked_from":"55227389b4a0de0d00de7e2b","project":"55227389b4a0de0d00de7e28","createdAt":"2015-05-02T13:55:54.059Z","releaseDate":"2015-05-02T13:55:54.059Z","categories":["5544d76ad8833c0d00582802","5544d76ad8833c0d00582803","5544d76ad8833c0d00582804","5544d76ad8833c0d00582805","5544d76ad8833c0d00582806"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":true,"codename":"","version_clean":"4.0.0","version":"4.0"},"updates":[],"next":{"pages":[],"description":""},"createdAt":"2015-04-07T07:26:23.586Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"auth":"required","params":[],"url":""},"isReference":false,"order":11,"body":"全てのスキームは(*...app/schemas*)ディレクトリに置かれています。\nアドオンはそれらを拡張したり、全体または部分的にそれらを無効にすることができます。[さらに詳しく](doc:extending a scheme)\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"スキーマーとは\"\n}\n[/block]\nスキーマーはデータ構造を含んでおり、スキーマーによって定義されたアクションを処理する際にエンティティ(オブジェクト)によって使用されます。\n\n例えば、特定のアイテム(商品やページなど)のインポートやエクスポートに関する記述は、それらに直接書かれておらず、すべてのインポートやエクスポート用のスキームによって記述されています。\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"スキーマーの種類\"\n}\n[/block]\nCS-Cartには、3種類のスキーマーがあります:\n**データ配列**、**XML構造**、**関数のセット**\n\nこれら3種類を組み合わせることはできません。\n(例えば、同じスクリプトにデータ配列と関数セットを記述することは出来ません)\n\n##データ配列\nこのスキーマーは配列を返します。\n\n例)\n- *app/schemas/permissions/admin.php*\n- *app/schemas/clone/objects.php*\n- *app/schemas/sharing/schema.php*\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"<?php \\nreturn array(\\n    'layouts' => array(\\n         'checked_by_default' => true,\\n        'function' => 'fn_clone_layouts'\\n    ),\\n    'settings' => array(\\n        'checked_by_default' => true,\\n        'tables' => array(\\n            array(\\n                'name' => 'settings_vendor_values',\\n                'key' => '', // Do not needed\\n             ),\\n         ),\\n    ),\\n    // Some other code\\n);\\n?>\",\n      \"language\": \"php\"\n    }\n  ]\n}\n[/block]\n## XML構造\nこのスキーマーは`fn_get_contents`関数によって読み込まれるテキストファイルです。\n現在では旧式のものとして扱われ、コアでは使用されていません。\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"<menu>\\n    <items>\\n        <subitems>\\n            ....\\n        <subitems>\\n    </items>\\n</menu>\",\n      \"language\": \"xml\"\n    }\n  ]\n}\n[/block]\n\n##関数のセット\n関数は以下のようなスキーマーで記述されます。\n\n関数を持つスキーマーのほとんどは、データ配列をスキーマーへ追加します。\n\nこのスキーマーを特別に呼び出す必要はありません。\nファイルの先頭に`include_once()` で使用すれば、それらを利用することが出来ます。\n\nスキーマーが独立したものである場合(例えば、アクションや設定の値等)、標準で含まれています:`fn_get_schema(\"settings\", \"actions.functions\")`\n\n- *app/schemas/exim/products.functions.php*\n- *app/schemas/last_view/frontend.functions.php*\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"<?php\\nfunction fn_some_scheme_func1($params)\\n{\\n     ...\\n }\\n\\nfunction fn_some_scheme_func2()\\n{\\n     ...\\n}\\n?>\",\n      \"language\": \"php\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"スキーマーの拡張\"\n}\n[/block]\n拡張には二種類の方法あります - アドオンを使用するか、タグを編集するかです。\n\n##アドオンを使って拡張する方法\n\nアドオンを使ってスキームを拡張するためには、アドオンのパッケージ内にコアと同じディレクトリ構造を作成し、ファイル名に*.post*を加えます。\n\n例えばメインファイルへのパスの場合は以下のようになります。:\n\n*app/schemas/permissions/admin.php*\n\nこのファイルの拡張は:\n\n*app/addons/seo/schemas/permissions/admin.post.php*\n\nとなります。\n`$schema` 変数に拡張スキームを渡します。\n\n`$schema` 変数は拡張データを含んでおり、最終的に追加された`$schema`変数を返します。\n\n例:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"<?php\\n// $schema変数はすでに標準のスキーマーを含んでいます。\\n$schema['news'] = array(\\n    'modes' => array(\\n        'manage' => array(\\n            'permissions' => 'manage_news'\\n        )\\n    )\\n);\\nreturn $schema;\\n?>\",\n      \"language\": \"php\"\n    }\n  ]\n}\n[/block]\nアドオンによるスキームの拡張方法のより詳しい情報は[こちら](doc:extending-a-scheme)を確認してください。\n\n\n##タグを編集して拡張する方法\n\n編集されたタグはエディション(スタンダード版かマーケットプレイス版)毎に必要なスキームデータを形成するために使用します。\n\nタグの編集によってスキーマーを拡張するには、\nschemeディレクトリに*schema_[PRODUCT_EDITION]* ファイルを作成します。\n\n\n例えば、次のファイルのスキーマーを拡張する場合、\n\n- *app/schemas/permissions/admin.php*\n\n編集するタグのファイルパスは以下となります。:\n\n- *app/schemas/permissions/admin_ultimate.php*\n\n`$schema`変数はここでも使用されます。\n\n`$schema`変数は拡張データを含んでいます。このスクリプトは拡張された変数で作動し、最終的に`$schema`変数を返します。\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"スキーマーデータの取得方法\"\n}\n[/block]\nスキームデータを取得するには`fn_get_schema()`関数を使用します。\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"<?php \\nfunction fn_get_schema($schema_dir, $name, $type = 'php', $force_addon_init = false)\\n{\\n\\t\\t....\\n}\",\n      \"language\": \"php\"\n    }\n  ]\n}\n[/block]\n引数の解説:\n\n-  `$schema_dir` - スキーマーディレクトリの相対パス(パーミッションや設定)\n\n- `$name `- 拡張されていないスキーマーファイル名(admin, schema)。スキーマータイプが関数の場合、この引数は次ようになります:*actions.functions, variants.functions*\n\n- `$type` - スキーマーの種類:*php*や*xml*\n\n- `$force_addon_init` - この引数がある場合、無効にするアドオンとその*func.php*ファイルが考慮されなければならないことを示します。\n\nスキーマーをリクエストしているとき、全体のスキーマーは全てのアドオンのスキームを含んでいます。\n\n例:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"<?php \\n$menu = fn_get_schema('menu', 'menu', 'php');\",\n      \"language\": \"php\"\n    }\n  ]\n}\n[/block]\nメインスキームファイルの検索: */app/schemas/menu/menu.php*\n\n拡張するスキーマーが次のアドオンディレクトリにも置かれている場合:*addons/my_addon/app/schemas/xxx/yyy.php*\n\n次のような関数を使用してスキーマーを追加します:`fn_get_schema('xxx', 'yyy')`\n\n\nスキームを追加するとキャッシュされますので、次回以降すべてのスキーマー・ディレクトリをスキャンする必要はありません。\n\n- アドオンによってスキーマーが追加されているか確認します:\n\n    - *app/addons/access_restrictions/schemas/menu/menu.post.php*  \n    - *app/addons/attachments/schemas/menu/menu.post.php*\n    - *app/addons/banners/schemas/menu/menu.post.php*\n    - *app/addons/data_feeds/schemas/menu/menu.post.php*\n    - *app/addons/news_and_emails/schemas/menu/menu.post.php, ‥*\n\n\n- CS-Cartはスキーマーファイルを1つずつ読み込みますので、結果として全ての有効なアドオンのスキーマーを含んだスキーマーを持つことになります。","excerpt":"スキーマー(scheme)は特定のオブジェクト構造を記述した特別なファイルです。\nブロック、設定、プロモーションなどに関するスキームがあります。","slug":"schemes","type":"basic","title":"スキーマー (scheme)"}

スキーマー (scheme)

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

全てのスキームは(*...app/schemas*)ディレクトリに置かれています。 アドオンはそれらを拡張したり、全体または部分的にそれらを無効にすることができます。[さらに詳しく](doc:extending a scheme) [block:api-header] { "type": "basic", "title": "スキーマーとは" } [/block] スキーマーはデータ構造を含んでおり、スキーマーによって定義されたアクションを処理する際にエンティティ(オブジェクト)によって使用されます。 例えば、特定のアイテム(商品やページなど)のインポートやエクスポートに関する記述は、それらに直接書かれておらず、すべてのインポートやエクスポート用のスキームによって記述されています。 [block:api-header] { "type": "basic", "title": "スキーマーの種類" } [/block] CS-Cartには、3種類のスキーマーがあります: **データ配列**、**XML構造**、**関数のセット** これら3種類を組み合わせることはできません。 (例えば、同じスクリプトにデータ配列と関数セットを記述することは出来ません) ##データ配列 このスキーマーは配列を返します。 例) - *app/schemas/permissions/admin.php* - *app/schemas/clone/objects.php* - *app/schemas/sharing/schema.php* [block:code] { "codes": [ { "code": "<?php \nreturn array(\n 'layouts' => array(\n 'checked_by_default' => true,\n 'function' => 'fn_clone_layouts'\n ),\n 'settings' => array(\n 'checked_by_default' => true,\n 'tables' => array(\n array(\n 'name' => 'settings_vendor_values',\n 'key' => '', // Do not needed\n ),\n ),\n ),\n // Some other code\n);\n?>", "language": "php" } ] } [/block] ## XML構造 このスキーマーは`fn_get_contents`関数によって読み込まれるテキストファイルです。 現在では旧式のものとして扱われ、コアでは使用されていません。 [block:code] { "codes": [ { "code": "<menu>\n <items>\n <subitems>\n ....\n <subitems>\n </items>\n</menu>", "language": "xml" } ] } [/block] ##関数のセット 関数は以下のようなスキーマーで記述されます。 関数を持つスキーマーのほとんどは、データ配列をスキーマーへ追加します。 このスキーマーを特別に呼び出す必要はありません。 ファイルの先頭に`include_once()` で使用すれば、それらを利用することが出来ます。 スキーマーが独立したものである場合(例えば、アクションや設定の値等)、標準で含まれています:`fn_get_schema("settings", "actions.functions")` - *app/schemas/exim/products.functions.php* - *app/schemas/last_view/frontend.functions.php* [block:code] { "codes": [ { "code": "<?php\nfunction fn_some_scheme_func1($params)\n{\n ...\n }\n\nfunction fn_some_scheme_func2()\n{\n ...\n}\n?>", "language": "php" } ] } [/block] [block:api-header] { "type": "basic", "title": "スキーマーの拡張" } [/block] 拡張には二種類の方法あります - アドオンを使用するか、タグを編集するかです。 ##アドオンを使って拡張する方法 アドオンを使ってスキームを拡張するためには、アドオンのパッケージ内にコアと同じディレクトリ構造を作成し、ファイル名に*.post*を加えます。 例えばメインファイルへのパスの場合は以下のようになります。: *app/schemas/permissions/admin.php* このファイルの拡張は: *app/addons/seo/schemas/permissions/admin.post.php* となります。 `$schema` 変数に拡張スキームを渡します。 `$schema` 変数は拡張データを含んでおり、最終的に追加された`$schema`変数を返します。 例: [block:code] { "codes": [ { "code": "<?php\n// $schema変数はすでに標準のスキーマーを含んでいます。\n$schema['news'] = array(\n 'modes' => array(\n 'manage' => array(\n 'permissions' => 'manage_news'\n )\n )\n);\nreturn $schema;\n?>", "language": "php" } ] } [/block] アドオンによるスキームの拡張方法のより詳しい情報は[こちら](doc:extending-a-scheme)を確認してください。 ##タグを編集して拡張する方法 編集されたタグはエディション(スタンダード版かマーケットプレイス版)毎に必要なスキームデータを形成するために使用します。 タグの編集によってスキーマーを拡張するには、 schemeディレクトリに*schema_[PRODUCT_EDITION]* ファイルを作成します。 例えば、次のファイルのスキーマーを拡張する場合、 - *app/schemas/permissions/admin.php* 編集するタグのファイルパスは以下となります。: - *app/schemas/permissions/admin_ultimate.php* `$schema`変数はここでも使用されます。 `$schema`変数は拡張データを含んでいます。このスクリプトは拡張された変数で作動し、最終的に`$schema`変数を返します。 [block:api-header] { "type": "basic", "title": "スキーマーデータの取得方法" } [/block] スキームデータを取得するには`fn_get_schema()`関数を使用します。 [block:code] { "codes": [ { "code": "<?php \nfunction fn_get_schema($schema_dir, $name, $type = 'php', $force_addon_init = false)\n{\n\t\t....\n}", "language": "php" } ] } [/block] 引数の解説: - `$schema_dir` - スキーマーディレクトリの相対パス(パーミッションや設定) - `$name `- 拡張されていないスキーマーファイル名(admin, schema)。スキーマータイプが関数の場合、この引数は次ようになります:*actions.functions, variants.functions* - `$type` - スキーマーの種類:*php*や*xml* - `$force_addon_init` - この引数がある場合、無効にするアドオンとその*func.php*ファイルが考慮されなければならないことを示します。 スキーマーをリクエストしているとき、全体のスキーマーは全てのアドオンのスキームを含んでいます。 例: [block:code] { "codes": [ { "code": "<?php \n$menu = fn_get_schema('menu', 'menu', 'php');", "language": "php" } ] } [/block] メインスキームファイルの検索: */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つずつ読み込みますので、結果として全ての有効なアドオンのスキーマーを含んだスキーマーを持つことになります。