Overriding Core Shape Driver : Display

Topics: Core, Writing modules
Sep 5, 2012 at 8:38 PM
Edited Sep 5, 2012 at 8:42 PM

I doubt it; but is there a way from an installed module to override how a core driver renders a shape?

Specifically; there's a bug (or limitation) to the current Core/Navigation that forces the menu items to be grouped together - when if a menu is properly built - is not necessary.  Unfortunately the Orchard Admin menus need to have this functionality - otherwise menu items are duplicated.  But for my own menus; I build them exactly the way I need them to be - and DO NOT want to group them by Displayed Text.

So instead of modying the MenuWidgetPartDriver.cs (part of the core) - is there a way for me to override the "Display" function within my own module so that I don't have to change the core.

This will allow to apply source orchard updates without losing my changes - until they are deemed no longer necessary?

Otherwise - right now I had to add an extension class to the Orchard.Core.Navigation library to make this work (but don't like doing that since I'm making changes to the Orchard Core Library.

Any insight would be greatly appreciated; or maybe there's another way?

NOTES: the actual GroupBy is done within the NavigationManager.cs; but if I can override the Display Function - then I'd be able to perform the necessary code changes and not have to make so many Core.UI and Core.Navigation changes.

Obviously - overriding the NavagationManager would also work; because I could then modify the behavior of the Join; but keep it for situations where the Orchard Admin menu is rendering.


Sep 12, 2012 at 8:43 PM

Of course. All shapes can be overridden from a theme. All of them, without exception. If you have found a bug, please file it.