Представим, что вы сверстали проект, в котором есть несколько страниц, картинки, стили и скрипты. И тут контент-менеджер решил переписать тексты на главной странице, поменять пару изображений на более «продающие» и создать страницу с ценами.

Если он не знаком с HTML, то вряд ли сможет это сделать — он передаст задачу вам. Но что, если вы в отпуске, заболели или занимаетесь более важными задачами? Как раз для этого и существуют системы управления контентом, или CMS — чтобы менять контент на сайте, не залезая в код.

Почему важно уметь верстать под CMS?

Почти половина сайтов использует CMS, и с каждым годом их число растёт. Согласно отчёту Web Almanac, в 2021 году на CMS работали 45% сайтов — на 7% больше, чем в 2020 году.

По данным W3Techs, этот процент ещё выше. По статистике этого сервиса, в 2021 году на системах управления контентом работали 64,6% сайтов — на 9% больше по сравнению с 2020 годом. Поэтому важно уметь верстать под CMS — высока вероятность того, что ваша вёрстка тоже будет интегрирована в систему управления контентом.

Ещё одна причина — экономия времени разработчика. Без этого навыка доработка вёрстки после интеграции с CMS может занять столько же времени, сколько было потрачено на разработку.

Популярные системы управления контентом

Обо всех CMS рассказать невозможно — их слишком много. Есть платные тиражные системы, в их числе 1С-Битрикс и Canape CMS. Есть бесплатные, например, Drupal и WordPress. Бывают узкоспециализированные системы для создания сайтов электронной коммерции. К ним относят InSales и Zen Cart. А ещё есть самописные CMS — созданные по заказу владельца сайта.

По статистике iTrack, самые популярные системы в России — WordPress и 1С-Битрикс.

WordPress, или Вордпресс — бесплатная платформа, которая задумывалась для создания личных блогов, но впоследствии стала использоваться и для сайтов компаний.

С помощью плагинов на WordPress можно создать интернет-магазин. Также можно добавить на сайт модальные окна, формы заявок или адаптивные слайдеры. Есть здесь и хостинг: можно бесплатно получить адрес в субдомене wordpress.com.

1С-Битрикс предназначен только для бизнеса. Он платный: стоимость «коробочного» решения интернет-магазина + CRM начинается от 99 тысяч рублей. Достоинство 1С-Битрикс — интеграция с сервисами 1С, которые многие компании используют для ведения бухгалтерии.

Что выбрать? CMS выбирают в зависимости от задач, масштаба проекта и бюджета. WordPress используют для личных блогов, информационных сайтов и небольших интернет-магазинов. Ещё его удобно использовать на старте компании, когда скорость запуска проекта важнее интеграции с 1C-бухгалтерией. Битрикс подходит для крупных проектов и бизнеса. При этом в Европе сложно найти экспертов 1С-Битрикс, а WordPress-специалисты есть везде.

Особенности вёрстки под CMS

Ограничения и стили

Вёрстка для CMS отличается от обычной количеством ограничений. Например, в обычной вёрстке вы можете выбрать любой способ создания декоративных элементов: через псевдоэлемент или фоновое изображение. В CMS вынести декоративный элемент из CSS-файла не получится — только из HTML. Поэтому декоративные элементы при вёрстке для CMS можно вставлять только как контентное или фоновое изображение.

Ещё один важный момент касается организации стилей: для многих CMS нужно подключать только один CSS-файл на все страницы. Так при увеличении проекта стили из разных файлов не будут перезаписывать друг друга.

WYSIWYG-редактор

В CMS есть WYSIWYG-редактор, который внешне похож на редактор Word — в него выносят блоки с текстом. С его помощью заказчик может менять и форматировать текст, а в некоторых CMS ещё и добавлять изображения, например, в WordPress.

Так выглядит редактор в одной из версий WordPress:

Визуальный редактор Вордпресса

Здесь заказчик может отформатировать текст: изменить размер и толщину шрифта, поменять цвет и высоту строки, добавить ссылки и заголовки.

Что это значит для верстальщика? Что в визуальный редактор будут добавлены различные элементы без классов. Например, в сделанной по макету разметке есть только текст:

<div class="about-company">
    <p>Длинный параграф текста</p>
</div>

Но заказчик добавит туда список и изображение, и в результате разметка станет такой:

<div class="about-company">
    <p>Длинный параграф текста</p>
    <img src="img/keks.jpeg">
    <ul>
        <li>Пункт 1</li>
        <li>Пункт 2</li>
    </ul>
</div>

Поэтому можно добавить единый класс "wysiwyg" и прописать стилизацию доступных в визуальном редакторе элементов:

<div class="about-company wysiwyg">
    <p>Длинный параграф текста</p>
</div>

.wysiwyg p {
    /* стили */
}

.wysiwyg ul {
    /* стили */
}

.wysiwyg li {
    /* стили */
}

.wysiwyg img {
    /* стили */
}

.wysiwyg h1 {
    /* стили */
}

Как минимум, здесь нужно прописать текстовые параметры: размер шрифта, межстрочное расстояние, цвет текста, шрифт. И добавить отступ снизу, чтобы новые элементы не прилипали к другим — расположенным над ними.

