You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
abp/docs/en/Modules/cms-kit/Blog-System.md

4.7 KiB

Blog System

CMS kit provides a blog system to add blogs & posts to a public website. This section describes the details of the blog system.

Feature

CMS kit uses the global feature system for all implemented features. Commercial startup templates come with all the CMS Kit-related features are enabled by default, if you create the solution with the public website option. If you're installing the CMS Kit manually or want to enable the blog feature individually, open the GlobalFeatureConfigurator class in the Domain.Shared project and place the following code to the Configure method.

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

Internals

Domain Layer

Aggregates

This module follows the Entity Best Practices & Conventions guide.

  • Blog (aggregate root): Presents blogs of application.
  • BlogPost(aggregate root): Presents blog posts in blogs.
  • BlogFeauture:(aggregate root): Presents blog features enabled/disabled state. Such as reactions, ratings, comments etc.

Repositories

This module follows the Repository Best Practices & Conventions guide.

Following custom repositories are defined for this feature:

  • IBlogRepository
  • IBlogPostRepository
  • IBlogFeatureRepository

Domain services

This module follows the Domain Services Best Practices & Conventions guide.

  • BlogManager: Includes some operations for Blog aggreate root to keep data consistency.
    • CreateAsync: Creates a new Blog entity and makes sure slug is used one time.
    • UpdateAsync: Updates existing Blog entity and makes sure slug is used one time.
  • BlogPostManager: Includes some operations for BlogPost aggreagate root such as creating & updating.
    • CreateAsync: Creates a new BlogPost and makes sure slug is used only one time.
    • SetSlugUrlAsync: Sets UrlSlug property of BlogPost entity and makes sure slug isn't duplicated in same blog.
  • BlogFeatureManager: Includes some operations for managing blog features.
    • SetAsync: Sets a feature enabled/disabled for a Blog.
    • SetDefaultsAsync: Resets all feature configuration for a Blog.

Application layer

Application Services

Admin
  • BlogAdminAppService (implements IBlogAdminAppService): Implements use cases of Blog Management.
  • BlogFeatureAdminAppService (implements IBlogFeatureAdminAppService): Implements use cases of Blog Feature Management.
  • BlogPostAdminAppService (implements IBlogPostAdminAppService): Implements use cases of Blog Post Management.
Common
  • BlogFeatureAppService (implements IBlogFeatureAppService): Implements feature checking operations.
Public
  • BlogPostPublicAppService (implements IBlogPostPublicAppService): Implements public blog post displaying operations.

Database providers

Common

Table / collection prefix & schema

All tables/collections use the Cms prefix by default. Set static properties on the CmsKitDbProperties class if you need to change the table prefix or set a schema name (if supported by your database provider).

Connection string

This module uses CmsKit for the connection string name. If you don't define a connection string with this name, it fallbacks to the Default connection string.

See the connection strings documentation for details.

Entity Framework Core

Tables
  • CmsBlogs
  • CmsBlogPosts
  • CmsBlogFeatures

MongoDB

Collections
  • CmsBlogs
  • CmsBlogPosts
  • CmsBlogFeatures

Admin UI

The blog system provides an admin UI to manage blogs, blogs posts & blog features by default. CMS menu will be available after a successful CMS Kit installation:

CmsKit Blogs

Managing Blogs

You need to start with adding a blog to your website. Go Cms -> Blogs menu and see the blog list. You can Create/Update & Delete blogs from here.

Managing Blog Features

Features can be configured per each Blog seperately. Go Cms -> Blogs menu and click the Featues menu item inActions menu.

CMS Kit Blog Features in Action Menu

Blog features can be configured with following modal.

Cms Kit Features Management Modal

Managing Blog Posts

Blog Posts can be managed from Cms -> Blog Posts menu. All blog posts will be listed in Public website at blogs/{blog}.