CompoCore¶
CompoCore a set of basic bundles CompoCymfonyCms. Based on Symfony, Sonata.
- CompoDocs: main documentation.
- CompoCore: contains core libraries, services and bundles.
- CompoEcommerce: contains e-commerce bundles
Demo¶
Requirements¶
As you can see, the admin panel is very empty. This is because no bundle has provided admin functionality for the admin bundle yet. Fortunately, you’ll learn how to do this in the next chapter.
Installation¶
CompoCoreBundle is just a bundle and as such, you can install it at any moment during a project’s lifecycle.
Download the Bundle¶
Open a command console, enter your project directory and execute the following command to download the latest stable version of this bundle:
$ composer require sonata-project/admin-bundle
This command requires you to have Composer installed globally, as explained in the installation chapter of the Composer documentation.
Enable the Bundle¶
Then, enable the bundle and the bundles it relies on by adding the following line in bundles.php file of your project:
<?php
// config/bundles.php
return [
//...
Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true],
Sonata\CoreBundle\SonataCoreBundle::class => ['all' => true],
Sonata\BlockBundle\SonataBlockBundle::class => ['all' => true],
Knp\Bundle\MenuBundle\KnpMenuBundle::class => ['all' => true],
Sonata\AdminBundle\SonataAdminBundle::class => ['all' => true],
Compo\CoreBundle\CompoCoreBundle::class => ['all' => true],
];
Note
If you are not using Symfony Flex, you should enable bundles in your
AppKernel.php
.
// app/AppKernel.php
// ...
class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = [
// ...
// The admin requires some twig functions defined in the security
// bundle, like is_granted. Register this bundle if it wasn't the case
// already.
new Symfony\Bundle\SecurityBundle\SecurityBundle(),
// These are the other bundles the SonataAdminBundle relies on
new Sonata\CoreBundle\SonataCoreBundle(),
new Sonata\BlockBundle\SonataBlockBundle(),
new Knp\Bundle\MenuBundle\KnpMenuBundle(),
// And finally
new Sonata\AdminBundle\SonataAdminBundle(),
new Compo\CoreBundle\CompoCoreBundle(),
];
// ...
}
// ...
}
Note
If a bundle is already registered, you should not register it again.
Preparing your Environment¶
As with all bundles you install, it’s a good practice to clear the cache and install the assets:
$ bin/console cache:clear
$ bin/console assets:install
The Admin Interface¶
You’ve finished the installation process, congratulations. If you fire up the server, you can now visit the admin page on http://localhost:8000/admin
Note
This tutorial assumes you are using the build-in server using the
bin/console server:start
(or server:run
) command.

Architecture¶
As you can see, the admin panel is very empty.
Advantages - Приемущества¶
Позволяет создавать списки приемуществ, для краткой информации о особенностях, сервисах магазина или другой полезной для покупателя информации.
Размещать на страницах сайта, в модальных окнах, уведомлениях и письмах.
Возможность вывода в различных шаблонах.
Можно использовать изображения, иконки.
Отображаются только включённые элементы списка приемуществ.
Возможна сортировка элементов по позиции.
Блоки¶
{{ sonata_block_render({
'type': 'compo_advantages.block.service.advantages',
'settings': {
'id': 123,
'template': 'CompoAdvantagesBundle:Block:advantages.html.twig'
}
}) }}


Шаблоны¶
sonata_block:
blocks:
compo_advantages.block.service.advantages:
cache: sonata.cache.memcached
contexts: [sonata_page_bundle]
templates:
- { name: 'advantages.template.simple', template: 'CompoAdvantagesBundle:Block:advantages_simple.html.twig' }
Articles - Статьи¶
“Статьи” предназначены для управления сайте различными информационными материалами.
Статьи могут содержать произвольный текст, картинки, ссылки, таблицы, видео и другие объекты.
Для более удобной работы со статьями используется встроенный визуальный редактор, который позволяет с легкостью, как и в MS Word, редактировать содержимое статьи.
Статья, имеет следующие поля:
- Включить/Выключить
- Название
- Описание
- Текст
- Кол-во просмотров
- Дата публикации
- Изображение
- Seo настройки
На сайте выводятся список статей с постраничной навигацией.
Отображаются только включённые статьи и с датой публикации меньше текущей даты.
Имеется блок, для отображения последних опубликованных статей.
Панель управления¶
- Список
По умолчанию отсортировано по дате публикации, по убыванию.

