Blogging¶
SkyCMS includes a dedicated blogging subsystem with support for multiple independent blogs, post management, banner images, and public preview.
Terminology note¶
- A blog is an article with
ArticleType = BlogStream(the enum value is retained for compatibility). - A blog post is an article with
ArticleType = BlogPost. - Both use the standard article lifecycle and publishing workflow.
Quick Start¶
- Navigate to Editor → Blogs from the sidebar.
- Click Create to set up a new blog.
- Give it a title, description, and optional banner image.
- Open the blog and click New Post to write your first post.
- Edit the post in the standard Visual Editor, then Publish when ready.
Blogs¶
A blog is a named collection of blog posts — similar to a blog category or publication channel. A single site can host multiple independent blogs (e.g., "Company News", "Engineering Blog", "Product Updates").
Creating a Blog¶
- Go to Editor → Blogs.
- Click Create.
- Fill in the fields:
| Field | Required | Description |
|---|---|---|
| Title | Yes | Display name shown on the blog index (max 128 characters) |
| Blog Key | Yes | URL-safe identifier, auto-generated from the title. Only lowercase letters, numbers, hyphens, and underscores are allowed (^[a-z0-9-_]+$). Must be unique. Max 64 characters. |
| Description | Yes | Summary text shown on the stream index page (max 512 characters) |
| Banner Image | No | Featured image for the stream. Click the image placeholder to upload or select from the File Manager. |
| Publish Date | No | Optional publication date/time. Leave blank to keep the stream in draft. |
- Click Create to save.
Editing a Blog¶
- From the blog list, click Edit on the blog row.
- Update any fields — title, description, banner image, or publish date.
- Click Save.
Note: Changing the title does not change the Blog Key. The key is permanent once created.
Deleting a Blog¶
- Click Delete on the blog row.
- Review the confirmation page.
- Click Confirm Delete.
Warning: Deleting a blog also deletes all posts within it. This is a soft delete — the content is marked as deleted but may be recoverable by an administrator.
Default Blog¶
One blog can be designated as the site default. Use the Make Default action in the blog list to promote a blog. The default blog is used as the reassignment target for orphaned posts.
Blog Posts¶
Blog posts are articles that belong to a blog. They use the same editing tools as standard pages (Visual Editor, Code Editor, Page Builder) but are organized and rendered through the blog infrastructure.
Creating a Blog Post¶
- Open the blog from Editor → Blogs.
- Click New Post.
- Enter a title in the modal dialog and click Create.
- You are redirected to the Visual Editor with an empty post. Write your content.
- Optionally set a banner image, introduction text, and publish date.
- Click Publish to make the post live, or save as a draft.
Post Properties¶
| Property | Description |
|---|---|
| Title | Post headline (max 254 characters). The URL slug is auto-generated from the title. |
| Content | The post body, edited with any of the standard editors. |
| Introduction | Short excerpt or summary (max 512 characters). Shown in blog listings. |
| Banner Image | Featured image displayed at the top of the post and in listings. |
| Published | Set a date/time to make the post live. Leave blank for draft. |
| Category | Optional taxonomy label (max 64 characters). |
Managing Posts¶
From the blog posts list, each post has these quick actions:
| Action | Description |
|---|---|
| Edit | Open the post in the Visual Editor |
| Delete | Soft-delete the post (with confirmation) |
| Preview on Site | View the post as visitors will see it |
Post URLs¶
Blog post URLs follow this pattern:
/{blog-key}/{post-slug}
For example, a post titled "Getting Started with SkyCMS" in the "engineering" blog would have the URL:
/engineering/getting-started-with-skycms
Blog Templates¶
SkyCMS uses dedicated templates for blogs: the Blog template and the Blog Post template. These templates use blog-specific CSS classes and editable regions.
Blog Template¶
The blog template renders the blog index page with a list of posts. Key elements:
- Stream title and introduction text
- Banner image (optional)
- Paginated post listing with title, excerpt, date, and thumbnail
- Navigation controls (previous/next page)
Blog Post Template¶
The post template renders individual blog posts. Key elements:
- Post title (h2)
- Publication date and author info
- Banner image
- Post body content
- Previous/Next post navigation links
Editable Regions¶
Blog templates define these editable regions using data-ccms-ceid attributes:
| Region ID | Purpose |
|---|---|
skycms-blog-post-content |
Main post body content |
skycms-blog-post-author |
Author information widget |
skycms-blog-post-bi |
Banner image widget |
CSS Classes¶
Blog templates use a consistent CSS class naming convention for styling:
Stream classes (prefix sky-blog-stream-):
sky-blog-stream-section, sky-blog-stream-container, sky-blog-stream-header, sky-blog-stream-h1, sky-blog-stream-intro, sky-blog-stream-row, sky-blog-stream-nav-container, sky-blog-stream-nav-pagination, sky-blog-stream-figure, sky-blog-stream-card-image
Post classes (prefix sky-blog-post-):
sky-blog-post-article, sky-blog-post-body, sky-blog-post-info, sky-blog-post-info-updated, sky-blog-post-title, sky-blog-post-content, sky-blog-post-image
You can customize blog appearance by overriding these classes in your layout's stylesheet.
Legacy templates may still contain older class names or markup patterns, but new documentation and new template work should prefer the stable skycms-blog-post-* region identifiers and sky-blog-post-* CSS hooks documented here.
Blog Preview¶
Each blog has an anonymous preview endpoint:
/editor/blogs/{blog-key}/preview
This renders a simplified view of the blog without requiring authentication. Use it to share a preview link with stakeholders who don't have editor accounts.
Blog Rendering¶
Client-Side Architecture¶
Blogs use a client-side rendering pattern for performance:
- The server generates a wrapper HTML containing the blog header, an empty post container, and an embedded JSON array of post metadata.
- The browser loads
/js/blog-stream-loader.jswhich reads the embedded JSON. - Posts are inserted into the
#post-listcontainer dynamically. - Pagination is handled client-side via the
#paginationnav element.
Post Display¶
Each post in the stream listing shows:
- Title (linked to the full post)
- Publication or last-updated date
- Introduction/excerpt text
- Banner image thumbnail (if available)
Posts are sorted by publication date (newest first), then by title.
Post Navigation¶
When viewing an individual blog post, previous/next navigation links appear at the bottom of the page. Navigation order follows publication date.
See Also¶
- Visual Editor — Editing blog post content
- File Manager — Uploading banner images
- Article Lifecycle Reference — Content states and publishing
- Page Scheduling — Scheduling blog posts for future publication
- Blog API Reference — JSON endpoints for blog data
- Blog Architecture — Technical internals for developers