You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A CMS solution for Laravel applications built on [Filament Flexible Content Blocks](https://github.com/statikbe/laravel-filament-flexible-content-blocks).
9
-
This package extends the flexible content block system, into a full page management solution with routing, SEO, menus, and multilingual support.
8
+
Filament Flexible Content Block Pages is a CMS solution for Laravel applications built on [Filament Flexible Content Blocks](https://github.com/statikbe/laravel-filament-flexible-content-blocks).
9
+
This package extends the flexible content block system, into a full page management solution with routing, SEO, menus, tags and multilingual support.
10
10
11
-
Designed for developers who need a content management system that integrates seamlessly with existing Laravel Filament application,
11
+
Designed for developers who need a content management system that provides a lot of flexibility to fit requirements,
12
12
while providing content editors with an intuitive interface for managing pages and content.
13
13
14
14
## Key Features
15
15
16
-
-**Flexible page management** - Create pages with hero images, flexible content blocks, SEO fields, and publication controls
17
-
-**Hierarchical menu builder** - Drag-and-drop interface for creating navigation menus
18
-
-**Multilingual support** - Full localization with automatic route generation for multiple languages
19
-
-**SEO tools** - Automatic sitemap generation, meta tag management, SEO tag pages, and URL redirect handling when slugs change
20
-
-**Ready-to-use admin interface** - Pre-configured Filament panel with all resources and management tools
If you want translated content and routes, go through the following steps:
175
174
176
-
1. Configure the `supported_locales` in the Filament Flexible Content Blocks configuration or in a service provider
175
+
1. Configure the `supported_locales` in [the Filament Flexible Content Blocks configuration or in a service provider](https://github.com/statikbe/laravel-filament-flexible-content-blocks/blob/main/documentation/configuration.md#supported-locales)
177
176
2. Configure the `route_helper` in [`filament-flexible-content-block-pages.php`](./config/filament-flexible-content-block-pages.php)
178
177
179
178
### Routes
@@ -199,6 +198,10 @@ The package contains a pre-configured panel. You can register the panel in the `
199
198
200
199
If you want you can build your own panel from the provided resources.
201
200
201
+
### Redirects
202
+
203
+
Add the redirect middleware, see [Redirect configuration](#redirect-middleware-configuration)
204
+
202
205
### Schedule
203
206
204
207
We suggest to add media library maintenance tasks to your schedule in `routes/console.php`:
@@ -261,7 +264,8 @@ In case you need deeper nesting, you can add extra routes.
261
264
262
265
### Publication Controls
263
266
264
-
Control page visibility with by setting publishing begin and end dates. So you can achieve the following statuses:
267
+
Control page visibility with by setting publishing begin and end dates.
268
+
So you can achieve the following statuses by setting these dates in the past or future:
265
269
266
270
-**Draft** - Page exists but not visible to public users
267
271
-**Published** - Page is live and accessible via URL
@@ -289,21 +293,6 @@ For customisation, publish the views and if needed extend the [LanguageSwitch co
289
293
290
294
### Frontend Integration
291
295
292
-
Generate URLs for pages in your Blade templates:
293
-
294
-
```php
295
-
use Statikbe\FilamentFlexibleContentBlockPages\Facades\FilamentFlexibleContentBlockPages;
You can best publish the views and customise the styling and HTML structure to your project requirements.
308
297
309
298
For detailed frontend templating, theme customization, and available Blade components, see the [frontend documentation](documentation/frontend.md).
@@ -312,7 +301,8 @@ For advanced page customization, extending models, and custom workflows, see the
312
301
313
302
## Menu builder
314
303
315
-
The package includes a powerful hierarchical menu builder with a drag-and-drop interface for creating navigation menus. Menus support multiple types of links and can be easily styled with custom templates.
304
+
The package includes a powerful hierarchical menu builder with a drag-and-drop interface, using [solution-forest/filament-tree](https://github.com/solutionforest/filament-tree).
305
+
Menus support multiple types of links and can be easily styled with custom templates.
316
306
317
307
### Features
318
308
@@ -326,7 +316,8 @@ The package includes a powerful hierarchical menu builder with a drag-and-drop i
326
316
327
317
### Adding a menu to Blade
328
318
329
-
The package includes a `default` built-in menu style which is developed in a generic way so that you can tweak its styling by passing some attributes without having to publish the corresponding blade templates.
319
+
The package includes a `default` built-in menu style which is developed in a generic way so that you can tweak its styling,
320
+
by passing some attributes without having to publish the corresponding blade templates.
330
321
331
322
Example usage to have a horizontal menu using tailwind:
332
323
```blade
@@ -373,7 +364,7 @@ class Product extends Model implements HasMenuLabel
373
364
}
374
365
```
375
366
376
-
If you are using the Flexible Content Blocks title trait in your model, you can implement `HasMenuLabel`
367
+
**Tip:**If you are using the Flexible Content Blocks title trait in your model, you can implement `HasMenuLabel`
377
368
easily with [`HasTitleMenuLabelTrait`](src/Models/Concerns/HasTitleMenuLabelTrait.php).
378
369
379
370
### Menu seeding
@@ -385,7 +376,12 @@ For creating custom menu styles and advanced menu customization, see the [menu c
385
376
386
377
## Settings
387
378
388
-
All settings are stored in one table in one record. The reason is to be able to add spatie medialibrary media as a config value.
379
+
All settings are stored in one table in one record.
380
+
The reason is to be able to add spatie medialibrary media as a config value.
381
+
By using one record and a new media collection for each media setting, you can more easily add media.
382
+
Furthermore, by manually adding a specific column for a setting, the data types are also correct and castable.
383
+
In contrast, if we would use a key-value or JSON-based solution, not all our requirements could be served.
384
+
389
385
Each setting is cached and refreshed when the settings change.
@@ -463,12 +462,12 @@ For advanced routing customization, custom route helpers, and controller extensi
463
462
## Redirects
464
463
465
464
The package includes automatic redirect management: when the slug of a page changes, a redirect from the old page
466
-
to the new page is added. These redirects are stored in the database and are managable with the Filament resource,
467
-
so you can add your own redirects. For example, you can add handy redirects for marketing campaigns.
465
+
to the new page is added. These redirects are stored in the database and are manageable with the Filament resource,
466
+
so you can add your own redirects. For example, you can add handy redirects for marketing campaigns or quick links.
468
467
469
468
We have integrated [spatie/laravel-missing-page-redirector](https://github.com/spatie/laravel-missing-page-redirector), so you can easily configure other redirects in the spatie packages config.
470
469
471
-
### Configuration
470
+
### Redirect middleware configuration
472
471
473
472
1. Prepend/append the [RedirectsMissingPages.php](src/Http/Middleware/RedirectsMissingPages.php) middleware to your global middleware stack:
474
473
@@ -526,7 +525,77 @@ see the [sitemap customisation documentation](documentation/extending-and-custom
526
525
527
526
## Tags and SEO Tag Pages
528
527
529
-
TODO
528
+
The package provides a comprehensive tagging system with SEO-optimized tag pages for content organization and search engine visibility.
529
+
We make use of [Laravel Tags](https://github.com/spatie/laravel-tags) so all features of this spatie package are available.
530
+
While spatie uses a string for tag type, we have implemented a TagType model with extra SEO and styling functionality.
531
+
532
+
### Features
533
+
534
+
-**Hierarchical tag system** - Tags organized by customizable tag types (categories, topics, etc.)
535
+
-**Multilingual support** - Translatable tag names, slugs, and SEO descriptions
536
+
-**SEO tag pages** - Automatically generated landing pages with all content of a tag for search engine optimization
537
+
-**Visual organization** - Custom colors and icons for tag types
538
+
-**Flexible routing** - Customizable URL patterns for tag pages (default: `/tag/{slug}`)
539
+
540
+
### Tag Management
541
+
542
+
Create and manage tags through the Filament admin interface:
543
+
544
+
-**Tag Types** - Define categories like "Topics", "Industries", or "Technologies"
545
+
-**Tags** - Individual tags within each type with multilingual support
546
+
-**SEO Settings** - Meta descriptions and tags can be enabled to have an SEO tag page
547
+
-**Visual Identity** - Colors and icons for better organization
548
+
549
+
TODO screenshot
550
+
551
+
### Tag Types
552
+
553
+
Tag types provide structure and organization. You can add more specific tag types, e.g. for news articles only.
554
+
555
+
```php
556
+
// Built-in tag types
557
+
TagType::TYPE_DEFAULT = 'default'; // General purpose tags
558
+
TagType::TYPE_SEO = 'seo'; // SEO-focused tags with landing pages
559
+
```
560
+
561
+
**Key features:**
562
+
-**Default type** - One tag type can be marked as default for new tags
563
+
-**SEO pages** - Enable `has_seo_pages` to generate landing pages for tags of this type and an SEO description can be filled in that will be shown on the tag page for more context.
564
+
-**Visual styling** - Custom colors and SVG icons for admin interface
565
+
-**Translatable names** - Support for multiple languages
566
+
567
+
### SEO Tag Pages
568
+
569
+
When enabled (`has_seo_pages = true` on tag type), the package automatically generates SEO-optimized landing pages.
570
+
The HTML of the tag pages is focused on the data structure for search engines and is not styled.
571
+
If you also want to use this for other purposes, you can publish the views and style it.
572
+
573
+
**Content Inclusion:**
574
+
SEO tag pages display content from models configured in [`tag_pages.models.enabled`](documentation/configuration.md#tag-pages-configuration):
\App\Models\BlogPost::class, // Your custom models
583
+
],
584
+
],
585
+
],
586
+
```
587
+
588
+
**SEO Benefits:**
589
+
- Automatic meta tags and descriptions
590
+
- Multilingual hreflang tags
591
+
- Content grouping by type or chronologically
592
+
- Pagination for large content sets
593
+
- Search engine friendly HTML structure
594
+
- Tag pages are added to the sitemap
595
+
596
+
For advanced tag page customization, extending models, custom controllers, and template customization, see the [SEO tag pages documentation](documentation/extending-and-customisation.md#seo-tag-pages).
597
+
598
+
For tag configuration options, URL patterns, and content inclusion settings, see the [configuration documentation](documentation/configuration.md#tags-configuration).
530
599
531
600
## Authorisation
532
601
@@ -559,7 +628,6 @@ release:
559
628
- policies:
560
629
- note: undeletable pages
561
630
- undeletable page toggle only for permission holder
Copy file name to clipboardExpand all lines: documentation/seeders.md
+2-1Lines changed: 2 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,7 @@
1
1
# Menu Seeders
2
2
3
-
This package provides a powerful and developer-friendly way to seed menus and menu items through the `MenuSeeder` abstract class. This base class offers typed methods with sensible defaults, making it easy to create complex menu structures programmatically.
3
+
This package provides a powerful and developer-friendly way to seed menus and menu items through the `MenuSeeder` abstract class.
4
+
This base class offers typed methods with sensible defaults, making it easy to create complex menu structures programmatically.
0 commit comments