- Редактирование

Блоки¶
{{ sonata_block_render({
'type': 'compo_articles.block.service.articles_last',
'settings': {
'limit': 5
'template': 'CompoArticlesBundle:Block:articles_last.html.twig'
}
}) }}


Permalink¶
#TODO
Controller¶
compo_articles_index:
path: /articles/
defaults: { _controller: "CompoArticlesBundle:Articles:index" }
methods: GET

compo_articles_show_by_slug:
path: /articles/{slug}.html
defaults: { _controller: "CompoArticlesBundle:Articles:showBySlug" }
methods: GET

Breadcrumb¶
Генерация хлебных крошек из названия статьи.
Settings¶
Кол-во статей на страницу при постраничной навигации на сайте.
Sitemaps¶
Генерация Sitemaps со списком статей раз в сутки.
Templates¶
- Articles/index.html.twig
- Articles/show.html.twig
- Block/articles_last.html.twig
sonata_block:
blocks:
compo_articles.block.service.articles_last:
cache: sonata.cache.memcached
contexts: [sonata_page_bundle]
templates:
- { name: 'articles.template.articles_last.custom', template: 'CompoArticlesBundle:Block:articles_last_custom.html.twig' }
Seo¶
- URL
- Заголовок
- Title
- Description
- Keywords
Banner - Баннеры¶
Модуль управляет показом на страницах сайта рекламных и информационных блоков (баннеров) любого формата.
Отображаются только включённые элементы списка баннеров.
Возможна сортировка элементов по позиции.
По умолчанию, для отображения баннеров используется JavaScript библитека: http://kenwheeler.github.io/slick/
Панель управления¶
- Список
По умолчанию отсортировано по дате публикации, по убыванию.

- Редактирование

Блоки¶
{{ sonata_block_render({
'type': 'compo_banner.block.service.banner',
'settings': {
'id': 5,
'template': 'CompoBannerBundle:Block:slider.html.twig'
}
}) }}


Шаблоны¶
sonata_block:
blocks:
compo_banner.block.service.banner:
cache: sonata.cache.memcached
contexts: [sonata_page_bundle]
templates:
- { name: 'banner.template.custom', template: 'CompoBannerBundle:Block:custom.html.twig' }
Contacts - Контакты¶
Управление контактной информацией на сайте.
Блоки¶
{{ sonata_block_render({
'type': 'compo_contacts.block.service.contacts_main',
'settings': {
'template': 'CompoContactsBundle:Block:contacts_main.html.twig'
}
}) }}

Core¶
Элемент списка преимуществ, имеет следующие поля:
- Включить/Выключить
- Название
- Описание
- Текст
- Кол-во просмотров
- Дата публикации
- Изображение
- Seo настройки
На сайте выводятся список статей с постраничной навигацией. Отображаются только включённые статьи и с датой публикации меньше текущей даты.
Install¶
- Add CompoArticlesBundle to your AppKernel:
<?php
// app/AppKernel.php
// ...
public function registerBundles()
{
return array(
// ...
new \Compo\ArticlesBundle\CompoArticlesBundle(),
// ...
);
}
- Add compo_articles.admin.articles to sonata_admin:
sonata_admin:
dashboard:
groups:
sonata.admin.group.site_builder:
label: site
label_catalogue: CompoCoreBundle
icon: '<i class="fa fa-puzzle-piece"></i>'
items:
- compo_articles.admin.articles
- Add CompoArticlesBundle routes to your application routing.yml:
# app/config/routing.yml
articles:
resource: '@CompoArticlesBundle/Resources/config/routing.yml'
prefix: /articles
- Update database schema by running command
php app/console doctrine:schema:update --force
Block¶
{{ sonata_block_render({
'type': 'compo_articles.block.service.articles_last',
'settings': {
'limit': 5
}
}) }}

