Learn More





DNN Community Blog

The Community Blog is a personal opinion of community members and by no means the official standpoint of DNN Corp or DNN Platform. This is a place to express personal thoughts about DNNPlatform, the community and its ecosystem. Do you have useful information that you would like to share with the DNN Community in a featured article or blog? If so, please contact .

The use of the Community Blog is covered by our Community Blog Guidelines - please read before commenting or posting.

Announcing the Dynamic Content Creator

TitleImageSince the earliest days of DNN, users have had the ability to create user defined tables for storing structured content.  The original UDT module was eventually renamed to the Form & List module and continued to be enhanced for many years to provide greater control over the data definition and presentation.  Over the past couple of years there have been a few other Open Source modules that have tackled the job of providing structured content editing for DNN.  I have long believed that this is a fundamental requirement of any CMS and should be an out of the box capability for the platform.

I’m pleased to announce that DNN 8 will once again include the ability to create, edit and display structured content as a native capability of the platform.  DNN 8 CTP 5 for the first time includes both the Dynamic Content Type Manager and the Dynamic Content Viewer.  These two modules, along with an improved Content API, make up the new Dynamic Content Creator (DCC).

In the past users have often resorted to modules like the Announcements module, the FAQ module, the List module and many others that can be easily replaced with the DCC.  Let’s take a look at what is shipping with CTP 5 and what we still have left to complete for DNN 8.

Getting Started

To get started with DCC, first lets login as an administrator and go to the Dynamic Content Type Manager in the Admin menu:

DCC Admin

This will open up the type manager, the heart of the DCC, which we use for managing content types.  In CTP 5, DCC ships with four basic content types: HTML, Markdown, Employee and Product.  These content types will likely change as we finish work on adding list and reference type support to the platform. 


Editing a content type allows you to view and modify the underlying structure.  Content fields allow you to create rich content structures and will be used when viewing and editing content to determine how to present the underlying data and what content editors should be shown for creating or updating content.  Content Types like HTML or Markdown are simple, single field types which are useful when we just want to put some unstructured content on a page.  Ultimately, you could use the HTML content type as a simple replacement for the HTML module.


Content fields can be defined using any of the pre-defined data types, or we can create a new data type.  This is very useful for those times when you want to offer a custom editing experience but don’t want to affect other content types which may already rely on a specific editor.  For example, the built in Date type uses a jQuery UI based Date picker, but you might want to define a date range data type with a custom editor that uses something like the date range picker in Google Analytics shown below.


The DCC includes 15 different data types in CTP 5, but I expect that we’ll expand this number before DNN 8 finally ships.  We’ll also be tweaking some of the underlying base types which define how the data is serialized.  Currently some of the types like Images and Files are stored as integers which are easily related to files in the DNN file system, but we are likely to change the underlying type to string so that we can store references to files or images which may exist outside of DNN.

Templates, Templates, Templates

Templates play an important role in DCC.  Templates are used to define how your data should be presented and how your content is edited.  The Dynamic Content Type Manager includes a built in template editor for creating and updating templates.  You can define view templates and edit templates so that you can control all aspects of how your content type is shown.  In the current CTP, we have included basic snippet support to aid in developing templates.  We’ll be adding a lot of new templates before the final release which should make creating templates even easier.  CTP 5 currently supports Razor Script templates.  We are planning to add support to Token based html templates as many site owners will not want to give Razor Script access to anyone who isn’t a host user.


Below the basic view and edit templates there exists an entire set of Display and Editor templates.  These templates define exactly how to render a given data element depending on whether you  are in edit mode or display mode.  For example, although an image might be stored as a number in the database, you will want that displayed as an <img> tag in the final output.  The Display and Editor templates are where this magic happens.  We’ll go over where these templates are stored and how they work in a separate blog post.

CTP 5 also includes two special templates. There is a getting started template which defines what to show the user before they have fully configured the Dynamic Content Viewer.  This template is fully editable by administrators so that they can provide content managers with site specific instructions for using content types. The second template is a system template that is used for auto-generating the editing view.  You can use this edit template with any content type which is useful if you are working with simple content types.  Of course you can always define your own edit template and use that instead.


What a nice view

Of course, all of those templates and content types are for naught if you don’t have a way to actually show the content to users.  This is where the new Dynamic Content Viewer comes in.  Just add the viewer module to a page and you are quickly on your way.  You will immediately see a difference from past DNN behavior.  When you add the viewer module, it will immediately show you a new quick settings display in the module action menu.

