Posts and Pages
Unfold CMS provides a full-featured content management system for blog posts, static pages, and landing pages. The admin panel offers a rich editing experience with categories, tags, featured images, SEO fields, and scheduled publishing.
Blog Posts
Creating a Post
Navigate to Blog > Posts in the admin panel and click Create Post. The post editor provides the following fields:
| Field | Description |
|---|---|
| Title | The post title (used in <h1> and browser title) |
| Slug | URL-friendly identifier (auto-generated from title) |
| Content | Rich text editor with formatting, images, and media |
| Excerpt | Short summary for post listings and meta descriptions |
| Featured Image | Primary image for post cards and Open Graph |
| Categories | One or more categories for organization |
| Allow Comments | Enable/disable comments for this post |
| Is Published | Toggle between draft and published states |
| Posted At | Publication date (future dates enable scheduled publishing) |
Post States
Posts exist in one of three states:
| State | Description |
|---|---|
| Draft | is_published = false. Not visible to the public. |
| Published | is_published = true and posted_at is in the past. Visible on the site. |
| Scheduled | is_published = true and posted_at is in the future. Will auto-publish when the date arrives. |
The admin dashboard shows counts for each state: total posts, published, drafts, and scheduled.
Scheduled Publishing
To schedule a post for future publication:
- Write your post content
- Set Is Published to on
- Set Posted At to the desired future date and time
- Save the post
The CMS scheduler runs every minute and automatically publishes posts when their scheduled date arrives. This requires the cron job to be configured:
* * * * * cd /path-to-project && php artisan schedule:run >> /dev/null 2>&1
Note: Scheduled publishing works synchronously — no queue workers are needed.
Categories
Categories provide hierarchical organization for your blog posts. A post can belong to multiple categories.
Managing Categories:
- Navigate to Blog > Categories in the admin panel
- Categories support parent-child relationships for nested organization
- Each category has a name, slug, and optional parent category
- Categories with posts or child categories cannot be deleted (deletion protection)
- Drag-and-drop reordering is supported
- The system prevents circular references (a category cannot be its own parent or ancestor)
Category hierarchy example:
Technology
├── Web Development
│ ├── Frontend
│ └── Backend
├── Mobile
└── AI & ML
Post Index and Filtering
The posts index page provides:
- Stats bar — Quick counts for total, published, drafts, scheduled, and comments-enabled posts
- Search — Full-text search across post titles and content
- Category filter — Filter posts by category
- Status filter — Filter by published, draft, or scheduled
- Pagination — Server-side pagination for large post collections
- Bulk actions — Select multiple posts for batch operations
Slug History and Redirects
When you change a post's slug, the old slug is preserved in a history table. Visitors accessing the old URL are automatically redirected (301) to the new URL, preventing broken links and preserving SEO value.
Related Posts
When blog.show_related_posts is enabled (default: true), the public post view displays related posts based on shared categories. This encourages visitors to explore more content.
Posts Per Page
The number of posts displayed per page on the public blog listing is controlled by the blog.posts_per_page setting (default: 10). This can be changed in Settings > Blog in the admin panel.
Pages
Static pages are similar to posts but serve as standalone content (About, Contact, Privacy Policy, etc.). Pages have their own URL structure defined by the permalink settings.
Page URL Structure
The page permalink structure is configured in config/site.php:
'permalinks' => [
'page_structure' => '/page/%pagename%/',
],
This generates URLs like /page/about/, /page/privacy-policy/, etc.
Default Pages
During installation, the following default pages are created:
- About — Company/site information
- Contact — Contact form page
- Privacy Policy — Privacy policy template
You can modify these pages and create new ones from the admin panel.
Content Editor
The content editor supports:
- Rich text formatting — Headings, bold, italic, lists, blockquotes
- Image embedding — Insert images from the media library or upload directly
- Code blocks — Syntax-highlighted code snippets
- Links — Internal and external links
- Media embedding — Videos, iframes, and other embedded content
Image Uploads in Editor
Images can be uploaded directly within the editor. The upload system:
- Validates file types (images only)
- Enforces size limits based on
media.max_upload_size - Stores images in the public uploads directory
- Returns the URL for immediate embedding
SEO Fields
Every post and page includes SEO fields for search engine optimization:
| Field | Description |
|---|---|
| Meta Title | Custom title for search results (overrides post title) |
| Meta Description | Description shown in search results |
| Open Graph Image | Custom image for social media sharing |
| Canonical URL | Canonical URL tag for duplicate content prevention |
| No Index | Exclude this page from search engine indexing |
When SEO fields are left empty, the CMS automatically generates them from the post title, excerpt, and featured image.
Content Types
Unfold CMS supports four content types, all managed through a single unified system:
| Type | Description | Where It Appears |
|---|---|---|
| Post | Blog articles with categories, comments, and publishing dates. The primary content type for blogs and news sites. | Blog listing, category archives, search results, RSS feed |
| Page | Static pages like About, Contact, and Privacy Policy. Pages don't belong to categories and aren't included in the blog feed. | Standalone URLs (e.g., /page/about/) |
| Landing Page | Marketing and campaign pages designed for focused conversion. Landing pages use custom layouts without the standard blog sidebar and navigation. | Standalone URLs with custom layouts |
| Block | Content items that power homepage sections — features, testimonials, stats, team members, etc. Blocks are managed through the section builder, not the post editor. | Homepage sections |
Each type shares the same rich editor, SEO fields, and media capabilities. The type determines where and how the content is displayed on the public site.