liberusoftware / module-cms-posts
Posts module for Liberu CMS: blog posts with taxonomy (categories & tags), workflow, versioning, and featured media.
Package info
github.com/liberusoftware/module-cms-posts
Type:liberu-module
pkg:composer/liberusoftware/module-cms-posts
Requires
- php: ^8.5
- filament/filament: ^5.11.0
- illuminate/contracts: ^13.38.0
- illuminate/database: ^13.38.0
- illuminate/support: ^13.38.0
- liberusoftware/module-cms-content: ^0.1
- liberusoftware/module-cms-contracts: ^0.1
- liberusoftware/module-cms-core: ^0.1
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-11-14 19:55:28 UTC
README
Repository
Source, issues, and release history: https://github.com/liberusoftware/module-cms-posts
Composer package: https://packagist.org/packages/liberusoftware/module-cms-posts
Blog posts with taxonomy for Liberu CMS, built on the content foundation.
Depends on the Media module (descriptor) and the cms-content foundation (workflow + versioning). Featured images resolve through the media contract.
Models
Post—HasWorkflow+HasRevisions, implementsPublishableInterface. Auto-unique slug (from title) and auto excerpt (from content) on save, ais_featuredflag, anauthor_id, andfeaturedMedia()via the media contract.Category/Tag— slugged taxonomy, many-to-many withPost.
$post = Post::create(['title' => 'Hello World', 'content' => '<p>…</p>']); $post->slug; // "hello-world" $post->excerpt; // first 40 words, tags stripped $post->categories()->attach($id); $post->tags()->attach($tagId); $post->schedule(now()->addWeek()); // scheduled publish
Repository
PostRepositoryInterface (module-internal): find, findBySlug, published,
featured, byCategory(slug), byTag(slug) — all scoped to live posts.
Config (config/cms-posts.php)
| Key | Default | Purpose |
|---|---|---|
excerpt_words |
40 |
Word count for auto-generated excerpts. |
Events
- Emits: via the content foundation —
ContentStateChanged,ContentPublished. - Listens: none.
Notes
- Owns
cms_posts,cms_categories,cms_tags, and the two pivots. The legacy hostCategory/Tag/Collectionremain during the strangler migration — seedocs/OPEN-QUESTIONS.md. author_idis a plain column; resolving it to a user awaits a user-directory contract (the access contract covers authorization, not identity lookup).