Version

CMS Kit Pro Module

This module extends the open-source CMS Kit module and adds additional CMS (Content Management System) capabilities to your application.

This module is currently available for MVC / Razor Pages and Blazor UIs.

The following features are provided by the open source CMS Kit module:

  • Page management system to manage dynamic pages with dynamic URLs.
  • Blogging system to create publish blog posts with multiple blog support.
  • Tagging system to tag any kind of resource, like a blog post.
  • Comment system to add comments feature to any kind of resource, like blog post or a product review page.
  • Reaction system to add reactions (smileys) feature to any kind of resource, like a blog post or a comment.
  • Rating system to add rating feature to any kind of resource.
  • Menu system to manage public menus dynamically.
  • Global resources system to add global styles and scripts dynamically.
  • Dynamic widget system to create dynamic widgets for page and blog posts.

And the following features are provided by the CMS Kit pro version:

  • Newsletter system to allow users to subscribe to newsletters.
  • Contact form system to allow users to write messages to you.
  • URL forwarding system to create URLs that redirect to other pages or external websites.
  • Poll system to create quick polls for users
  • Page Feedback system to allow users to send feedback about pages.

Click on a feature to understand and learn how to use it. See the module description page for an overview of the module features.

How to Install

New Solutions

CMS Kit Pro is pre-installed in the startup templates if you create the solution with the public website option. If you are using ABP CLI, you should specify the the --with-public-website option as shown below:

abp new Acme.BookStore --with-public-website

Existing Solutions

If you want to add the CMS kit to your existing solution, you can use the ABP CLI add-module command:

abp add-module Volo.CmsKit.Pro

Open the GlobalFeatureConfigurator class in the Domain.Shared project and place the following code to the Configure method to enable all open-source and commercial features in the CMS Kit module.

GlobalFeatureManager.Instance.Modules.CmsKit(cmsKit =>
{
    cmsKit.EnableAll();
});

GlobalFeatureManager.Instance.Modules.CmsKitPro(cmsKitPro =>
{
    cmsKitPro.EnableAll();
});

Alternatively, you can enable features individually, like cmsKit.Comments.Enable();.

If you are using Entity Framework Core, do not forget to add a new migration and update your database.

Entity Extensions

Module entity extension system is a high-level extension system that allows you to define new properties for existing entities of the dependent modules. It automatically adds properties to the entity, database, HTTP API and user interface in a single point.

To extend entities of the CMS Kit Pro module, open your YourProjectNameModuleExtensionConfigurator class inside of your DomainShared project and change the ConfigureExtraProperties method like shown below.

public static void ConfigureExtraProperties()
{
    OneTimeRunner.Run(() =>
    {
        ObjectExtensionManager.Instance.Modules()
            .ConfigureCmsKitPro(cmsKitPro =>
            {
                cmsKitPro.ConfigurePoll(plan => // extend the Poll entity
                {
                    plan.AddOrUpdateProperty<string>( //property type: string
                      "PollDescription", //property name
                      property => {
                        //validation rules
                        property.Attributes.Add(new RequiredAttribute()); //adds required attribute to the defined property

                        //...other configurations for this property
                      }
                    );
                }); 

                cmsKitPro.ConfigureNewsletterRecord(newsletterRecord => // extend the NewsletterRecord entity
                {
                    newsletterRecord.AddOrUpdateProperty<string>( //property type: string
                      "NewsletterRecordDescription", //property name
                      property => {
                        //validation rules
                        property.Attributes.Add(new RequiredAttribute()); //adds required attribute to the defined property
                        property.Attributes.Add(
                          new StringLengthAttribute(MyConsts.MaximumDescriptionLength) {
                            MinimumLength = MyConsts.MinimumDescriptionLength
                          }
                        );

                        //...other configurations for this property
                      }
                    );
                });     
            });
    });
}
  • ConfigureCmsKitPro method is used to configure the entities of the CMS Kit Pro module.

  • cmsKit.ConfigurePoll(...) is used to configure the Poll entity of the CMS Kit Pro module. You can add or update your extra properties of the Poll entity.

  • cmsKit.ConfigureNewsletterRecord(...) is used to configure the NewsletterRecord entity of the CMS Kit Pro module. You can add or update your extra properties of the NewsletterRecord entity.

  • You can also set some validation rules for the property that you defined. In the above sample, RequiredAttribute and StringLengthAttribute were added for the property named "NewsletterRecord".

  • When you define the new property, it will automatically add to Entity, HTTP API and UI for you.

    • Once you define a property, it appears in the create and update forms of the related entity.
    • New properties also appear in the datatable of the related page.
Was this page helpful?
Please make a selection.
Thank you for your valuable feedback!

Please note that although we cannot respond to feedback, our team will use your comments to improve the experience.

In this document
Mastering ABP Framework Book
Mastering ABP Framework

This book will help you gain a complete understanding of the framework and modern web application development techniques.