金天:學(xué)習(xí)一個(gè)新東西,就要持有擁抱的心態(tài),如果固守在自己先前的概念體系,就會(huì)有舉步維艱的感覺。
金天:看源碼永遠(yuǎn)是Coder學(xué)習(xí)的最快捷路徑。 金天微信:15998603918 歡迎找我聊聊天。
看本文需要對(duì)Orchard大致體系, 特別是Module插件體系有一定的理解。
Orchard Admin Menu
自定義后臺(tái)管理導(dǎo)航菜單,只要在自己的Module里面實(shí)現(xiàn)接口INavigation
PRovider, 如下圖。
所有需要做的很簡(jiǎn)單,像上圖,添加AdminMenu實(shí)現(xiàn)INavigationProvider接口。
99%的邏輯都在 GetNavigation(NavigationItemBuilder builder)
定義菜單標(biāo)題
定義菜單鏈接
定義菜單位置
定義菜單樣式等等
這里有個(gè)非標(biāo)準(zhǔn)邏輯,筆者這里稱為臟邏輯:
Position(string position), 正常排序如 -2, -1, 1, 2, 3
如果設(shè)置成before or null, 則為-9999, 如果想排在更靠前需要比-9999更小
如果設(shè)置成after, 則為9999, 如果想排在更靠后, 需要比9999更大
注:
1. 更多具體怎么實(shí)現(xiàn)GetNavigation, 參考源碼所有實(shí)現(xiàn)INavigationProvider接口的類即可。看源碼永遠(yuǎn)是coder學(xué)習(xí)的捷徑。
2. 筆者這里實(shí)現(xiàn)的是RecentMenus, 就是把最近四次點(diǎn)到的Menu置頂,效果如下圖, 中間用到IActionFilter。