管理者から特定のベンダー(出品者)や特定のユーザーに対して、内部通知(ベルアイコン)を送る方法です。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 アドオンが参考になります。