NOTE: In the final release we’ll also be minimizing the module section of the control panel once you add a module to the page.

Quick settings is a new feature in DNN 8 that can be used by any module developer to give editors quick access to module specific settings.  There is no need to open a new dialog box or to even do a page refresh when you are done.  It also eliminates a lot of the extra settings which are available in the module settings dialog box.  This lets you quickly change module settings and get back to the real work of editing or displaying your content.



Quick settings can be created in web forms, MVC or SPA module types and is based on defining a module control using a “QuickSettings” control key.  Your “view” (html, ascx or cshtml) just needs to include some JavaScript that wires up the save buttons onSave event which will call your JavaScript method when the save button is called.  You can also add an option for the onCancel event as well.  It is up to your module to make the appropriate AJAX calls to save the data and to refresh your main view as appropriate.

quickSettings save

NOTE: There is a bug in the Dynamic Content Viewer in CTP 5 and you will need to do a page refresh after saving the Quick Settings in order to get the Edit Content menu to show you the edit option.

Once configured the Viewer will show you your content using the selected template.  To edit your content, just use the Module Action Menu and select Edit Content. This will show a modal dialog using the Edit Template configured in the quick settings.  If you have selected the HTML or Markdown content types and the Auto Generated edit template then you should get a rich editor that looks something like the one shown here.

HTML Editor

But Wait There’s More

This covers the basics of using the new Dynamic Content Creator in CTP 5.  This is just one of the features available in this release.  We also have added some new manifest extensions that allow module developers to automatically create an admin or host page for their module during install.  We’ll do a separate blog once that feature is a little more locked down as we expect it to change before the beta release next month.

We still have a number of significant enhancements and bug fixes coming before the final DNN 8 release.  I urge you to take a look at CTP 5 and tell us what you like and what you don’t like.  Now is the time to register your feedback while there is still time to change things if needed.  As we get closer and closer to release, we’ll be adding more documentation on all the awesome new features we have included in DNN 8. Don’t forget, with the new incremental upgrade feature, if you install CTP 5, you’ll be able to upgrade directly to later preview releases or to the final DNN 8 release when it becomes available.


Will Strohl
Is there going to be a way to turn off Quick Settings?
Will Strohl Friday, September 25, 2015 7:37 PM (link)
Joe Brinkman
No. Quick settings is determined by each module. Some modules, like SPA modules don't have a way to tie into regular settings. Besides, Quick Settings is no different from a module creating it's own admin UI, which many of them do.
Joe Brinkman Friday, September 25, 2015 7:39 PM (link)
Charles Nurse
@Will QuickSettings is just a ModuleControl with the predefined key "QuickSettings" - If a module doesn't provide a QuickSettings ModuleControl then there is no QuickSettings.
Charles Nurse Friday, September 25, 2015 8:48 PM (link)
Phil Speth
This is the secret sauce.
Types I would love:
- Event Type
- Location Type
- Facility Item Type (Room, Projector... anything you can book)

Phil Speth Friday, September 25, 2015 9:51 PM (link)
Mike Ryckman
Very cool!

One thing that might be nice is filters that can be applied in the view module. For example, imagine I do an employees list (like the example) with DCC. Rather than creating 10 different templates that are all identical and using the razor code to do a filter, it would be cool if I could apply basic filters as a part of the view settings. So, I could do my "employee list" view and then, in one instance, show current employees... In another, show employees with birthdays this month... that sort of thing. The Ventrian modules always did something like that nicely.

The other one that I've mentioned before would be to have the fields "file upload" and "user" built in... file upload is obviously just like image... user would be an auto-search of site users and allow you to select one.

But yeah... this is totally awesome and a great addition to dnn. I'm actually waiting on a big project for this because it has such great potential! Thanks guys!
Mike Ryckman Saturday, September 26, 2015 1:16 PM (link)
Mike Ryckman
Whoops! My bad - I just saw there are user and file types! I missed that from the previous version.
Mike Ryckman Saturday, September 26, 2015 1:18 PM (link)
this is awesome! Any chance there will be a way to import and export types so people can share their types and templates. Also, will there be a way specify whether types/templates are available to all portals on a host or just the current one? Great work guys
Jordan Saturday, September 26, 2015 2:00 PM (link)
Joe Brinkman
@Jordan - We are planning an import/export feature, but it won't be in the initial release.

