Dynamic Objects—dynamic_objects.php

詳細ページのブロックに対して異なるコンテンツとステータスを持つことができるオブジェクトは、ブロックマネージャーでDynamicオブジェクトとみなされます。
動的オブジェクトには、ProductsPagesCategoriesVendors、およびNewsの 5つがデフォルトのタイプとして定義されています。

👍

Vendorsはマーケットプレイス版でのみ利用可能です

Dynamicオブジェクトを使用する理由

Products (商品)を例としてみましょう。他のDynamicオブジェクトも同じように機能します。

商品編集ページでブロックのコンテンツを変更すると、その商品のみでコンテンツが保存されます。ブロックのコンテンツを編集すると、コンテンツが変更された場所が下に表示されます。追加のチェックボックスも表示され、そのチェックボックスをオンにすると、変更したコンテンツをグローバルに適用できます。

商品の編集ページでブロックを有効または無効にすると、ブロックの状態はその商品に対してのみ保存されます。

ブロックマネージャーでdispatch=products.viewを使用してロケーションのブロックを編集すると、ステータスタブを使用して、特定の商品のブロックを有効または無効にできます(グローバルに無効または有効になっている場合であっても可能です。)

Dynamicオブジェクトの仕組み

dynamic_objects.phpでオブジェクトについて記述すると、Dynamicオブジェクトが自動的に作成されます。dynamic_objectsスキーマに新しいオブジェクトを追加できます。商品の説明文は次のようになります。

array(
    // 動的オブジェクトの名前
    'products' => array (
        // 動的オブジェクトの編集ページ。これは、管理パネルで[ブロック]タブが表示されるページです。
        'admin_dispatch' => 'products.update',
        // カスタマーゾーンのページのアドレスと、ダイナミックオブジェクトを操作できるブロックコントロールペイン
        'customer_dispatch' => 'products.view',
        // ブジェクトの識別子を定義する$_REQUEST配列のキー 
        'key' => 'product_id',
        // 管理画面で使用されるピッカーの設定
        'picker' => 'pickers/products/picker.tpl',
        'picker_params' => array (
            'type' => 'links',
        ),
    ),
)

ショップのユーザーがdispatch=products.viewでページをリクエストすると、CS-Cart
はそのページが商品のDynamicオブジェクトに属していると判断し、スクリプトに渡されたパラメーターのproduct_idを探します。
product_idがある場合、ページを生成するすべてのデータは、ブロックAPI、もしくは指定されたタイプおよび識別子を介してリクエストされます。

パラメーターまたはブロックのタイプがdispatchによって判断できなかった場合、データはグローバルパラメーターを使用して、動的オブジェクトなしで生成されます。