Документация для разработчиков

Создание и изменение блока

Внимание! Мы настоятельно рекомендуем ознакомиться сначала с REST-документацией модуля Сайты, чтобы понять как модуль функционирует (тем более REST доступен и в коробочной версии). Данную документацию рассматривайте как подспорье при работе в коробке, когда вам действительно мало функционала REST, или вы хотите детальнее разобраться в API.

  • Создание блока
  • Обновление уже добавленных блоков
  • Создание блока

    Создать свой блок достаточно просто. Все блоки размещаются на диске по пути /bitrix/blocks/, далее идет разграничение по так называемым пространствам имен. Добавить свой блок вы можете непосредственно в свое пространство, предварительно создав его. Пространство имён - это просто каталог внутри /bitrix/blocks/.

    Примечание: Также поддерживается директория /local.

    Блок состоит из следующих файлов:

    1. Основного тела блока block.php, там содержится разметка блока, которая копируется в базу данных при добавлении блока на страницу.
    2. Файла .description.php, где находится манифест блока. Для показа блока в репозитории необходимо как минимум название блока в таком Пространстве имён.
    3. Языковые файлы (согласно правилам языковых файлов Bitrix Framework).
    4. Необязательные файлы script.js/style.css, которые будут подключены вместе с блоком и могут нести дополнительную логику/отображение.
    5. Необязательный файл preview.jpg, который служит иллюстрацией блока в каталоге.

    Данные файлы размещаются внутрь папки с определенным названием (лучше использовать латиницу, цифры, символы "." и "-"). С этого момента имя папки будет служить также и символьным кодом блока, прописываться в базу данных при добавлении блока на страницу. Будьте с этим осторожны.

    Обратите внимание, что имя блока должно быть уникально в рамках всей установки. К примеру, если есть блок about в пространстве bitrix и в пространстве my, то в системе будет существовать только один блок, причем тот, который в пространстве my, так как оно расположено ниже пространства bitrix. Это сделано специально для возможности переопределения штатных блоков разработчиками. При распространении таких блоков через Маркетплейс рекомендуется именам блоков давать префикс партнера. Облачный REST лишен таких условий и рекомендуется к распространению как более универсальный вариант.


    Важно! После добавления блока (блоков) обязательно сделайте вызов кода для очистки кеша (либо через административный интерфейс в настройках кеширования):

    if (\Bitrix\Main\Loader::includeModule('landing'))
    {
       \Bitrix\Landing\Block::clearRepositoryCache();
    }

    Важно! Пространство имен bitrix является зарезервированным и подгружается с облачного сервиса компании Битрикс. Находящиеся там блоки не относятся к каталогу в редакторе и размещены в ознакомительных целях.

    Верстку новых блоков вы можете заказать у специалиста, или воспользоваться предложенными дополнительными блоками вендора.

    Примеры

    Пример файла block.php

    <section class="landing-block">
        <div class="text-center g-color-gray-dark-v3 g-pa-10">
            <div class="g-width-600 mx-auto">
                <div class="landing-block-node-text g-font-size-12 ">
                    <p>© 2017 All right reserved. Developed by
                    <a href="#" class="landing-block-node-link g-color-primary">Bitrix24</p>
                </div>
            </div>
        </div>
    </section>

    Пример файла .description.php

    <?php
    if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true)
    {
       die();
    }
    
    use \Bitrix\Main\Localization\Loc;
    
    return array(
       'block' =>
          array(
             'name' => Loc::getMessage('LANDING_BLOCK_32.'),
             'section' => array('image'),
          ),
       'cards' => array(),
       'nodes' =>
          array(
             '.landing-block-node-img-big' =>
                array(
                   'name' => Loc::getMessage('LANDING_BLOCK_32.1'),
                   'type' => 'img',
                   'dimensions' => array('width' => 1440, 'height' => 960),
                   'allowInlineEdit' => false,
                ), 
          ), 
    );

    Обновление уже добавленных блоков

    Если вы хотите обновить верстку в уже добавленных блоков на страинцах, вам прежде надо изменить оригинал блока в репозитории, а затем выполнить код ниже. Обратите внимание, технология тестовая и требует отдельного тестирования на блоках, которые вы хотите изменить. Подробнее...

    if (\Bitrix\Main\Loader::includeModule('landing'))
    {
       \Bitrix\Landing\Update\Block::register(
          '20.3.four_cols_fix_img_title_text',//символьный код блока
          $params
       );
    }
    

    Массив параметров в ключах хранит селекторы, на которые нужно соответствующим образом повлиять при обновлении. В значениях же содержится массива с двумя опциональными ключами (new_class, remove_class):

    $params = [
          '.landing-block-node-card-title' => [
             'new_class' => ['g-pr-0', 'g-pr-15--md', 'g-mb-8', 'g-mb-0--md'],  // добавляем классы для селектора landing-block-node-card-title
    
             'remove_class' => ['u-heading-v1__title', 'mb-0'],    // удаляем классы из селектора landing-block-node-card-title
    
          ],
          '.landing-block-node-card-price' => [
             'new_class' => 'd-inline-block g-ml-0 g-ml-15--md',
          ],
    ]

    Если вдруг что-то пошло не так и требуется отменить индексацию:

    if (\Bitrix\Main\Loader::includeModule('landing'))
    {
       \Bitrix\Landing\Update\Block::unregister(
          '20.3.four_cols_fix_img_title_text'
       );
    }

    Если надо потестировать на конкретном блоке сначала, как происходит обновление:

    if (\Bitrix\Main\Loader::includeModule('landing'))
    {
       \Bitrix\Landing\Update\Block::executeStep([
          'ID' => 44148 // ID блока
       ], $count = 0, $limit = 1, $params = []);
    }

    Константа для разработки

    Также в системе присутствует константа

    define("LANDING_DEVELOPER_MODE", true);

    Если она определена, то при выводе блоков В режиме редактирования или просмотра. система будет сравнивать дату последнего изменения блока на странице и файла блока в репозитории. Если последняя выше, произведет обновление в базе, оставив нетронутым содержимое блока.



    Пользовательские комментарии

    Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

    Для этого нужно всего лишь авторизоваться на сайте

    Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

    Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
    © «Битрикс», 2001-2019, «1С-Битрикс», 2019
    Наверх