Blogging¶
SkyCMS includes a dedicated blogging subsystem with support for multiple independent blog streams, post management, banner images, and public preview.
Audience: Editors, Authors, Administrators
Quick Start¶
- Navigate to Editor → Blogs from the sidebar.
- Click Create to set up a new blog stream.
- Give it a title, description, and optional banner image.
- Open the stream and click New Entry to write your first post.
- Edit the post in the standard page editor, then Publish when ready.
Blog Streams¶
A blog stream is a named collection of blog posts — similar to a blog category or publication channel. A single site can host multiple independent blog streams (e.g., "Company News", "Engineering Blog", "Product Updates").
Creating a Blog Stream¶
- 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 Stream¶
- From the blog list, click Edit on the stream 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 Stream¶
- Click Delete on the stream row.
- Review the confirmation page.
- Click Confirm Delete.
Warning: Deleting a blog stream 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 Stream¶
One blog stream can be designated as the site default. Use the Make Default action in the blog list to promote a stream. The default stream is used as the reassignment target for orphaned posts.
Blog Posts¶
Blog posts are articles that belong to a blog stream. They use the same editing tools as standard pages (Page Editor, Code Editor, Page Builder) but are organized and rendered through the blog infrastructure.
Creating a Blog Post¶
- Open the blog stream from Editor → Blogs.
- Click New Entry.
- Enter a title in the modal dialog and click Create.
- You are redirected to the page 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 stream 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 entries list, each post has these quick actions:
| Action | Description |
|---|---|
| Edit | Open the post in the page 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 stream would have the URL:
/engineering/getting-started-with-skycms
Blog Templates¶
SkyCMS uses dedicated templates for blogs: the Blog Stream template and the Blog Post template. These templates use blog-specific CSS classes and editable regions.
Blog Stream Template¶
The stream 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.
Blog Preview¶
Each blog stream has an anonymous preview endpoint:
/editor/blogs/{blog-key}/preview
This renders a simplified view of the blog stream without requiring authentication. Use it to share a preview link with stakeholders who don't have editor accounts.
Blog Rendering¶
Client-Side Architecture¶
Blog streams use a client-side rendering pattern for performance:
- The server generates a wrapper HTML containing the stream 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¶
- Page 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