Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/agence-adeliom/easy-page-bundle
A simple lightweight CMS bundle for Symfony
https://github.com/agence-adeliom/easy-page-bundle
cms easyadmin symfony
Last synced: 2 months ago
JSON representation
A simple lightweight CMS bundle for Symfony
- Host: GitHub
- URL: https://github.com/agence-adeliom/easy-page-bundle
- Owner: agence-adeliom
- License: mit
- Created: 2021-08-23T12:08:42.000Z (over 3 years ago)
- Default Branch: 2.x
- Last Pushed: 2024-04-30T09:02:03.000Z (8 months ago)
- Last Synced: 2024-05-21T02:28:05.849Z (7 months ago)
- Topics: cms, easyadmin, symfony
- Language: PHP
- Homepage:
- Size: 124 KB
- Stars: 10
- Watchers: 1
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
README
![Adeliom](https://adeliom.com/public/uploads/2017/09/Adeliom_logo.png)
[![Quality gate](https://sonarcloud.io/api/project_badges/quality_gate?project=agence-adeliom_easy-page-bundle)](https://sonarcloud.io/dashboard?id=agence-adeliom_easy-page-bundle)# Easy Page Bundle
A basic CMS system for Easyadmin.
## Installation with Symfony Flex
Add our recipes endpoint
```json
{
"extra": {
"symfony": {
"endpoint": [
"https://api.github.com/repos/agence-adeliom/symfony-recipes/contents/index.json?ref=flex/main",
...
"flex://defaults"
],
"allow-contrib": true
}
}
}
```Install with composer
```bash
composer require agence-adeliom/easy-page-bundle
```## Versions
| Repository Branch | Version | Symfony Compatibility | PHP Compatibility | Status |
|-------------------|---------|-----------------------|-------------------|----------------------------|
| `2.x` | `2.x` | `5.4`, and `6.x` | `8.0.2` or higher | New features and bug fixes |
| `1.x` | `1.x` | `4.4`, and `5.x` | `7.2.5` or higher | No longer maintained |### Setup database
#### Using doctrine migrations
```bash
php bin/console doctrine:migration:diff
php bin/console doctrine:migration:migrate
```#### Without
```bash
php bin/console doctrine:schema:update --force
```## Documentation
### Manage pages in your Easyadmin dashboard
Go to your dashboard controller, example : `src/Controller/Admin/DashboardController.php`
```php
generateUrl('easy_page_index', ['slugs' => $page->getTree()]);
// $url === /welcome/our-company/team
```### Homepage
The homepage is always the first `Page` object with its `template` attribute set to `homepage`. Be sure to have only one element defined as homepage, or you may have unexpected results.
### Design
You have some options to customize the design of your simple CMS.
#### Using different layouts
Obviously, the default layout has no style.
To change the layout, simply change the OrbitaleCmsBundle configuration to add your own layout:
```yaml
# config/packages/easy_page.yml
easy_page:
layouts:
front: { resource: @App/layout.html.twig } # The Twig path to your layout
```Without overriding anything, you can easily change the layout for your CMS!
Take a look at the [default layout](src/Resources/views/front/pages/default.html.twig) to see which Twig blocks are mandatory to render correctly the pages.
#### Advanced layout configuration
The basic configuration for a layout is to specify a template to extend.
But if you look at the Configuration reference you will see that there are many other parameters you can use to define a layout:
Prototype of a layout configuration:
* **name** (attribute used as key for the layouts list):
The name of your layout. Simply for readability issues, and maybe to get it
directly from the config (if you need it).
* **resource**:
The Twig template used to render all the pages (see the [above](#using-different-layouts) section)
* **assets_css** and *assets_js*:
Any asset to send to the Twig `asset()` function. The CSS is rendered in the
`stylesheets` block, and js in the `javascripts` block.
* **host**:
The exact domain name you want the layout to match with.
* **pattern**:
The regexp of the path you want to match with for this layout.
It's nice if you want to use a different layout for pages. For
example, you can specify a layout for the `^/page/` pattern, and another for
`^/about-us/`.
If you specify a very deep pattern, you can even change the layout for a single
page!Take another look on the [config reference](#configuration-reference) if you
need to get the prototype defaults.:warning: **Warning!** The **first matching** layout will be used, as well as
routing would do, so be sure to configure them in the right order!
Empty values won't be taken in account.## Configuration reference
```yml
# config/packages/easy_page.yml
easy_page:
page_class: ~ # Required, must extend Easy Page class
page_repository: Adeliom\EasyPageBundle\Repository\PageRepository
page_controller: Adeliom\EasyPageBundle\Controller\PageController
layouts:
# Prototype
name:
name: ~ # Optional, it's automatically set from the key if it's a string
resource: ~ # Required, must be a valid twig template
assets_css: [] # Injected with the `asset()` twig function
assets_js: [] # Injected with the `asset()` twig function
assets_webpack: [] # Injected with the `encore_entry_link_tags()` and `encore_entry_script_tags()` twig functions
pattern: ~ # Regexp
host: ~ # Exact value
cache:
enabled: false
ttl: 300
```## License
[MIT](https://choosealicense.com/licenses/mit/)
## Authors
- [@arnaud-ritti](https://github.com/arnaud-ritti)
## Thanks to
[Orbitale/CmsBundle](https://github.com/Orbitale/CmsBundle)