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

К некоторым параметрам указаны комментарии, дабы не лазить лишний раз в визуальные настройки и терять время.

Функция подключения компонента

$APPLICATION->IncludeComponent(
componentName, // имя компонента
componentTemplate, // шаблон компонента, пустая строка если шаблон по умолчанию
arParams=array(), // параметры
parentComponent=null,
arFunctionParams=array()
);

Включаемая область для раздела

<?$APPLICATION->IncludeComponent(
    "bitrix:main.include",
    "",
    Array(
        "AREA_FILE_SHOW" => "sect",
        "AREA_FILE_SUFFIX" => "inc",
        "AREA_FILE_RECURSIVE" => "Y",
        "EDIT_MODE" => "html",
        "EDIT_TEMPLATE" => "" // 
    ),
false
);?>

AREA_FILE_RECURSIVE — рекурсивное подключение (Y,N)
EDIT_MODE — режим редактирования (html, php)
EDIT_TEMPLATE — шаблон области по умолчанию, должен лежать в директории page_templates шаблона сайта

Включаемая область для страницы

<?$APPLICATION->IncludeComponent(
    "bitrix:main.include",
    "",
    Array(
        "AREA_FILE_SHOW" => "page",
        "AREA_FILE_SUFFIX" => "inc",
        "EDIT_MODE" => "html",
        "EDIT_TEMPLATE" => "" 
    ),
false
);?>

Включаемый файл шаблона

<?$APPLICATION->IncludeFile(
$APPLICATION->GetTemplatePath("file.php"),
Array(),
Array("MODE"=>"html")
);?>

Подключается file.php из шаблона

Цепочка навигации

<?$APPLICATION->IncludeComponent(
    "bitrix:breadcrumb",
    "",
    Array(
        "START_FROM" => "0",
        "PATH" => "",
        "SITE_ID" => "-"
    ),
false
);?>

Горизонтальное меню

<?$APPLICATION->IncludeComponent(
"bitrix:menu", 
"horizontal_multilevel", 
array(
        "ROOT_MENU_TYPE" => "left",
        "MENU_CACHE_TYPE" => "N",
        "MENU_CACHE_TIME" => "3600",
        "MENU_CACHE_USE_GROUPS" => "Y",
        "MENU_CACHE_GET_VARS" => array(),
        "MAX_LEVEL" => "1",
        "CHILD_MENU_TYPE" => "left",
        "USE_EXT" => "N",
        "ALLOW_MULTI_SELECT" => "N"
    ),
    false
);?>

ROOT_MENU_TYPE — тип меню верхнего уровня
CHILD_MENU_TYPE — тип меню остальных уровней
MAX_LEVEL — максимальный уровень вложенности

Вертикальное меню

<?$APPLICATION->IncludeComponent(
"bitrix:menu", 
"vertical_multilevel", 
array(
        "ROOT_MENU_TYPE" => "left",
        "MENU_CACHE_TYPE" => "N",
        "MENU_CACHE_TIME" => "3600",
        "MENU_CACHE_USE_GROUPS" => "Y",
        "MENU_CACHE_GET_VARS" => array(),
        "MAX_LEVEL" => "1",
        "CHILD_MENU_TYPE" => "left",
        "USE_EXT" => "N",
        "ALLOW_MULTI_SELECT" => "N"
    ),
    false
);?>

Форма авторизации

<?$APPLICATION->IncludeComponent(
    "bitrix:system.auth.form",
    "",
    Array(
        "REGISTER_URL" => "",
        "PROFILE_URL" => "",
        "SHOW_ERRORS" => "N"
    ),
false
);?>

REGISTER_URL — путь к странице регистрации
PROFILE_URL — путь к странице профиля пользователя

Форма поиска

<?$APPLICATION->IncludeComponent(
    "bitrix:search.form",
    "",
    Array(
        "PAGE" => "#SITE_DIR#search/index.php"
    ),
false
);?>

PAGE — путь к странице поиска

Список новостей