Permalink¶
#TODO
Controller¶
compo_articles_index:
path: /articles/
defaults: { _controller: "CompoArticlesBundle:Articles:index" }
methods: GET
compo_articles_show_by_slug:
path: /articles/{slug}.html
defaults: { _controller: "CompoArticlesBundle:Articles:showBySlug" }
methods: GET
Breadcrumb¶
Генерация хлебных крошек из названия статьи.
Settings¶
Кол-во статей на страницу при постраничной навигации на сайте.
Sitemaps¶
Генерация Sitemaps со списком статей раз в сутки.
Templates¶
- Articles/index.html.twig
- Articles/show.html.twig
- Block/articles_last.html.twig
Seo¶
- URL
- Заголовок
- Title
- Description
- Keywords
Faq - Вопрос-ответ¶
Модуль “Вопрос-ответ” предназначен для оказания консультативной поддержки и гибкого управления вопросами посетителей сайта.
Вопрос-ответ, имеет следующие поля:
- Включить/Выключить
- Название - Вопрос
- Описание
- Текст - Ответ
- Автор вопроса
- E-mail автора вопроса
- Кол-во просмотров
- Дата публикации
- Изображение
- Seo настройки
На сайте выводятся список вопросов с постраничной навигацией.
Отображаются только включённые вопросы и с датой публикации меньше текущей даты.
Имеется блок, для отображения последних опубликованных вопросов.
Панель управления¶
- Список
По умолчанию отсортировано по дате публикации, по убыванию.

- Редактирование

Блоки¶
{{ sonata_block_render({
'type': 'compo_faq.block.service.faq_last',
'settings': {
'limit': 5
'template': 'CompoFaqBundle:Block:faq_last.html.twig'
}
}) }}

Permalink¶
#TODO
Controller¶
compo_faq_index:
path: /faq/
defaults: { _controller: "CompoFaqBundle:Faq:index" }
methods: GET
compo_faq_show_by_slug:
path: /faq/{slug}.html
defaults: { _controller: "CompoFaqBundle:Faq:showBySlug" }
methods: GET
Breadcrumb¶
Генерация хлебных крошек из вопроса.
Settings¶
Кол-во вопросов на страницу при постраничной навигации на сайте.
Sitemaps¶
Генерация Sitemaps со списком вопросов раз в сутки.
Templates¶
- Faq/index.html.twig
- Faq/show.html.twig
- Block/faq_last.html.twig
sonata_block:
blocks:
compo_faq.block.service.faq_last:
cache: sonata.cache.memcached
contexts: [sonata_page_bundle]
templates:
- { name: 'faq.template.faq.custom', template: 'CompoFaqBundle:Block:faq_last_custom.html.twig' }
Seo¶
- URL
- Заголовок
- Title
- Description
- Keywords
Feedback - Обратная связь¶
Модуль позволяет пользователям оставлять сообщения на сайте и отвечать отправителям в административной части модуля.
Поступившим сообщениям, можно присваивать метки.
Блоки¶
{{ sonata_block_render({
'type': 'compo_feedback.block.service.feedback_main',
'settings': {
'template': 'CompoFeedbackBundle:Block:feedback_main.html.twig'
}
}) }}

Import¶
Элемент списка преимуществ, имеет следующие поля:
- Включить/Выключить
- Название
- Описание
- Текст
- Кол-во просмотров
- Дата публикации
- Изображение
- Seo настройки
На сайте выводятся список статей с постраничной навигацией. Отображаются только включённые статьи и с датой публикации меньше текущей даты.
Install¶
- Add CompoArticlesBundle to your AppKernel:
<?php
// app/AppKernel.php
// ...
public function registerBundles()
{
return array(
// ...
new \Compo\ArticlesBundle\CompoArticlesBundle(),
// ...
);
}
- Add compo_articles.admin.articles to sonata_admin:
sonata_admin:
dashboard:
groups:
sonata.admin.group.site_builder:
label: site
label_catalogue: CompoCoreBundle
icon: '<i class="fa fa-puzzle-piece"></i>'
items:
- compo_articles.admin.articles
- Add CompoArticlesBundle routes to your application routing.yml:
# app/config/routing.yml
articles:
resource: '@CompoArticlesBundle/Resources/config/routing.yml'
prefix: /articles
- Update database schema by running command
php app/console doctrine:schema:update --force
Block¶
{{ sonata_block_render({
'type': 'compo_articles.block.service.articles_last',
'settings': {
'limit': 5
}
}) }}