@Mike - We haven't defined a user data type yet (although it wouldn't be difficult to do so. Adding new data types is relatively straight forward since it comes down to defining a display template and editor template for the data type. The most difficult piece is the editor, since it has to know how to call the underlying platform APIs and contain most of the logic of the user selection.
Joe Brinkman Saturday, September 26, 2015 9:38 PM (link)
Clinton Patterson
Looking forward to learning & using this module.. thanks for the update. Look forward to even more!
Clinton Patterson Sunday, September 27, 2015 9:37 AM (link)
Jacques Woolston
I've had a good look at the whole module, and it looks great, I really like the use of Razor Scripts here for flexibility. Some more examples would be handy, like how to display a list of contentItems for a given module.
Jacques Woolston Monday, September 28, 2015 8:58 AM (link)
Joe Brinkman
@Jacques - We have not implemented the list functionality into the DCC yet. We are currently working on that. It should be available in our next preview release in October.
Joe Brinkman Monday, September 28, 2015 1:52 PM (link)
Jacques Woolston
@Joe - Thanks for the update, I'll stop trying to work that out then and wait for the next CTP, do you have a date for this yet? Is DNN8 still on track with the Roadmap as published? Thanks
Jacques Woolston Tuesday, September 29, 2015 6:32 AM (link)
Joe Brinkman
@Jacques - I have updated the roadmap to reflect the new release date. We expect to release Beta 1 on October 21 (this may change based on initial testing). This new schedule (with a January release date) gives us more time to incorporate feedback on the DCC as well as MVC and SPA module support. This also gives us time to work on creating comprehensive dev docs for the new 8.0 developer features.
Joe Brinkman Tuesday, September 29, 2015 11:28 AM (link)
Lee Wise
I've been a huge fan of Form & List for the past few years so I'm very excited to see what can be done with this! Also eager about the use of Razor scripts instead of XSL.
Lee Wise Tuesday, September 29, 2015 10:49 PM (link)
Jacques Woolston
@Joe - Thanks for the roadmap update.
Jacques Woolston Wednesday, September 30, 2015 4:17 AM (link)
Erik Hinds
Hi Joe -

Will this also be in the Evoq editions?
Erik Hinds Wednesday, September 30, 2015 10:32 AM (link)
Fali Postar
Thank you it's really great!
Fali Postar Wednesday, September 30, 2015 12:29 PM (link)
Jaydeep Bhatt
Is there any tutorial as to how to use this excellent new module (DCC)?
Jaydeep Bhatt Friday, October 02, 2015 12:28 AM (link)
And for all new to dynamic content topics (or using list and forms till now) - note that 2sxc has had all these features and much more (lists, multi-language, separation of global-settings / instance-settings, v-card generation, thumbnailer) and much much more for years.
Love from Switzerland :)
2sicDev Friday, October 02, 2015 3:55 AM (link)
Jason Scott
How does this compare and contrast with the 2sxc system?
Jason Scott Friday, October 02, 2015 5:58 AM (link)
Jaydeep Bhatt