<?$APPLICATION->IncludeComponent(
    "bitrix:news.list",
    "",
    Array(
        "DISPLAY_DATE" => "Y",
        "DISPLAY_NAME" => "Y",
        "DISPLAY_PICTURE" => "Y",
        "DISPLAY_PREVIEW_TEXT" => "Y",
        "AJAX_MODE" => "N",
        "IBLOCK_TYPE" => "news",
        "IBLOCK_ID" => $_REQUEST["ID"],
        "NEWS_COUNT" => "20",
        "SORT_BY1" => "ACTIVE_FROM",
        "SORT_ORDER1" => "DESC",
        "SORT_BY2" => "SORT",
        "SORT_ORDER2" => "ASC",
        "FILTER_NAME" => "",
        "FIELD_CODE" => "",
        "PROPERTY_CODE" => "",
        "CHECK_DATES" => "Y",
        "DETAIL_URL" => "",
        "PREVIEW_TRUNCATE_LEN" => "",
        "ACTIVE_DATE_FORMAT" => "d.m.Y",
        "DISPLAY_PANEL" => "N",
        "SET_TITLE" => "Y",
        "SET_STATUS_404" => "N",
        "INCLUDE_IBLOCK_INTO_CHAIN" => "Y",
        "ADD_SECTIONS_CHAIN" => "Y",
        "HIDE_LINK_WHEN_NO_DETAIL" => "N",
        "PARENT_SECTION" => "",
        "PARENT_SECTION_CODE" => "",
        "CACHE_TYPE" => "A",
        "CACHE_TIME" => "3600",
        "CACHE_FILTER" => "N",
        "DISPLAY_TOP_PAGER" => "N",
        "DISPLAY_BOTTOM_PAGER" => "Y",
        "PAGER_TITLE" => "Новости",
        "PAGER_SHOW_ALWAYS" => "Y",
        "PAGER_TEMPLATE" => "",
        "PAGER_DESC_NUMBERING" => "N",
        "PAGER_DESC_NUMBERING_CACHE_TIME" => "36000",
        "PAGER_SHOW_ALL" => "Y",
        "AJAX_OPTION_SHADOW" => "Y",
        "AJAX_OPTION_JUMP" => "N",
        "AJAX_OPTION_STYLE" => "Y",
        "AJAX_OPTION_HISTORY" => "N",
        "AJAX_OPTION_ADDITIONAL" => ""
    ),
false
);?>

DISPLAY_DATE — показывать дату (Y,N)
DISPLAY_NAME — показывать название (Y,N)
DISPLAY_PICTURE — показывать картинку анонса (Y,N)
DISPLAY_PREVIEW_TEXT — показывать анонс (Y,N)
NEWS_COUNT — количество выводимых новостей

Новостная лента

<?$APPLICATION->IncludeComponent(
    "bitrix:news.line",
    "",
    Array(
        "IBLOCK_TYPE" => "news",
        "IBLOCKS" => "",
        "NEWS_COUNT" => "20",
        "FIELD_CODE" => "",
        "SORT_BY1" => "ACTIVE_FROM",
        "SORT_ORDER1" => "DESC",
        "SORT_BY2" => "SORT",
        "SORT_ORDER2" => "ASC",
        "DETAIL_URL" => "",
        "ACTIVE_DATE_FORMAT" => "d.m.Y",
        "CACHE_TYPE" => "A",
        "CACHE_TIME" => "300"
    ),
false
);?>

DETAIL_URL — путь к странице детального просмотра, по умолчанию берется из настроек инфоблока
NEWS_COUNT — количество выводимых новостей

Малая корзина

<?$APPLICATION->IncludeComponent(
    "bitrix:sale.basket.basket.small",
    "",
    Array(
        "PATH_TO_BASKET" => "/personal/basket.php",
        "PATH_TO_ORDER" => "/personal/order.php"
    ),
false
);?>

Больше статей и материалов по web-разработке в tg-канале - подписывайтесь!

Подписаться в telegram