Permalink¶
#TODO
Controller¶
compo_articles_index:
path: /articles/
defaults: { _controller: "CompoArticlesBundle:Articles:index" }
methods: GET
compo_articles_show_by_slug:
path: /articles/{slug}.html
defaults: { _controller: "CompoArticlesBundle:Articles:showBySlug" }
methods: GET
Breadcrumb¶
Генерация хлебных крошек из названия статьи.
Settings¶
Кол-во статей на страницу при постраничной навигации на сайте.
Sitemaps¶
Генерация Sitemaps со списком статей раз в сутки.
Templates¶
- Articles/index.html.twig
- Articles/show.html.twig
- Block/articles_last.html.twig
Seo¶
- URL
- Заголовок
- Title
- Description
- Keywords
News¶
Элемент списка преимуществ, имеет следующие поля:
- Включить/Выключить
- Название
- Описание
- Текст
- Кол-во просмотров
- Дата публикации
- Изображение
- Seo настройки
На сайте выводятся список статей с постраничной навигацией. Отображаются только включённые статьи и с датой публикации меньше текущей даты.
Install¶
- Add CompoArticlesBundle to your AppKernel:
<?php
// app/AppKernel.php
// ...
public function registerBundles()
{
return array(
// ...
new \Compo\ArticlesBundle\CompoArticlesBundle(),
// ...
);
}
- Add compo_articles.admin.articles to sonata_admin:
sonata_admin:
dashboard:
groups:
sonata.admin.group.site_builder:
label: site
label_catalogue: CompoCoreBundle
icon: '<i class="fa fa-puzzle-piece"></i>'
items:
- compo_articles.admin.articles
- Add CompoArticlesBundle routes to your application routing.yml:
# app/config/routing.yml
articles:
resource: '@CompoArticlesBundle/Resources/config/routing.yml'
prefix: /articles
- Update database schema by running command
php app/console doctrine:schema:update --force
Block¶
{{ sonata_block_render({
'type': 'compo_articles.block.service.articles_last',
'settings': {
'limit': 5
}
}) }}

Permalink¶
#TODO
Controller¶
compo_articles_index:
path: /articles/
defaults: { _controller: "CompoArticlesBundle:Articles:index" }
methods: GET
compo_articles_show_by_slug:
path: /articles/{slug}.html
defaults: { _controller: "CompoArticlesBundle:Articles:showBySlug" }
methods: GET
Breadcrumb¶
Генерация хлебных крошек из названия статьи.
Settings¶
Кол-во статей на страницу при постраничной навигации на сайте.
Sitemaps¶
Генерация Sitemaps со списком статей раз в сутки.
Templates¶
- Articles/index.html.twig
- Articles/show.html.twig
- Block/articles_last.html.twig
Seo¶
- URL
- Заголовок
- Title
- Description
- Keywords
Notification¶
Элемент списка преимуществ, имеет следующие поля:
- Включить/Выключить
- Название
- Описание
- Текст
- Кол-во просмотров
- Дата публикации
- Изображение
- Seo настройки
На сайте выводятся список статей с постраничной навигацией. Отображаются только включённые статьи и с датой публикации меньше текущей даты.
Install¶
- Add CompoArticlesBundle to your AppKernel:
<?php
// app/AppKernel.php
// ...
public function registerBundles()
{
return array(
// ...
new \Compo\ArticlesBundle\CompoArticlesBundle(),
// ...
);
}
- Add compo_articles.admin.articles to sonata_admin:
sonata_admin:
dashboard:
groups:
sonata.admin.group.site_builder:
label: site
label_catalogue: CompoCoreBundle
icon: '<i class="fa fa-puzzle-piece"></i>'
items:
- compo_articles.admin.articles
- Add CompoArticlesBundle routes to your application routing.yml:
# app/config/routing.yml
articles:
resource: '@CompoArticlesBundle/Resources/config/routing.yml'
prefix: /articles
- Update database schema by running command
php app/console doctrine:schema:update --force
Block¶
{{ sonata_block_render({
'type': 'compo_articles.block.service.articles_last',
'settings': {
'limit': 5
}
}) }}

