本文へスキップ

内部通知(ベルアイコン)を送信する

管理者から特定のベンダーや特定のユーザーへ、内部通知(ベルアイコン)を送る方法と注意点。

更新日: Markdown で表示

管理者から特定のベンダー(出品者)や特定のユーザーに対して、内部通知(ベルアイコン)を送る方法です。CS-Cart 4.19 系のマルチベンダーで確認した内容です。メールでの通知(MailTransport)の定義は、このページでは扱いません。イベントの通知 を参照してください。

特定のベンダーに通知する

イベントのスキーマで to_company_id を設定すると、特定の企業(ベンダー)に通知できます。

// schemas/notifications/events_multivendor.post.php
$schema['my_addon.event_name'] = [
    'group'         => 'my_addon',
    'data_provider' => [DataProvider::class, 'factory'],
    'receivers'     => [
        UserTypes::VENDOR => [
            InternalTransport::getId() => InternalMessageSchema::create([
                'tag'           => 'my_addon',
                'area'          => SiteArea::VENDOR_PANEL,
                'section'       => NotificationsCenter::SECTION_PRODUCTS,
                'to_company_id' => DataValue::create('to_company_id'), // 送信先を指定する
                // ...
            ]),
        ],
    ],
];

通知を発火するときは、送信先のベンダー ID を to_company_id に渡します。

$notification_data = [
    'company_id'    => $target_company_id,
    'to_company_id' => $target_company_id, // 送信先のベンダー ID
];
Tygh::$app['event.dispatcher']->dispatch($event_name, $notification_data, $notification_rules);

特定のユーザーに通知する

SearchCondition と ReceiverSearchMethods::USER_ID を使います。

use Tygh\Enum\ReceiverSearchMethods;
use Tygh\Notifications\Receivers\SearchCondition;

// 特定のユーザーを受信者として登録する(インストール時など)
fn_update_notification_receiver_search_conditions(
    'group',
    'my_addon',
    UserTypes::ADMIN, // または UserTypes::VENDOR
    [
        new SearchCondition(ReceiverSearchMethods::USER_ID, $target_user_id),
    ]
);

通知を送信する

// ベンダーに通知する
$force_notification = [
    UserTypes::VENDOR => true,
];
$notification_rules = Tygh::$app['event.notification_settings.factory']->create($force_notification);

Tygh::$app['event.dispatcher']->dispatch(
    'my_addon.event_name',
    $notification_data,
    $notification_rules
);

必要なファイルの構成

app/addons/<アドオンID>/
├── addon.xml                                  # functions セクションが必須
├── func.php                                   # install / uninstall 関数
├── schemas/notifications/
│   └── events_multivendor.post.php            # MULTIVENDOR でベンダーに通知するときに必須
├── resources/
│   └── internal_templates.xml                 # 通知のテンプレート
└── Tygh/Addons/<Addon>/Notifications/DataProviders/
    └── DataProvider.php                       # データプロバイダー

UserTypes の定数

CS-Cart のユーザータイプは、次の3種類です。UserTypes::USER はありません。

定数 値 説明
UserTypes::ADMIN 'A' 管理者
UserTypes::VENDOR 'V' ベンダー(出品者)
UserTypes::CUSTOMER 'C' 顧客

定義は app/Tygh/Enum/UserTypes.php にあります。

内部通知(ベルアイコン)に対応するエリア

SiteArea 値 内部通知の UI 備考
ADMIN_PANEL 'A' あり 管理画面
VENDOR_PANEL 'V' あり ベンダーパネル
STOREFRONT 'C' なし 顧客向けのショップフロント

定義は app/Tygh/Enum/SiteArea.php にあります。

注意点

参考にできる実装

CS-Cart コアの vendor_communication アドオンが参考になります。

関連ページ

ナビゲーション

検索語を入力してください…

↑↓ 移動↵ 開くEsc 閉じる