CMS Bundle for Symfony2 / Symfony3
Status
Done
- English Translation
- German Translation
- Show menus in Twig-Templates
- Menu-, MenuItem-, Page-Entity
- Sonata Admins
- Make menu templates more dynamic
Open
- Multi-Language DB Content
- Stuff... :)
Installation
``` bash
$ composer require --dev devtronic/cms-bundle, (*1)
```php
<?php
use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Config\Loader\LoaderInterface;
class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = array(
// ...
new Ivory\CKEditorBundle\IvoryCKEditorBundle(),
new Devtronic\CmsBundle\CmsBundle(),
);
// ...
return $bundles;
}
// ...
}
Symfony >= 3.x
``` bash
$ php bin/console assets:install --symlink --relative
$ php bin/console doctrine:schema:update --force
$ php bin/console cache:clear, (*2)
Symfony <= 2.8.x
``` bash
$ php app/console assets:install --symlink --relative
$ php app/console doctrine:schema:update --force
$ php app/console cache:clear
Configuration
# app/config/routing.yml
devtronic_cms_bundle:
resource: "@CmsBundle/Controller/"
type: annotation
prefix: /cms # OR WHAT EVER YOU WANT (links goes example.com/cms/{page-slug})
Usage
{# anything.html.twig #}
{{ cms_menu("MENU SLUG GOES HERE") }}
{# or with a custom Menu Template #}
{{ cms_menu("MENU SLUG GOES HERE", "AnyBundle:Path:menu_template.html.twig") }}
Templates
{# app/Resources/CmsBundle/views/menu.html.twig #}
{# Types: 0: CMS Page, 1: Hyperlink, 2: Route #}
{# Top-Level Menu Entries #}
{% if menu.items is defined %}
{% for item in menu.items %}
{% if item.parentItem is null %}
{% if item.subItems | length %}
-
{{ item.title }}
{% include 'CmsBundle::menu.html.twig' with {'menu': item} %}
{% else %}
-
{% if item.type == 0 %}
{{ item.title }}
{% elseif item.type == 2 %}
{{ item.title }}
{% else %}
{{ item.title }}
{% endif %}
{% endif %}
{% endif %}
{% endfor %}
{# Sub-Entries #}
{% elseif menu.subItems is defined %}
{% endif %}
Page Template
{# app/Resources/CmsBundle/views/Page/page.html.twig #}
{% extends "::base.html.twig" %}
{% block title %}{{ page.title }}{% endblock %}
{% block body %}
{{ page.title }}
{{ page.content | raw }}
{% endblock %}
Index Template
{# app/Resources/CmsBundle/views/Page/index.html.twig #}
{% extends "::base.html.twig" %}
{% block title %}{{ page.title }}{% endblock %}
{% block body %}
{{ page.title }}
{{ page.content | raw }}
{% endblock %}
FAQ
How can I link to the Frontpage?
As menuentry: Internal route to cms_index
As Link in template: <a href="{{ path('cms_index') }}">Home</a>
, (*3)
How to contribute?
Translate the Bundle (send messages.LOCALE.xlf
and your user-/name to admin@developer-heaven.de, (*4)
Translation status