Permalink¶
#TODO
Controller¶
compo_articles_index:
path: /articles/
defaults: { _controller: "CompoArticlesBundle:Articles:index" }
methods: GET
compo_articles_show_by_slug:
path: /articles/{slug}.html
defaults: { _controller: "CompoArticlesBundle:Articles:showBySlug" }
methods: GET
Breadcrumb¶
Генерация хлебных крошек из названия статьи.
Settings¶
Кол-во статей на страницу при постраничной навигации на сайте.
Sitemaps¶
Генерация Sitemaps со списком статей раз в сутки.
Templates¶
- Articles/index.html.twig
- Articles/show.html.twig
- Block/articles_last.html.twig
Seo¶
- URL
- Заголовок
- Title
- Description
- Keywords
PageCode¶
Элемент списка преимуществ, имеет следующие поля:
- Включить/Выключить
- Название
- Описание
- Текст
- Кол-во просмотров
- Дата публикации
- Изображение
- Seo настройки
На сайте выводятся список статей с постраничной навигацией. Отображаются только включённые статьи и с датой публикации меньше текущей даты.
Install¶
- Add CompoArticlesBundle to your AppKernel:
<?php
// app/AppKernel.php
// ...
public function registerBundles()
{
return array(
// ...
new \Compo\ArticlesBundle\CompoArticlesBundle(),
// ...
);
}
- Add compo_articles.admin.articles to sonata_admin:
sonata_admin:
dashboard:
groups:
sonata.admin.group.site_builder:
label: site
label_catalogue: CompoCoreBundle
icon: '<i class="fa fa-puzzle-piece"></i>'
items:
- compo_articles.admin.articles
- Add CompoArticlesBundle routes to your application routing.yml:
# app/config/routing.yml
articles:
resource: '@CompoArticlesBundle/Resources/config/routing.yml'
prefix: /articles
- Update database schema by running command
php app/console doctrine:schema:update --force
Block¶
{{ sonata_block_render({
'type': 'compo_articles.block.service.articles_last',
'settings': {
'limit': 5
}
}) }}

Permalink¶
#TODO
Controller¶
compo_articles_index:
path: /articles/
defaults: { _controller: "CompoArticlesBundle:Articles:index" }
methods: GET
compo_articles_show_by_slug:
path: /articles/{slug}.html
defaults: { _controller: "CompoArticlesBundle:Articles:showBySlug" }
methods: GET
Breadcrumb¶
Генерация хлебных крошек из названия статьи.
Settings¶
Кол-во статей на страницу при постраничной навигации на сайте.
Sitemaps¶
Генерация Sitemaps со списком статей раз в сутки.
Templates¶
- Articles/index.html.twig
- Articles/show.html.twig
- Block/articles_last.html.twig
Seo¶
- URL
- Заголовок
- Title
- Description
- Keywords
Redirect¶
Элемент списка преимуществ, имеет следующие поля:
- Включить/Выключить
- Название
- Описание
- Текст
- Кол-во просмотров
- Дата публикации
- Изображение
- Seo настройки
На сайте выводятся список статей с постраничной навигацией. Отображаются только включённые статьи и с датой публикации меньше текущей даты.
Install¶
- Add CompoArticlesBundle to your AppKernel:
<?php
// app/AppKernel.php
// ...
public function registerBundles()
{
return array(
// ...
new \Compo\ArticlesBundle\CompoArticlesBundle(),
// ...
);
}
- Add compo_articles.admin.articles to sonata_admin:
sonata_admin:
dashboard:
groups:
sonata.admin.group.site_builder:
label: site
label_catalogue: CompoCoreBundle
icon: '<i class="fa fa-puzzle-piece"></i>'
items:
- compo_articles.admin.articles
- Add CompoArticlesBundle routes to your application routing.yml:
# app/config/routing.yml
articles:
resource: '@CompoArticlesBundle/Resources/config/routing.yml'
prefix: /articles
- Update database schema by running command
php app/console doctrine:schema:update --force
Block¶
{{ sonata_block_render({
'type': 'compo_articles.block.service.articles_last',
'settings': {
'limit': 5
}
}) }}