19 комментариев “Образцы вызова стандартных компонентов 1с-битрикс

  1. psizip

    привет, может обменяемся постовыми? ответ пиши мне в блог

  2. Small_Bird

    Добрый день, если не трудно, дайте, пожалуйста для новичка комментарий вот к такому поведению компонентов: когда помещаешь компонент при помощи визуального редактора, то все нормально компонент работает и его контекстная менюшка на месте. При попытке прописать тот же код ручками, или просто перенести сгенерированный системой с места на место в пределах одной страницы, компонент начинает вести себя неправильно, в частности пропадает контекстная менюшка (наблюдает на компоненте \»строка поиска\»)… Если не трудно, подскажите, где руки кривые…. :)

  3. Алексей Валеев

    Честно говоря, не сталкивался с такой проблемой. Причем почти всегда прописываю код руками. Можете кусок неработающего кода мне на e-mail скинуть, или ссылку на сайт оставить, посмотрим.

  4. Николай

    Алексей, столкнулся тут вот с тем, что в \login\index.php (например в стандартном демо интернет-магазина) не подключается компонент system.auth.authorize, который появляется по этому адресу, если пользователь не залогинен. Интересно, где оно? В настройках нигде не заметил, чтобы это в мануале было, тоже не помню.

  5. Алексей Валеев

    Николай, на этой странице вероятнее всего вначале стоит define[«NEED_AUTH», true] — что значит показывать страницу только для авторизованных, для остальных — форму авторизации

  6. Николай

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

  7. Игорь

    А как в новой версии (9.5) использовать визуальный редактор (нигде его не могу найти, как его включить, если он отключен)?
    ( Алексей вы писали- «В режиме визуального редактирования их можно кинуть с панели инструментов…»)

  8. Леонид

    Спасибо автору материалов. Всё очень внятно изложено. На этих материалах посторил свой дизайн.

  9. Алексей Валеев Автор записи

    Не все, а только те что относятся к инфоблокам

  10. Галина

    Спасибо огромное за эту конкретно статью и сайт в общем))очень это нужно было)))

  11. Иван

    Обратил внимание, что у Вас в коде для новостей установлен параметр
    «SET_STATUS_404» => «N»
    Это разве не приводит к тому, что по несуществующим адресам новостей, выдается корневой новостной раздел??

  12. Владимир

    Алексей, добрый день!
    Спасибо за хороший сайт и нужный материал. Я пока осваиваю Битрикс. Интегрировал свой шаблон. Не смог понять, как в вертикальном меню для левой колонки сайта, увидеть в админке субдириктории. В шаблоне исправил: «MAX_LEVEL» => «2», «CHILD_MENU_TYPE» => «right», «ALLOW_MULTI_SELECT» => «Y» Если не трудно, подскажите. Можно в кодах при редактировании меню в админке вроде бы говорят надо набирать директории и вставить разделители, но я не знаю какие.
    Привожу ниже сайт, но он пока без системы управления. Занимаюсь внедрением.

  13. Владимир

    Алексей, добрый день!
    Ответа не получил, но кажется дошло. Видимо создавая страницы подраздела, они становится суб меню.
    Вопрос второй — подключил шаблон к сайту тестовой папки сервера, все работает, но при включении в Аминке РЕЖИМ ПРАВКИ все разлезлось, т.к не читаются видимо стили.
    Возможно в админке, надо разместить шаблон сайта?

  14. Дмитрий

    Спасибо за материал, Алексей!
    Столкнулся с битриксом впервые, хочется плакать от удобства работы с ним. От документации тоже. Хорошо хоть есть нормальные статьи и советы, как у вас.

  15. Ирина

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

  16. Роман

    Добрый день, а как сделать, чтобы в зависимости от страницы содержание включаемой области изменялось?
    На главной свое содержание, а на страницах бренда другое

  17. Марта

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

  18. Елена

    Извините пожалуйста что отвлекаю. Возник вопрос с отображением детальных картинок в компоненте news, там картинки анонса вылезали обрезанными на детальном просмотре.
    сейчас смогла сделать только так

    так выводится только одна картинка во всех новостях при детальном просмотре, а в анонсах выводятся правильные.
    я не понимаю как правильно написать код для такого вот скрещивания анонса и деталки. Подскажите пожалуйста :)

Добавить комментарий

Ваш адрес email не будет опубликован.