Блок с компонентом внутри

Урок 287 из 365
Автор: Ольга Пичужкина
Сложность урока:
4 уровень - сложно, требуется сосредоточится, внимание деталям и точному следованию инструкции.
4 из 5
Просмотров: 3124
Ограничения по редакциям: Ограничений нет

В презентации 1С-Битрикс: Управление Сайтом 18.0 было объявлено, что в модуль Сайты24 можно добавлять стандартные или собственные компоненты. Для этого их нужно "обернуть" в специальный код и разместить в блоках. Таким образом можно реализовать практически любую бизнес-логику.

Создать свой блок достаточно просто. Вам потребуется знание PHP и HTML и тщательное изучение документации о создании блока и о файле манифеста. Также рекомендуем посмотреть вебинар.

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

komp.png
. Это ведь довольно частый кейс, чтобы узнать что-то о наших посетителях или их потребностях. Возьмем для простоты уже готовый опрос, который мы делали в уроке Создание и публикация опроса.


Порядок работы

  1. Создаем в /bitrix/blocks/ папку proba, а в ней папку opros

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

    <section class="landing-block">
            <div class="landing-node-text">
            Здесь будет опрос
            </div>
    </section>
    
  3. Создаем файл .description.php. Это и есть "обертка" - файл манифеста. В нём размещаем код

    <?php
    if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true)
    {
       die();
    }
    return array(
        'block' => array(
            'name' => "Опрос",
        ),
        'cards' => array(),
        'nodes' => array(
            '.landing-block-text' => array(
                'name' => "Заголовок",
                'type' => 'text',
            )
            ),
            '.landing-block-node-text' => array(
                'name' => "Текст",
                'type' => 'text',
            )
    );
    
  4. Очищаем кэш с помощью кода и выполнения php-команды php_string.png

    if (\Bitrix\Main\Loader::includeModule('landing'))
    {
       \Bitrix\Landing\Block::clearRepositoryCache();
    }
  5. Создаем страницу new_site.png
    в разделе Сайты 24
  6. Проверяем, появился ли наш блок в списке блоков add_block.png . И размещаем его на созданной странице
  7. Теперь можно добавить в файл block.php код самого компонента

    <?$APPLICATION->IncludeComponent(
    	"bitrix:voting.current",
    	"",
    	Array(
    		"AJAX_MODE" => "N",
    		"AJAX_OPTION_ADDITIONAL" => "",
    		"AJAX_OPTION_HISTORY" => "N",
    		"AJAX_OPTION_JUMP" => "N",
    		"AJAX_OPTION_STYLE" => "Y",
    		"CACHE_TIME" => "3600",
    		"CACHE_TYPE" => "A",
    		"CHANNEL_SID" => "-",
    		"VOTE_ALL_RESULTS" => "N",
    		"VOTE_ID" => "6"
    	)
    );?><br>
    
  8. Не забываем очищать кэш после каждого изменения в коде блока, то есть в файле block.php.
  9. Если вы хотите редактировать что-то в компоненте, вам нужно будет менять файл манифеста, а именно задавать ключи nodes, style и др. Подробно о полях манифеста рассказано в документации.
  10. В случае возникновения ошибок при выполнении скрипта можно включить расширенный вывод ошибок Секция exception_handling отвечает за обработку ошибок.
    Подробнее...
    в файле настройки параметров ядра .settings.php.

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


Дополнительная информация



Курсы разработаны в компании «1С-Битрикс»
Спасибо, мы рады что смогли помочь Вам. Ниже Вы можете оставить свой отзыв или пожелание :)
Нам жаль это слышать… Но мы постараемся быть лучше! Поясните, пожалуйста, свой выбор:

Мы благодарны Вам за помощь в улучшении документации.

Мы стараемся сделать документацию понятнее и доступнее,
и Ваше мнение важно для нас