本文へスキップ

管理画面にメニューを追加する

アドオンから管理画面のメニューを追加するスキーマ、パーミッションの書き方、validate_menu の設定。

更新日: Markdown で表示

アドオンから管理画面(admin.php)にメニューを追加する方法です。管理画面のメニューは、スキーマファイルだけで追加できます。CS-Cart 4.19.1 以降で確認した内容です。

1. メニューのスキーマ

app/addons/<アドオンID>/schemas/menu/menu.post.php を作ります。

新しいルートメニューを追加する

<?php
defined('BOOTSTRAP') or die('Access denied');

/** @var array $schema */

// サイドバーに新しいルートメニューを追加する
$schema['central']['my_addon'] = [
    'title'    => __('my_addon.menu_title'),
    'position' => 550,   // website(500) と administration(600) の間
    'icon'     => 'file', // Glyph アイコン名
    'items'    => [
        'my_addon_manage' => [
            'title'    => __('my_addon.list'),
            'href'     => 'my_addon.manage', // コントローラー.モード
            'position' => 100,
        ],
    ],
];

return $schema;

既存のメニューに項目を追加する

まずは、既存のメニューの下に項目を追加する方法を検討してください。ルートメニューを増やす必要がない場合は、こちらが簡単です(3. validate_menu の設定 も参照)。

// サイドバー(central)の既存のメニュー(website)に項目を追加する
$schema['central']['website']['items']['my_addon'] = [
    'href'     => 'my_addon.manage',
    'position' => 1100,
];

メニューを削除する

unset($schema['central']['marketing']);
unset($schema['central']['orders']['items']['shipments']);

central セクションの position の目安

メニュー position
orders 100
products 200
customers 300
marketing 400
website 500
administration 600

2. パーミッションのスキーマ

管理者向け

app/addons/<アドオンID>/schemas/permissions/admin.post.php

<?php
defined('BOOTSTRAP') or die('Access denied');

// 管理者は GET / POST の両方を許可する(フルアクセス)
$schema['my_addon'] = [
    'permissions' => ['GET' => true, 'POST' => true],
];

return $schema;

ベンダー向け

app/addons/<アドオンID>/schemas/permissions/vendor_multivendor.post.php

<?php
defined('BOOTSTRAP') or die('Access denied');

// モードごとに細かく制御する
$schema['controllers']['my_addon'] = [
    'modes' => [
        'list' => [
            'permissions' => true,          // 許可
        ],
        'view' => [
            'permissions' => true,
        ],
        'update' => [
            'permissions' => 'manage_own',  // 権限の名前
        ],
    ],
];

return $schema;

3. validate_menu の設定

通常は、既存のメニューの下に項目を追加してください(前の「既存のメニューに項目を追加する」を参照)。ルートメニューが必要な場合だけ、この設定を検討します。

ルートメニューを表示するには、config.local.php に次の設定を追加します。

$config['tweaks']['validate_menu'] = false;

注意点

  • 管理者のパーミッションは単純な構造です。ベンダーのパーミッションは controllers と modes で細かく制御します。
  • ベンダーパネルのメニューは DB への登録が必要です。管理画面のメニューは登録が不要です。
  • validate_menu を false にし忘れると、追加したルートメニューが表示されません。

参考にするコアのファイル

  • app/schemas/menu/menu.php
  • app/schemas/permissions/admin.php
  • app/schemas/permissions/vendor_multivendor.php

関連ページ

ナビゲーション

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

↑↓ 移動↵ 開くEsc 閉じる