{"id":115,"date":"2009-05-31T22:33:54","date_gmt":"2009-06-01T02:33:54","guid":{"rendered":"http:\/\/blogs.law.harvard.edu\/brandonhaynes\/?p=115"},"modified":"2009-05-31T22:34:34","modified_gmt":"2009-06-01T02:34:34","slug":"released-dotnetnuke-templated-mega-menu-provider","status":"publish","type":"post","link":"https:\/\/archive.blogs.harvard.edu\/brandonhaynes\/2009\/05\/31\/released-dotnetnuke-templated-mega-menu-provider\/","title":{"rendered":"Released: DotNetNuke Templated Mega-Menu Provider"},"content":{"rendered":"<div style=\"float: right\"><a href=\"http:\/\/blogs.law.harvard.edu\/brandonhaynes\/files\/2009\/04\/dnnmegamenunavigationproviderdescriptionssmaller.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-46\" src=\"http:\/\/blogs.law.harvard.edu\/brandonhaynes\/files\/2009\/04\/dnnmegamenunavigationproviderdescriptionssmaller-300x284.png\" alt=\"A screenshot of the prototype DotNetnuke DNNMenu Mega-Menu Navigation Provider\" width=\"300\" height=\"284\" \/><\/a><\/div>\n<p>I am pleased to announce the <a href=\"http:\/\/dnntemplatedmenu.codeplex.com\/\">1.00.00 release<\/a> of a new templated mega-menu provider.   It is based on, and derives its functionality from, the default DNNMenu.<br \/>\n<!--more--><br \/>\nThe provider allows for the marking of one or more pages as being templated; during instantiation these templates are dynamically inserted into the page.  The templates are highly flexible and may be deployed at the site, skin, or portal level.  This allows for great flexibility in user experience.<\/p>\n<p><!--more--><\/p>\n<h2>Goals<\/h2>\n<ul>\n<li>Allow website administrators to select from one or more pre-defined menu templates for any page<\/li>\n<li>Allow templates to be deployed at the installation, portal, and skin level<\/li>\n<li>Allow specification of both rendered HTML and CSS file attachment on a per-page basis<\/li>\n<li>Allow templates to be fully search engine friendly and utilize modern XHTML and CSS design<\/li>\n<li>Rely on default DNNMenu implementation for all other behavior<\/li>\n<li>Require no core changes and utilize only existing DotNetNuke extension points<\/li>\n<\/ul>\n<h2>Background<\/h2>\n<p>The DotNetNuke content management system is a mature, robust, and widely-adopted web application framework. While the framework allows for the use of myriad menu systems (through the application of the provider pattern), to date there is no way to effectuate per-page templated (&#8220;mega&#8221;) menus.<\/p>\n<p>This project attempts to bridge that gap by extending the DotNetNuke-default DNNMenu system to render custom templates in place of any node in the menu hierarchy. These templates are easy to create and extend, and allow for a wide variety of final user experiences. Several such templates are included out-of-the-box, demonstrating the flexibility of this provider extension. For maximum flexibility, templates may be deployed by a host across an entire installation, provided as a part of a skinning package, or deployed on a per-portal basis.<\/p>\n<h3>What this project is&#8230;<\/h3>\n<p>This project is a derivative of the popular and DotNetNuke-included DNNMenu system included with the DotNetNuke Webcontrols project. All the functionality present in that menu system may be utilized by using this provider.<\/p>\n<h3>What this project is not&#8230;<\/h3>\n<p>This project is NOT a new menu system for DotNetNuke. It merely extends a small part of the functionality that already exists in the DNNMenu system. Although it is very likely that this method may be used to extend other menu providers (I have already verified this with the Telerik&#8217;s RadMenu), it does not yet do so.<\/p>\n<p>If any developer wishes to extend the method used herein to any other popular DotNetNuke navigation provider and would be interested in donating the code to the project, it would be greatly appreciated.<\/p>\n<h4>More Information<\/h4>\n<p>For more information about this provider, including additional screenshots, please visit the <a href=\"http:\/\/dnntemplatedmenu.codeplex.com\/\">project homepage<\/a>\u00a0(<a href=\"http:\/\/dnntemplatedmenu.codeplex.com\/\">http:\/\/dnntemplatedmenu.codeplex.com<\/a>) located on CodePlex. \u00a0The software itself is licensed under a liberal New BSD license for wide community utilization.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I am pleased to announce the 1.00.00 release of a new templated mega-menu provider. It is based on, and derives its functionality from, the default DNNMenu.<\/p>\n","protected":false},"author":1933,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3062,142],"tags":[3070,19470,6100,6101,6102,6099],"class_list":["post-115","post","type-post","status-publish","format-standard","hentry","category-dotnetnuke-dnn-content-management-system","category-technology","tag-dotnetnuke","tag-dotnetnuke-dnn-content-management-system","tag-menuing","tag-provider","tag-template","tag-user-interface"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/archive.blogs.harvard.edu\/brandonhaynes\/wp-json\/wp\/v2\/posts\/115","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/archive.blogs.harvard.edu\/brandonhaynes\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/archive.blogs.harvard.edu\/brandonhaynes\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/archive.blogs.harvard.edu\/brandonhaynes\/wp-json\/wp\/v2\/users\/1933"}],"replies":[{"embeddable":true,"href":"https:\/\/archive.blogs.harvard.edu\/brandonhaynes\/wp-json\/wp\/v2\/comments?post=115"}],"version-history":[{"count":16,"href":"https:\/\/archive.blogs.harvard.edu\/brandonhaynes\/wp-json\/wp\/v2\/posts\/115\/revisions"}],"predecessor-version":[{"id":131,"href":"https:\/\/archive.blogs.harvard.edu\/brandonhaynes\/wp-json\/wp\/v2\/posts\/115\/revisions\/131"}],"wp:attachment":[{"href":"https:\/\/archive.blogs.harvard.edu\/brandonhaynes\/wp-json\/wp\/v2\/media?parent=115"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/archive.blogs.harvard.edu\/brandonhaynes\/wp-json\/wp\/v2\/categories?post=115"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/archive.blogs.harvard.edu\/brandonhaynes\/wp-json\/wp\/v2\/tags?post=115"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}