.wysiwyg * {
    margin-bottom: 10px;
}

Если в техническом задании написано, что в конкретный блок будет интегрирован WYSIWYG-редактор, то внутренним элементам нельзя задавать классы:

<div class="contacts wysiwyg">
    <h3>Заголовок блока</h3>
    <p>Много букв</p>
    <p>Еще немного букв</p>
    <a href="google.com">Ссылка</a>
</div>

То есть можно добавить класс для обёртки, но все дочерние элементы должны быть без классов.

Как узнать, какие блоки будут интегрированы с визуальным редактором? Обычно это указано в техническом задании. Если этой информации нет, стоит обратиться к заказчику. Как правило, в редактор выносят текстовые блоки, например:

Одинаковые блоки на макете Nerds

Повторяющийся контент

Повторяющийся контент принято выделять в отдельные секции. Особенно часто выделяют <header> и <footer>, так как их принято делать одинаковыми на разных страницах.

При разметке шапки сайта нужно быть внимательным: легко ошибиться и добавить в этот блок что-то лишнее. Посмотрите на макет двух страниц, главной и каталога. Какую часть вы бы отнесли к <header>?

Сравнение макетов главной страницы и каталога.

Только повторяющийся контент и будет частью <header>:

Где находится шапка на двух макетах.

Этот вариант правильный, так как выделена часть, которая повторяется на обеих страницах. Вас не должно запутать решение дизайнера визуально соединить шапку и следующую секцию.

Посмотрим примеры неправильного выделения.

Неправильно выделенные блоки

Секция со слайдером уникальна для главной страницы, поэтому не должна находиться в <header>.

Ещё один пример неверного выделения:

Еще один пример неправильного выделения общей шапки.

Секция с названием страницы присутствует не на каждой странице, поэтому не должна находиться в <header>.

Фоновые изображения

У некоторых секций бывают фоновые изображения — их важно подготовить к интеграции с CMS. Для этого нужно поместить путь к файлу в HTML-разметку. Как это сделать? Использовать атрибут style:

<section class="promo" style="background-image: url('img/background.jpg');">

Остальные стили для этого фонового изображения можно оставить в CSS:

.promo {
    background-repeat: no-repeat;
    background-size: cover;
}

Иконки и декоративные элементы

Обычно в техническом задании написано, какие иконки и декоративные элементы будут выносить в CMS. Если этой информации нет, лучше уточнить у руководителя проекта или заказчика.

Чаще всего выносят в CMS иконки социальных сетей, преимуществ и категорий. Это нужно, чтобы при добавлении нового элемента контент-менеджер мог сам загрузить изображения.

Иконки категорий Предметы интерьера и детские игрушки
Иконки категорий
Иконки раздела о компании
Иконки раздела о компании
Иконки преимуществ
Иконки преимуществ
Иконки категорий товаров
Иконки категорий товаров

При интеграции вёрстки под WordPress, 1С-Битрикс и другие «коробочные» CMS такие иконки должны быть доступны из HTML, поэтому их не стоит верстать псевдоэлементами. Можно сделать через фоновое изображение и вынести в style ссылку на изображение:

<div class="category-item" style="background-image: url('img/category-item-1.svg');">
    <p>Пуховики для длинных собак</p>
</div>

Через контентное тоже верно:

<div class="category-item">
    <img src="img/category-item-1.svg">
    <p>Пуховики для длинных собак</p>
</div>

И через добавление SVG тоже правильно:

<div class="category-item">
    <svg xmlns="http://www.w3.org/2000/svg" width="50px" height="50px" viewBox="216.469 0 768 57">
        <path fill="#FFFFFF" d="M30.2 5h-.2l-19.7 2.1v36.2l19.7" />
    </svg>
    <p>Пуховики для длинных собак</p>
</div>

Декоративные элементы обычно не выносят в CMS, но лучше опираться на конкретное техническое задание. Если в CMS их не вынесут, то можно верстать как угодно.

К декоративным элементам относят иконки поиска и корзины:

Иконки поиска и корзины.

Иконку у заголовка:

Иконка у заголовка.

Иконки в формах:

Иконки поиска и корзины.

Иконки у пунктов меню:

Иконки у пунктов меню:.

Элементы, которые не вынесут в CMS, можно верстать любым подходящим способом.

Тестирование вёрстки на переполнение

CMS подразумевает, что контент будет постоянно меняться: заголовки станут короче или длиннее, изменятся тексты в кнопках, увеличится или уменьшится количество элементов списка и фильтра, одни параграфы заменят другие. Поэтому весь контент важно тестировать на переполнение.

Проверить вёрстку можно в браузере с помощью инструментов разработчика — во вкладке Elements. Например, в браузере Chrome можно протестировать так:

Проверка вёрстки на переполнение

Нужно заранее проверить все элементы, чтобы впоследствии не вносить множество правок.

Итоги

Вёрстка под системы управления контентом становится базовым навыком фронтенд-разработчика. В этой статье мы рассмотрели лишь некоторые принципы подготовки вёрстки для CMS. Больше примеров, а также нюансы WordPress и 1С-Битрикс вы найдёте на курсе «Подготовка вёрстки для CMS».

Автор — Татьяна Симоненко