I thought DCC is official integration of 2sxc module into DNN
Jaydeep Bhatt Saturday, October 03, 2015 10:58 AM (link)
Joe Brinkman
@Erik - Yes this will also be in Evoq
Joe Brinkman Saturday, October 03, 2015 2:56 PM (link)
Joe Brinkman
@Jason - I would say that 2SXC is more mature and has more features than DCC will on it's initial launch. The same is true of other great content modules like Form&List, OpenContent, and others. Where I think DCC is different is that the DCC focuses first on creating a great content API that extends the existing platform and that is available to all module developers. The other major difference is that we have separated out the content management features from the content editing features whereas most other modules keep them as part of a single module. Beyond 8.0, the platform and Evoq teams will continue expanding the DCC functionality to close the gap between the core platform and other content implementations. We are using the the JCR ( as a roadmap of sorts to help guide the direction of the DCC as we make content a truly first class experience for DNN.
Joe Brinkman Monday, October 05, 2015 6:46 AM (link)
Vladimir Vucetic
@Joe Brinkman and @All generally I probably miss something but need confirmation :) If we made SPA module we can only use "QuickSettings" (which use web API to update module settings data in DNN database) and SPA modules can't have standard custom settings like in DNN before (go to module settings > custom settings tab)?
Vladimir Vucetic Saturday, February 20, 2016 11:58 AM (link)
Will Strohl
@Vladimir: This isn't true. Quick Settings is just yet another way for developers to allow end-users to interact with your module. You can still use the standard settings view if you want. Also, if you like this comment, please vote for my module.
Will Strohl Monday, February 22, 2016 2:38 PM (link)
Vladimir Vucetic
@Will thank you for answer but now I am confused. I created new spa module with christoc spa template and when in manifest I set quicksettings it work but if i replace it with Settings it doesn't show up in module settings as tab. Is there some opensource module where I can see how to use standard sertings with spa module? Also I think that more tutorials about complete module creation is missing for new dnn 8. Something like mr. Wilkinson complete tutorial on module best practices and module creation.
Vladimir Vucetic Monday, February 22, 2016 2:49 PM (link)
Rich Campbell
@Will, I think you need to clarify that you can use the standard settings in a SPA module, but only by using a non-SPA module control for the settings (reference So, @Vladimir, you can't use an HTML "module control" for the settings, but your "SPA module" can include an ASCX or MVC "module control" for the settings, while the rest as HTML/SPA "controls."
Rich Campbell Tuesday, February 23, 2016 12:12 PM (link)
Bassel Issa
It seems that DCC still not released with DNN8 yet.! isn't it?
Bassel Issa Tuesday, April 12, 2016 8:32 AM (link)

Comment Form

Only registered users may post comments.


2sic Daniel Mettler (124)
Aderson Oliveira (15)
Alec Whittington (11)
Alex Shirley (10)
Andrew Nurse (30)
Anthony Glenwright (5)
Antonio Chagoury (28)
Ash Prasad (22)
Ben Schmidt (1)
Benjamin Hermann (25)
Benoit Sarton (9)
Beth Firebaugh (12)
Bill Walker (36)
Bob Kruger (5)
Brian Dukes (2)
Brice Snow (1)
Bruce Chapman (20)
Bryan Andrews (1)
cathal connolly (55)
Charles Nurse (163)
Chris Hammond (203)
Chris Paterra (55)
Clinton Patterson (28)
Cuong Dang (21)
Daniel Bartholomew (2)
Dave Buckner (2)
David Poindexter (3)
David Rodriguez (2)
Doug Howell (11)
Erik van Ballegoij (30)
Ernst Peter Tamminga (74)
Geoff Barlow (6)
Gifford Watkins (3)
Gilles Le Pigocher (3)
Ian Robinson (7)
Israel Martinez (17)
Jan Blomquist (2)
Jan Jonas (3)
Jaspreet Bhatia (1)
Jenni Merrifield (6)
Joe Brinkman (270)
John Mitchell (1)
Jon Henning (14)
Jonathan Sheely (4)
Jordan Coopersmith (1)
Joseph Craig (2)
Kan Ma (1)
Keivan Beigi (3)
Ken Grierson (10)
Kevin Schreiner (6)
Leigh Pointer (31)
Lorraine Young (60)
Malik Khan (1)
Matthias Schlomann (15)
Mauricio Márquez (5)
Michael Doxsey (7)
Michael Tobisch (3)
Michael Washington (202)
Mike Horton (19)
Mitchel Sellers (28)
Nathan Rover (3)
Navin V Nagiah (14)
Néstor Sánchez (31)
Nik Kalyani (14)
Peter Donker (52)
Philip Beadle (135)
Philipp Becker (4)
Richard Dumas (22)
Robert J Collins (5)
Roger Selwyn (8)
Ruben Lopez (1)
Ryan Martinez (1)
Salar Golestanian (4)
Sanjay Mehrotra (9)
Scott McCulloch (1)
Scott S (11)
Scott Wilkinson (3)
Scott Willhite (97)
Sebastian Leupold (80)
Shaun Walker (237)
Shawn Mehaffie (17)
Stefan Cullmann (12)
Stefan Kamphuis (12)
Steve Fabian (31)
Timo Breumelhof (24)
Tony Henrich (3)
Torsten Weggen (2)
Vicenç Masanas (27)
Vincent Nguyen (3)
Vitaly Kozadayev (6)
Will Morgenweck (37)
Will Strohl (163)
William Severance (5)
Try Evoq
For Free
Start Free Trial
a Demo
See Evoq Live
Need More Information?