База знаний

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

Блоки в Blocksee Assistant

Где находятся шаблоны блоков

Шаблоны блоков располагаются в теме WordPress в директории:

/wp-content/themes/{theme}/parts/sections/{layout}.php

Например, для блока с layout-ом text:

/wp-content/themes/your-theme/parts/sections/text.php

Имя файла шаблона должно точно соответствовать значению name layout-а в ACF.

Примеры соответствия layout → файл

Layout (name в ACF) Файл шаблона
text parts/sections/text.php
main_banner parts/sections/main_banner.php
faq parts/sections/faq.php
gallery parts/sections/gallery.php
smart_price_list parts/sections/smart_price_list.php

Пример структуры шаблона: текстовый блок (text.php)

Рассмотрим структуру текстового блока как пример организации шаблона:

<?php 
// Получаем имя файла без расширения (например: "text")
$currentFileNameWithoutExtension = pathinfo(__FILE__, PATHINFO_FILENAME);
$prefixClass = $currentFileNameWithoutExtension;

// Получаем данные блока из Flexible Content
$section = get_sub_field('own_group');

// Логика выбора данных:
// - Если есть данные блока И не установлен флаг "default" — используем данные блока
// - Иначе — берём дефолтные значения из опций темы
if (empty($section[$prefixClass.'_group']['default']) AND !empty($section)) {
    $sectionTemplate = $section[$prefixClass.'_group'];
} else {
    $sectionTemplate = get_field($prefixClass.'_group', 'option');
}

// Уникальный ID для JavaScript
$randid = rand();
?>

Что делает этот код

Строка Описание
pathinfo(__FILE__, PATHINFO_FILENAME) Получает имя файла без расширения («text» из «text.php»)
get_sub_field('own_group') Получает данные текущего блока из Flexible Content
$section[$prefixClass.'_group'] Обращается к группе полей блока (text_group)
['default'] Флаг — если установлен, используются дефолтные значения
get_field(..., 'option') Загружает дефолтные значения из глобальных настроек темы
$randid = rand() Генерирует уникальный ID для привязки JavaScript

Другие блоки в сборке могут иметь иную структуру в зависимости от их назначения и сложности.

Ключевые особенности структуры

Элемент Описание
get_sub_field('own_group') Получает данные текущего блока из Flexible Content
$prefixClass.'_group' Имя группы полей соответствует имени файла (text → text_group)
['default'] Флаг для использования дефолтных значений вместо данных блока
get_field(..., 'option') Дефолтные значения блока из глобальных настроек темы
$randid Уникальный ID для привязки JavaScript к конкретному экземпляру блока

Структура полей блока в ACF

Каждый layout в «Редакторе блоков» содержит поле типа «Клонировать» (Clone), которое подключает заранее созданную группу полей:

Параметр Значение
Тип поля Клонировать (Clone)
Название поля Настройка

Первая строка в секции Render: имеет префикс /wp-content/themes/corp-cinar/ далее нужно указать путь от темы к блоку, например /parts/text.php

Символьный код own_group
Поля Выбранная группа полей блока (например: «Текстовой блок (group)»)
Способ отображения Группа (сгруппировать выбранные поля в одно и выводить вместо текущего)
Макет Блок
Префикс для названий полей Включён — значения сохраняются как own_group_%field_name%

 

Пример настроек блока

 

Пример настроек блока (обратите внимание на настройку "Способ отображения" и свитчер "Префикс для названия полей")

Схема работы Clone-полей

ACF → Группы полей
├── Редактор блоков (flex_content)
│   └── Layout: text
│       └── own_group (Clone) → клонирует «Текстовой блок»
│
└── Текстовой блок (отдельная группа полей)
    └── text_group (Group)
        ├── default (True/False)
        ├── title (Text)
        ├── text (WYSIWYG)
        ├── no_hide (True/False)
        └── ... другие поля

Преимущества подхода с Clone

  • Переиспользование — одна группа полей может клонироваться в несколько layout-ов
  • Централизованное редактирование — изменения в группе полей применяются ко всем блокам, использующим её
  • Дефолтные значения — та же группа полей используется в настройках темы (Options) для хранения дефолтных значений
  • Чистая структура — layout содержит только одно Clone-поле вместо дублирования всех sub_fields

Где создаются группы полей для блоков

Группы полей блоков создаются отдельно от «Редактора блоков»:

WordPress Админка → ACF → Группы полей → [Название блока]

Каждая группа должна содержать вложенную группу с именем {layout}_group (например: text_group, banner_group, faq_group).

После создания группы полей она становится доступна для выбора в Clone-поле layout-а.