NopCommerce 4.60.3无源码版升级后能否自动添加Nop Quick Tabs?
解决NopCommerce 4.60.3升级后Nop Quick Tabs自动添加到标签栏的方法
针对你使用无源码版NopCommerce 4.60.3,每次升级后Nop Quick Tabs菜单消失的问题,提供两种无需手动添加的解决方案:
方案1:数据库脚本自动恢复菜单
NopCommerce后台导航菜单存储在[dbo].[MenuItem]和[dbo].[PermissionRecord]表中,可通过SQL脚本自动检查并添加菜单:
- 先查询Quick Tabs对应的权限记录ID:
SELECT Id FROM [dbo].[PermissionRecord] WHERE SystemName = 'Nop.Plugin.Widgets.QuickTabs.Manage'
- 替换以下脚本中的
{PermissionId}和{ParentMenuItemId}({ParentMenuItemId}为父菜单ID,比如插件菜单的SystemName为Plugins,可先查询其ID),执行脚本:
IF NOT EXISTS (SELECT 1 FROM [dbo].[MenuItem] WHERE SystemName = 'Nop.Plugin.Widgets.QuickTabs') BEGIN INSERT INTO [dbo].[MenuItem] (Name, SystemName, ParentMenuItemId, Url, IconClass, DisplayOrder, PermissionRecordId, Published, IsNew, CreatedOnUtc, UpdatedOnUtc) VALUES ('Nop Quick Tabs', 'Nop.Plugin.Widgets.QuickTabs', {ParentMenuItemId}, 'Plugins/WidgetsQuickTabs/Configure', 'fa fa-list', 100, {PermissionId}, 1, 0, GETUTCDATE(), GETUTCDATE()) END
你可以将脚本保存为文件,每次升级后手动执行,或通过SQL Server代理设置为自动执行(需数据库权限)。
方案2:自定义插件自动注册菜单
开发一个轻量插件,在系统启动时自动检查并添加菜单(无需修改Nop核心源码):
编写实现IStartupTask的插件类:
public class AddQuickTabsMenuTask : IStartupTask { private readonly IMenuItemService _menuItemService; private readonly IPermissionService _permissionService; public AddQuickTabsMenuTask(IMenuItemService menuItemService, IPermissionService permissionService) { _menuItemService = menuItemService; _permissionService = permissionService; } public void Execute() { var quickTabsPermission = _permissionService.GetPermissionRecordBySystemName("Nop.Plugin.Widgets.QuickTabs.Manage"); if (quickTabsPermission == null) return; var existingMenuItem = _menuItemService.GetMenuItemBySystemName("Nop.Plugin.Widgets.QuickTabs"); if (existingMenuItem != null) return; var pluginsMenuItem = _menuItemService.GetMenuItemBySystemName("Plugins"); if (pluginsMenuItem == null) return; var newMenuItem = new MenuItem { Name = "Nop Quick Tabs", SystemName = "Nop.Plugin.Widgets.QuickTabs", ParentMenuItemId = pluginsMenuItem.Id, Url = "Plugins/WidgetsQuickTabs/Configure", IconClass = "fa fa-list", DisplayOrder = 100, PermissionRecordId = quickTabsPermission.Id, Published = true, CreatedOnUtc = DateTime.UtcNow, UpdatedOnUtc = DateTime.UtcNow }; _menuItemService.InsertMenuItem(newMenuItem); } public int Order => 10; }
编译插件后上传至NopCommerce的Plugins目录,安装启用即可。每次系统启动(包括升级后)会自动检查并添加菜单。
注意事项
- 方案1需确认父菜单ID的正确性,操作前备份数据库;
- 方案2需具备基础.NET开发能力,插件需符合NopCommerce 4.60.3的插件规范。
内容的提问来源于stack exchange,提问作者Grampiano
相关产品推荐
相关产品推荐

