To install and use the package in your laravel project, follow the steps below:
-
In your project's
composer.jsonadd the following code:"repositories": [ { "type": "vcs", "url": "https://github.com/clarity-tech/cms-base" } ]
-
Require the package via Composer:
composer require clarity-tech/cms
-
Run the migrations:
php artisan migrate
If you wish to publish config, migrations etc.
-
Publish the package configuration:
php artisan vendor:publish --provider="ClarityTech\Cms\CmsServiceProvider" --tag="cms.config"
-
Publish the package migrations:
php artisan vendor:publish --provider="ClarityTech\Cms\CmsServiceProvider" --tag="cms.migrations"
If you wish to use filament admin panel, add the following codes in your project's admin panel provider:
use ClarityTech\Cms\Filament\Admin\Resources\ContentResource;
use ClarityTech\Cms\Filament\Admin\Resources\TaxonomyResource;
use ClarityTech\Cms\Filament\Admin\Resources\CommentResource;
// $panel
->resources([
ContentResource::class,
TaxonomyResource::class,
CommentResource::class
])You can change the cms.php file in config directory:
middlewares: Add middlewares as per your need.features: Enable or disable features - API and Filament admin panel.routes: Customize route path by modifying prefix.models: You can have your own models and use those.actions: You can add your own actions as well.taxonomy_types: You decide what taxonomy types you want to have.
To create a new piece of content programmatically:
use ClarityTech\Cms\Contracts\CreatesContents;
use ClarityTech\Cms\DataTransferObjects\ContentData;
$data = new ContentData([
'title' => 'Sample Title',
'slug' => 'sample-slug',
'excerpt' => 'Sample Excerpt',
'content' => 'Sample Content',
'meta_tags' => ['tag1', 'tag2'],
'custom_properties' => ['key' => 'value'],
'order_column' => 1,
'type' => 'article',
'layout' => 'single',
'created_by' => 1,
'updated_by' => null,
'deleted_by' => null,
'published_at' => now(),
]);
app(CreatesContents::class)->create($data);use ClarityTech\Cms\Contracts\UpdatesContents;
use ClarityTech\Cms\DataTransferObjects\ContentData;
$data = new ContentData([
'title' => 'Sample Title Updated',
'slug' => 'sample-slug-updated',
'excerpt' => 'Sample Excerpt',
'content' => 'Sample Content',
'meta_tags' => ['tag1', 'tag2'],
'custom_properties' => ['key' => 'value'],
'order_column' => 1,
'type' => 'article',
'layout' => 'single',
'updated_by' => 1,
'deleted_by' => null,
'published_at' => now(),
]);
app(UpdatesContents::class)->update($id, $data);The package provides RESTful API endpoint for getting contents.
-
List all contents
GET /api/cms/contents -
List specific content
GET /api/cms/contents/{slug}
The package provides RESTful API endpoints for comments.
-
Create a new comment
POST /api/cms/contents/sample-title/commentsBody:
{ "user_id": 1, "comment": "This is a test comment", "commentable_type": "ClarityTech\\Cms\\Models\\Content", "commentable_id": 1, "ip": "192.168.1.1", "is_approved": 1 }Success response:
201 Created
{ "user_id": 1, "comment": "This is a test comment", "commentable_type": "ClarityTech\\Cms\\Models\\Content", "commentable_id": 1, "ip": "192.168.1.1", "is_approved": true, "updated_at": "2024-08-22T12:44:03.000000Z", "created_at": "2024-08-22T12:44:03.000000Z", "id": 3 } -
List all comments for a specific content
GET /api/cms/contents/{slug}/commentsSuccess response:
200 Ok
{ "data": [ { "id": 1, "user_id": 1, "ip": null, "is_approved": true, "comment": "This is a test comment", "created_at": "2024-08-20T18:31:57.000000Z", "updated_at": "2024-08-21T20:14:04.000000Z", "deleted_at": null }, { "id": 2, "user_id": 1, "ip": null, "is_approved": false, "comment": "Nice comment", "created_at": "2024-08-20T18:31:57.000000Z", "updated_at": "2024-08-21T20:20:03.000000Z", "deleted_at": null } ] } -
Get a specific comment
GET /api/cms/comments/{id}Success response:
200 Ok
{ "data": { "id": 1, "user_id": 1, "ip": null, "is_approved": true, "comment": "This is a test comment", "created_at": "2024-08-20T18:31:57.000000Z", "updated_at": "2024-08-21T20:14:04.000000Z", "deleted_at": null } } -
Update a specific comment
PUT /api/cms/comments/{slug}Body:
{ "comment": "Updated comment" }Success response:
202 Accepted
{ "id": 1, "user_id": 1, "ip": null, "is_approved": true, "comment": "Updated comment", "commentable_type": "ClarityTech\\Cms\\Models\\Content", "commentable_id": 1, "created_at": "2024-08-20T18:31:57.000000Z", "updated_at": "2024-08-22T13:31:51.000000Z", "deleted_at": null } -
Delete a specific comment
DELETE /api/cms/comments/{slug}Success response:
204 No Content
If you have Filament installed, you can access and manage your contents, taxonomies etc through the Filament interface.
Just go to /admin.
Please see the changelog for more information on what has changed recently.
composer testPlease see contributing.md for details and a todolist.
If you discover any security related issues, please email [email protected] instead of using the issue tracker.
MIT. Please see the license file for more information.