The Blog collection provides a full-featured blogging solution for your website. It supports multiple blog instances, rich text posts with images, categories, tags, comments with moderation, RSS feeds, email subscriptions, social media links, and sidebar widgets. Each blog is added to a page as a widget and configured independently, allowing different blogs with different settings on a single site.
When a blog is first created, it uses these defaults:
The post's Date Published defaults to the current date. The post author is set to the currently logged-in user.
An RSS feed entry is automatically created for each new post.
Alternatively, use the Content Management Portal:
The portal also provides separate tabs for Post Info (metadata, dates, tags), Post SEO (meta title, description, keywords), and Post RSS (RSS title, description, podcast links).
The Primary Image is the featured image for a post. It appears at the top of the article and is used for social media sharing.
Additional images can be added to a post through the image upload section in the post editor:
Secondary image display is controlled by the Image Display Type field: Hidden, List After Content, or Slider After Content.
Set a Default Image at the blog level to serve as a fallback for posts that have no primary image. This is configured in the blog settings.
Keeping your blog fresh improves SEO and reader engagement. To update a post's publish date:
If the Date Published field is blank, the system uses the original Date Added value. Posts are displayed in reverse chronological order by publish date, so updating this date moves the post to a more recent position in the list.
The blog also has a Blog Update Alarm Days setting (default: 30) that triggers an alert if no new post has been added within the specified number of days.
Categories provide a way to organize posts into groups. Each post can belong to one category.
Categories also support group-based access restrictions through the Blog Category Group Rules. This allows you to restrict certain categories so only members of specific groups can view posts in those categories.
Tags provide flexible, keyword-based organization for posts. Unlike categories, a post can have multiple tags.
The blog supports a full comment system with moderation controls.
Configure these in the blog settings:
Each post has an Allow Comments field that can enable or disable comments on that specific post, independent of blog-level settings.
The blog sidebar contains optional widgets that can be individually enabled or disabled in the blog settings. Each widget adds functionality to the sidebar area of the blog.
These widgets display links to your social media profiles in the sidebar:
The Latest Posts Widget is a standalone widget that can be placed on any page (not just the blog page) to display recent blog posts.
An RSS feed is automatically created when a new blog is set up. Each blog has an associated RSS Feed record.
SEO metadata can be set at both the blog level and individual post level.
These fields apply to the blog's landing/list page:
Each post has its own metadata fields:
These settings control how the blog list page appears:
Table: ccBlogs
| Field | Type | Default | Description |
|---|---|---|---|
| name | Text | Auto-generated | Internal name of the blog (not displayed publicly). |
| caption | Text | Auto-generated | Public-facing blog title displayed as the headline. |
| copy | HTML | Sample text | Blog description displayed at the top of the post list. |
| ownerMemberId | Lookup (People) | Current user | The creator and primary owner of the blog. Receives comment notifications. |
| defaultImageFilename | File | (none) | Default fallback image for posts without a primary image. |
| rssFeedId | Lookup (RSS Feeds) | Auto-created | The RSS feed associated with this blog. |
| postsToDisplay | Integer | 5 | Number of posts shown per page on the blog list view. |
| overviewLength | Integer | 150 | Maximum character count for post previews on the list page. |
| thumbnailImageWidth | Integer | 150 | Width in pixels for thumbnail images on the list page. |
| imageWidthMax | Integer | 800 | Maximum width in pixels for secondary images in posts. |
| blogUpdateAlarmDays | Integer | 30 | Days before a stale-blog alert is triggered. |
| allowAnonymous | Boolean | false | Allow comments from unauthenticated visitors. |
| autoApproveComments | Boolean | false | Automatically approve new comments without moderation. |
| emailComment | Boolean | false | Send email notification to blog owner when a comment is posted. |
| recaptcha | Boolean | false | Display reCAPTCHA on the comment form for spam protection. |
| allowCategories | Boolean | false | Enable category selection on posts. |
| allowArticleCTA | Boolean | false | Enable Call-to-Action widgets on posts. |
| allowSearch | Boolean | true | Display a search box in the blog sidebar. |
| allowArchiveList | Boolean | false | Display a monthly archive list in the sidebar. |
| allowEmailSubscribe | Boolean | false | Display an email subscription form in the sidebar. |
| emailSubscribeGroupId | Lookup (Groups) | (none) | Group that email subscribers are added to. |
| allowRSSSubscribe | Boolean | false | Display an RSS feed subscription link in the sidebar. |
| allowFacebookLink | Boolean | false | Display a Facebook follow link in the sidebar. |
| facebookLink | Text | (none) | URL to your Facebook page. |
| allowTwitterLink | Boolean | false | Display a Twitter follow link in the sidebar. |
| twitterLink | Text | (none) | URL to your Twitter profile. |
| allowGooglePlusLink | Boolean | false | (Legacy) Display a Google+ follow link. Google+ is discontinued. |
| googlePlusLink | Text | (none) | (Legacy) URL to Google+ profile. |
| followUsCaption | Text | "Follow Us" | Heading text displayed above social media links. |
| metaTitle | Text | (none) | SEO page title for the blog landing page. |
| metaDescription | Text | (none) | SEO description for the blog landing page. |
| metaKeywordList | Text | (none) | SEO keywords for the blog landing page. |
| authoringGroupId | Lookup (Groups) | (none) | Group whose members can create posts. Defaults to "Blog Authors" group if not set. |
Table: ccBlogCopy
| Field | Type | Default | Description |
|---|---|---|---|
| name | Text | (none) | Post headline/title displayed on the blog. |
| copy | HTML | (none) | Full HTML content of the blog post. |
| datePublished | Date | dateAdded | Public publish date. If blank, the system uses the date the post was created. |
| blogId | Lookup (Blogs) | (none) | The blog this post belongs to. |
| blogCategoryId | Lookup (Blog Categories) | (none) | Optional category assignment for this post. |
| tagList | Text | (none) | Comma-separated list of tags for the post. |
| authorMemberId | Lookup (People) | (none) | Post author. Must be a member of the Blog Authors group. |
| primaryImage | File | (none) | Featured image for the post. Used in list view and social sharing. |
| primaryImageDescription | Text | (none) | Alt text/description for the primary image. |
| primaryImageAltSizeList | Text | (none) | Responsive image size list for the primary image (developer use). |
| primaryImagePositionId | Integer | 1 | How the primary image displays in the post list: 1 = Per Stylesheet, 2 = Right, 3 = Left, 4 = Hide. |
| articlePrimaryImagePositionId | Integer | (none) | How the primary image displays in the article detail view. Same options as above. |
| imageDisplayTypeId | Integer | (none) | How secondary images display: Hidden, List After Content, or Slider After Content. |
| allowComments | Boolean | false | Enable or disable comments on this specific post. |
| viewings | Integer | 0 | Read-only count of how many times this post has been viewed. |
| podcastMediaLink | Text | (none) | URL to a podcast audio or video file. Creates an RSS enclosure. |
| podcastSize | Integer | 0 | File size of the podcast media in bytes. |
| rssTitle | Text | (none) | Custom title for the RSS feed entry. If blank, uses the post title. |
| rssDescription | Text | (none) | Custom description for the RSS feed entry. If blank, auto-generated from post content. |
| rssLink | Text | (none) | Custom link URL for the RSS feed entry. |
| rssDatePublish | Date | (none) | Date the post becomes available in the RSS feed. |
| rssDateExpire | Date | (none) | Date the post is removed from the RSS feed. |
| metaTitle | Text | (none) | SEO page title when viewing this post. |
| metaDescription | Text | (none) | SEO description for this post. |
| metaKeywordList | Text | (none) | SEO keywords for this post. |
| callsToAction | Many-to-Many | (none) | Call-to-Action widgets associated with this post (requires allowArticleCTA on blog). |
Table: BlogCategories
| Field | Type | Default | Description |
|---|---|---|---|
| name | Text | (none) | Display name of the category. |
| active | Boolean | true | Whether the category is active and available for selection. |
| blockingGroups | Many-to-Many (Groups) | (none) | Groups that are allowed to view posts in this category. If set, only members of these groups see the posts. |
| userBlocking | Boolean | false | Enable user-level blocking for this category. |
Table: ccBlogComments
| Field | Type | Default | Description |
|---|---|---|---|
| name | Text | (none) | Comment subject or title. |
| copyText | Text | (none) | The body text of the comment. |
| approved | Boolean | false | Whether the comment is approved and visible. Auto-set to true if autoApproveComments is enabled on the blog. |
| blogId | Lookup (Blogs) | (auto) | The blog this comment belongs to (read-only). |
| entryId | Lookup (Blog Entries) | (auto) | The post this comment is attached to. |
| formKey | Text | (auto) | Anti-spam token (system-managed). |
Table: BlogImages
| Field | Type | Default | Description |
|---|---|---|---|
| name | Text | (none) | Alt text for the image. |
| filename | File | (none) | The uploaded image file. |
| description | Text | (none) | Optional description of the image. |
| height | Integer | 0 | Image height in pixels. |
| width | Integer | 0 | Image width in pixels. |
| altSizeList | Text | (none) | Responsive image sizes for different viewport widths (developer use). |
| blogEntryId | Lookup (Blog Entries) | (none) | The post this image is directly attached to. Blank for shared images. |
| sortOrder | Integer | 0 | Display order of the image within a post. Lower numbers appear first. |
Table: LatestPostWidgets
| Field | Type | Default | Description |
|---|---|---|---|
| defaultPostImage | File | (none) | Default image displayed for posts that have no primary image. |
The Latest Posts Widget also inherits design block styling fields from its base class:
| Field | Type | Default | Description |
|---|---|---|---|
| padTop | Integer | 0 | Top padding in pixels. |
| padRight | Integer | 0 | Right padding in pixels. |
| padBottom | Integer | 0 | Bottom padding in pixels. |
| padLeft | Integer | 0 | Left padding in pixels. |
| backgroundImageFilename | File | (none) | Background image for the widget container. |
| asFullBleed | Boolean | false | Render the widget as full-width, edge to edge. |
| styleHeight | Text | (none) | Custom CSS height value with units (e.g., "300px"). |
| themeStyleId | Lookup | (none) | Optional theme wrapper class for styling. |