Permalink¶
#TODO
Controller¶
compo_articles_index:
path: /articles/
defaults: { _controller: "CompoArticlesBundle:Articles:index" }
methods: GET
compo_articles_show_by_slug:
path: /articles/{slug}.html
defaults: { _controller: "CompoArticlesBundle:Articles:showBySlug" }
methods: GET
Breadcrumb¶
Генерация хлебных крошек из названия статьи.
Settings¶
Кол-во статей на страницу при постраничной навигации на сайте.
Sitemaps¶
Генерация Sitemaps со списком статей раз в сутки.
Templates¶
- Articles/index.html.twig
- Articles/show.html.twig
- Block/articles_last.html.twig
Seo¶
- URL
- Заголовок
- Title
- Description
- Keywords
Seo¶
Элемент списка преимуществ, имеет следующие поля:
- Включить/Выключить
- Название
- Описание
- Текст
- Кол-во просмотров
- Дата публикации
- Изображение
- Seo настройки
На сайте выводятся список статей с постраничной навигацией. Отображаются только включённые статьи и с датой публикации меньше текущей даты.
Install¶
- Add CompoArticlesBundle to your AppKernel:
<?php
// app/AppKernel.php
// ...
public function registerBundles()
{
return array(
// ...
new \Compo\ArticlesBundle\CompoArticlesBundle(),
// ...
);
}
- Add compo_articles.admin.articles to sonata_admin:
sonata_admin:
dashboard:
groups:
sonata.admin.group.site_builder:
label: site
label_catalogue: CompoCoreBundle
icon: '<i class="fa fa-puzzle-piece"></i>'
items:
- compo_articles.admin.articles
- Add CompoArticlesBundle routes to your application routing.yml:
# app/config/routing.yml
articles:
resource: '@CompoArticlesBundle/Resources/config/routing.yml'
prefix: /articles
- Update database schema by running command
php app/console doctrine:schema:update --force
Block¶
{{ sonata_block_render({
'type': 'compo_articles.block.service.articles_last',
'settings': {
'limit': 5
}
}) }}

Permalink¶
#TODO
Controller¶
compo_articles_index:
path: /articles/
defaults: { _controller: "CompoArticlesBundle:Articles:index" }
methods: GET
compo_articles_show_by_slug:
path: /articles/{slug}.html
defaults: { _controller: "CompoArticlesBundle:Articles:showBySlug" }
methods: GET
Breadcrumb¶
Генерация хлебных крошек из названия статьи.
Settings¶
Кол-во статей на страницу при постраничной навигации на сайте.
Sitemaps¶
Генерация Sitemaps со списком статей раз в сутки.
Templates¶
- Articles/index.html.twig
- Articles/show.html.twig
- Block/articles_last.html.twig
Seo¶
- URL
- Заголовок
- Title
- Description
- Keywords
Social¶
Элемент списка преимуществ, имеет следующие поля:
На сайте выводятся список статей с постраничной навигацией. Отображаются только включённые статьи и с датой публикации меньше текущей даты.
Install¶
php app/console doctrine:schema:update --force
Admin¶
По умолчанию отсортировано по дате публикации, по убыванию.
Block¶
Permalink¶
#TODO
Controller¶
AdminNavBar¶
При просмотре на сайте списка статей или статьи, доступна панель администратора, для быстрого доступа к редактированию.
Breadcrumb¶
Генерация хлебных крошек из названия статьи.
Settings¶
Кол-во статей на страницу при постраничной навигации на сайте.
Sitemaps¶
Генерация Sitemaps со списком статей раз в сутки.
Templates¶
Seo¶