Разработка сайта на CMS Concrete CMS

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Разработка сайта на CMS Concrete CMS
Средняя
~1-2 недели
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    874
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    851

Разработка сайта на CMS Concrete CMS

Concrete CMS (до 2021 года — concrete5) — CMS с встроенным инлайн-редактором: контент редактируется прямо на странице без отдельного бэкенда. Архитектура основана на PHP с компонентами Symfony и Doctrine ORM. Блочная система позволяет формировать страницы из готовых элементов без знания кода.

Сильные стороны для разработки

Concrete CMS имеет смысл выбирать, когда:

  • заказчик или его команда сами правят контент без технических знаний
  • нужна гибкая система страниц с разными макетами
  • требуется иерархия сайтов с разными правами для разных разделов
  • проект предполагает сложную систему разрешений на уровне страниц

Архитектура сайта

Concrete CMS организует контент в дерево страниц. Каждая страница имеет тип страницы (Page Type) с набором областей (Areas), в каждую область добавляются блоки (Blocks).

Сайт
├── Главная (page type: home)
│   ├── Area: Hero
│   │   └── Block: Image Slider
│   ├── Area: Content
│   │   ├── Block: HTML
│   │   └── Block: Feature List (кастомный)
│   └── Area: Sidebar
│       └── Block: Form
├── Услуги (page type: service-list)
│   ├── Разработка (page type: service-detail)
│   └── Дизайн (page type: service-detail)
└── Контакты (page type: basic-page)

Page Types и шаблоны

Page Type создаётся в /application/single_pages/ или через полный тип с шаблоном в теме:

// application/single_pages/services.php
// или packages/my-theme/themes/my-theme/page_types/service_detail.php

defined('C5_EXECUTE') or die('Access Denied.');
$view = View::getInstance();
?>
<div class="container">
    <h1><?= $c->getCollectionName() ?></h1>
    <?php
    $a = new Area('Main Content');
    $a->display($c);
    ?>
    <aside>
        <?php
        $sidebar = new Area('Sidebar');
        $sidebar->display($c);
        ?>
    </aside>
</div>

Атрибуты страниц

Атрибуты (Attributes) — метаданные страницы, не привязанные к блокам:

// Получить атрибут страницы
$metaDesc = $c->getAttribute('meta_description');
$heroImage = $c->getAttribute('hero_image');

// В шаблоне темы
<meta name="description" content="<?= h($metaDesc) ?>">
<?php if ($heroImage): ?>
<div class="hero" style="background-image: url('<?= $heroImage->getURL() ?>')"></div>
<?php endif; ?>

Типы атрибутов: текст, textarea, boolean, select, image, file, дата, геолокация, рейтинг, URL.

Система разрешений

Concrete CMS обладает детальными ACL-правами — вплоть до уровня отдельной страницы:

// Проверка прав в шаблоне
$cp = new Permissions($c);
if ($cp->canEditPageContents()) {
    // показать кнопку редактирования
}

// Закрыть страницу для гостей
if (!$u->isLoggedIn()) {
    $response = Redirect::to('/login');
    $response->send();
    exit;
}

Группы пользователей с правами на конкретные области сайта настраиваются без программирования через административный интерфейс.

Многоязычность

Concrete CMS поддерживает мультиязычные сайты через Multilingual Sites. Каждая языковая версия — это отдельное поддерево страниц:

/en/
/ru/
/de/

Переключение языка:

$locales = Section::getList();
foreach ($locales as $section) {
    $url = $section->getRelatedPageInLocale($c);
    echo "<a href='{$url}'>{$section->getLanguageText()}</a>";
}

Express Objects: структурированные данные

Express (встроен с версии 8) — ORM-подобный механизм для хранения данных вне дерева страниц. Аналог Custom Post Types, но с реляционными возможностями:

// Создание записи Express Object программно
$entry = Express::buildObject('product', 'Products', 'Product');
$entry->addAttribute('text', 'SKU', 'sku');
$entry->addAttribute('number', 'Price', 'price');
$entry->addAttribute('image', 'Photo', 'photo');
$entry->save();

Форма добавления записей генерируется автоматически, доступна через блок Express Form.

SEO и производительность

// Кастомный SEO в шаблоне
use Concrete\Core\Page\Page;
use Concrete\Core\Html\Service\Html;

$html = $app->make(Html::class);
$seoTitle = $c->getAttribute('seo_title') ?: $c->getCollectionName();

// Кэширование страниц включается в Dashboard → System → Cache
// Полное кэширование: Full Page Caching (Blocks)

Типовая структура проекта

Компонент Путь
Тема packages/my-theme/themes/my-theme/
Кастомные блоки packages/my-theme/blocks/
Шаблоны блоков application/blocks/{block}/templates/
Типы страниц packages/my-theme/themes/my-theme/page_types/
Одиночные страницы application/single_pages/

Сроки разработки

Объём Описание Срок
Небольшой сайт 5–8 типов страниц, стандартные блоки 2–4 недели
Корпоративный портал 10–15 типов, кастомные блоки 5–9 недель
Мультиязычный сайт 3+ языка, Express objects 8–14 недель