منویهای ناپ کامرس از فایلی به نام sitemap.config ساخته و تنظیم میشود.
src\Presentation\Nop.Web\Areas\Admin
برای انجام اینکار توسط پلاگین، در فایل cs پلاگین اینترفیس IAdminMenuPlugin برای کلاس پلاگین خود پیادهسازی کرده و از کد زیر استفاده کنید.
همچنین میتوانید برای این قسمت از ACL برای مدیریت دسترسی پلاگین استفاده کنید و اینجا قرار دهید.
public class CustomPlugin : BasePlugin, IAdminMenuPlugin { public Task ManageSiteMapAsync(SiteMapNode rootNode) { var menuItem = new SiteMapNode() { SystemName = "YourCustomSystemName", Title = "Plugin Title", ControllerName = "ControllerName", ActionName = "List", Visible = true, RouteValues = new RouteValueDictionary() { { "area", null } }, }; var pluginNode = rootNode.ChildNodes.FirstOrDefault(x => x.SystemName == "Third party plugins"); if(pluginNode != null) pluginNode.ChildNodes.Add(menuItem); else rootNode.ChildNodes.Add(menuItem); return Task.CompletedTask; } }
برای ورژن 2.00 تا 3.50 از کد زیر استفاده کنید:
public bool Authenticate() { return true; } public SiteMapNode BuildMenuItem() // SiteMapNode is Class in Nop.Web.Framework.Menu { var menuItemBuilder = new SiteMapNode() { Title = "Title For Menu item", // Title for your Custom Menu Item Url = "Path of action link", // Path of the action link Visible = true, RouteValues = new RouteValueDictionary() { {"Area", "Admin"} } }; var SubMenuItem = new SiteMapNode() // add child Custom menu { Title = "Title For Menu Child menu item", // Title for your Sub Menu item ControllerName = "Your Controller Name", // Your controller Name ActionName = "Configure", // Action Name Visible = true, RouteValues = new RouteValueDictionary() { {"Area", "Admin"} }, }; menuItemBuilder.ChildNodes.Add(SubMenuItem); return menuItemBuilder; }
در کد بالا، باتوجه به کامنتها لازم به جایگزینی مقادیر بسته به نیاز خود دارید. علاوه بر این، کد نحوه ایجاد زیر منو در منوی اصلی که ایجاد میکنید را نشان میدهد.
ممنون از توجهتون.
منبع :