следующий код application includecomponent bitrix catalog main array

Функция CMain::IncludeComponent

Что же это за функция такая CMain::IncludeComponent() у основного класса приложения в Bitrix, как ей пользоваться, что не так в документации о ней.

Введение

Давайте разберемся, что за функция CMain::IncludeComponent(), и как ей пользоваться, чтобы потом не было стыдно (кстати, это не функция, а метод * но я специально использую слово функция для лучшего ранжирования ).

Документация, конечно же, есть (ссылочка на нее), и могу сказать, что она на 90% правильная, но кое-что в ней все-таки не так. Давайте разбираться по порядку.

Чтобы правильно препарировать любую функцию нужно знать ответ на три вопроса мироздания об этой функции:

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

1. Что делает функция?

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

2. Какие параметры функция принимает?

Здесь тоже, в целом, все написано верно в документации, повторим все параметры.

Что ж, нашинковали, думаю, теперь понятно как компонентом можно управлять, а теперь перейдем к самому интересному.

3. Что функция возвращает?

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

Если документации верить нельзя, а спросить не у кого (представим что я не знаю, что там происходит на самом деле), то нужно идти в исходный код, его можно посмотреть на специальном сайте bxapi.ru, или в вашем любимом редакторе, открыв файл: bitrix/modules/main/classes/general/main.php.

А откуда он берется

Теперь мы знаем, что метод IncludeComponent() класса CMain возвращает то, что возвращает метод IncludeComponent() класса CBitrixComponent. Теперь докопаемся до него по той же схеме.

Заходим в этот класс и ищем метод с тем же названием, ссылка на bxapi.ru, сам файл: bitrix/modules/main/classes/general/component.php

Тут мы видим два источника все той же переменной $result, работает либо один либо другой:

Первая от ядра D7, если вы создали class.php, кстати, если вы не переопределяли метод executeComponent(), то его код выглядит так:

Отсюда делаем еще один вывод: class.php в обычном режиме (без переопределения, или сделав parent::executeComponent()) подключает внутри себя файл component.php.

Внутри метода __includeComponent() мы увидим такую строку кода:

Итого

Если обобщить, то метод CMain::IncludeComponent() (вы его часто видите в виде $APPLICATION->IncludeComponent()) возвращает то, что возвращает сам компонент. Т.е. вы полностью управляете тем, что будет возвращено этим методом при подключении вашего собственного компонента. Например, такой механизм можно использовать в паре компонентов «Фильтр» + «Список»: фильтр возвращает массив для фильтрации, а список его принимает в качестве параметра.

И это прям совсем не «код компонента», как нам обещали в документации. Доверяй, но проверяй.

Резюме

Кратко резюмируем полученную информацию:

Автор: Волков Михаил Профиль

следующий код application includecomponent bitrix catalog main array

Профессиональный веб-разработчик со стажем 10+ лет. Все это время я провел в веб-разработке, участвовал в проектах различной сложности и обучал мастерству программирования новобранцев.

Источник

Как добавить дополнительную область на сайт? Bitrix main include — включаемая область

Рассмотрим ситуацию, к примеру на сайт необходимо добавить блок или код выданный счетчиком поисковой системой, или к примеру код для подключения вывода объявлений из систем контекстных объявлений Yandex.Директ или Google.Adsense.

Для этого в Bitrix существует специальный функционал: bitrix main include, а именно Компонент включаемой области.

Рассмотрим функционал bitrix main include

Для решения разного рода задач очень интересен функционал компонента bitrix:main.include, а именно очень часто требуется внедрить определенный блок на сайт, но не править этот блок в самом шаблоне, боясь нарушить его или внести случайную правку. Для таких целей и служит сей компонент. Помимо этого компонент весьма удобен для редактора сайта, изменить содержимое блока не нарушив работоспособность сайта весьма удобно. К примеру, вы переехали и у вас изменился адрес офиса, разработчик внедрил Bitrix main include и добавил в эту область ваш адрес, изменить старый адрес на сайте на новый теперь проще простого. Или к примеру, необходимо изменить номер телефона:

следующий код application includecomponent bitrix catalog main array

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

следующий код application includecomponent bitrix catalog main arrayВход в админку битрикс

следующий код application includecomponent bitrix catalog main array

Шаг 3. Переходим в режим правки:

следующий код application includecomponent bitrix catalog main array

следующий код application includecomponent bitrix catalog main arrayШаг 4.следующий код application includecomponent bitrix catalog main array

Шаг 5. Нажатием на определенную кнопку «Изменить область» вы переходите в режим правки этой области в визуальном редакторе.

Шаг 6.следующий код application includecomponent bitrix catalog main array

Шаг 7. Зеленая кнопка «Сохранить» сохранит ваш новый номер телефона в этом поле. И так можно менять такие поля сколь угодно.

НО, существует задача к примеру ДОБАВИТЬ такую область, а не изменить, тут предстоит поправить шаблон сайта или конкретной страницы.

Задача №1. Добавить область для конкретной страницы и чтоб в этой области была определенная информация, меняя которую в одном месте, автоматически она менялась на всех страницах где эта область подключена. Такого рода задачи бывают в том случае, к примеру когда необходимо вывести информацию об акции на разных страницах сайта и даже на разных его разделах. Изменяя текст в одном месте он меняется везде, к примеру в тексте во включаемой области содержится период проведении акции и необходимо изменить его интервал, таким образом, если бы не включаемая область, то пришлось бы везде где прописана эта акция, проходить и менять интервал к примеру с 1 января по 31 января на с 1 февраля по 28 (29)февраля на каждой странице, а не в одном месте. Итак для этого нам понадобится собственно настроить и внедрить на страницу компонент включаемой области bitrix:main.include.

Для того чтобы внедрить в страницу включаемую область необходимо также как и выше по шагам пройти в систему администрирования сайта, перейти в режим правки (Шаги выше 1,2 и 3). Далее перейти на конкретную статичную страницу сайта или раздела сайта, т.е. туда куда необходимо внедрить эту область. Далее нажать в верхней панели редактирования «Эрмитаж» на редактирование страницы

следующий код application includecomponent bitrix catalog main array

Далее в текстовом окне, в режиме редактирования, есть специальный блок, который выводит включаемую область, для этого нажимаем на меню справа «Служебные»

следующий код application includecomponent bitrix catalog main array

В появившемся меню, двойным кликом, выбираем «Включаемая область»

следующий код application includecomponent bitrix catalog main array

И компонент bitrix:main.include автоматически появится на вашей странице в редакторе и останется его только настроить. Здесь стоит заметить что при режиме редактирования сайтом в виде «Режим редактирования исходного кода» область не появится, для этого необходимо перевести режим правки сайта в визуальный редактор, для этого поменяйте в меню справа режим на «Визуальный режим». Отличить их просто:

следующий код application includecomponent bitrix catalog main array

После этого область появится у вас в текстовом редакторе и автоматически выведется область настроек данного компонента:

следующий код application includecomponent bitrix catalog main array

Для того чтобы, как я и писал ранее, вывести определенный текст этим компонентом, в меню настроек мы должны выбрать:

Показывать включаемую область: Из файла

Путь к файлу области ( для удобства все файлы для включаемых областей я рекомендую складывать в одном месте, если это не относится непосредственно к шаблону сайта, поэтому я создаю в админ-интерфейсе папку include и в ней уже находятся все файлы используемые для подключения к страницам ):/include/inc_area_example.php

Шаблон области по умолчанию:[standard.php] Стандартная страница

следующий код application includecomponent bitrix catalog main array

После этого нажимаем кнопку сохранить. Включаемая область готова. остается только ее наполнить содержимым. Т.е. текстом. Для этого наводим на красную точку в квадратике (это как раз и есть наша включаемая область) и в выпадающем меню нажимаем «Добавить область«.

следующий код application includecomponent bitrix catalog main array

После этого автоматически создается и папка и включаемый файл с такими названиями как мы указали в настройках, т.е. папка: include с файлом inc_area_example.php. Откроется редактор включаемой области доступный для правки.

следующий код application includecomponent bitrix catalog main array

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

следующий код application includecomponent bitrix catalog main array

Таким образом вы добавили область текста на странице сайта.

Задача 2. Добавить включаемую область на сайт в шаблон слева под левым меню, как показано на примере:следующий код application includecomponent bitrix catalog main array

Причем чтоб эта область выводила определенный контент (текст, изображение, что угодно) в заданной части сайта и рекурсивно по разделу, т.е. переходя по сайту внутри раздела она всегда публиковалась, а в других разделах чтоб ее не было. К примеру есть раздел «О компании», в нем есть подраздел например «История», также есть подраздел «Документы», «Реквизиты» и подраздел «Сотрудники». Таким образом во всех подразделах необходимо чтобы эта область показывала определенный контент. Для примера я приведу пути от родительского раздела по подразделам, чтобы это было нагляднее:

В структуре сайта это будет выглядеть так:

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

Итак переходим в режим администратора и включаем режим правки как я уже это описывал ранее по шагам (Шаги выше 1,2 и 3).

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

следующий код application includecomponent bitrix catalog main array

Нажимаем «Редактировать шаблон». Система нас перемещает в раздел правки шаблона сайта в системе администрирования. В верстке сайта обычно левая или правая часть называется sidebar это общепринято программистами и теми кто занимается версткой сайта, поэтому в коде шаблона ищем именно этот класс или идентификатор, вида или >

следующий код application includecomponent bitrix catalog main array

Заходим на любую страницу сайта. Переходим в режим редактирования страницы сайта

следующий код application includecomponent bitrix catalog main array

Далее также выводим настройки включаемой области

следующий код application includecomponent bitrix catalog main arrayследующий код application includecomponent bitrix catalog main array

следующий код application includecomponent bitrix catalog main array

В настройках компонента включаемой области bitrix:main.include выбираем пункты:

Показывать включаемую область: для раздела

Суффикс имени файла включаемой области: inc_area_right

Рекурсивное подключение включаемых областей разделов: галочка
следующий код application includecomponent bitrix catalog main array

Таким образом мы настроили компонент для вывода информации в главном разделе «О компании» и его подразделах. Галочка на настройке: Рекурсивное подключение включаемых областей разделов, как раз и будет выводить информацию из области по всем подразделам главного радела.

После настройки компонента, нажимаем кнопку сохранить. Настроенный компонент уже находится на странице, остается его скопировать и вставить в шаблон сайта. Для этого, переходим в режим правки страницы «Режим редактирования исходного кода»

следующий код application includecomponent bitrix catalog main array

В Самом низу после текста у нас будет код компонента «Включаемая область» вида:

следующий код application includecomponent bitrix catalog main array

Вы можете отсюда скопировать данный код или создать свой как описано выше.

Источник

Вставка включаемой области в Битрикс

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

Вставка включаемой области (это они так назвали), то есть дополнительная какая-либо включаемая область текста например.

Вставка дополнительного файла на странице:

IncludeComponent(
«bitrix:main.include»,
«»,
Array(
«AREA_FILE_SHOW» => «file»,
«PATH» => SITE_TEMPLATE_PATH.»/include/company.php»
)
);?>

Тут мы видим, что подключается файл из папки include прямо на страницу. Вот такой вот незамысловатый код.

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

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

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 шаблона сайта

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

IncludeComponent(
«bitrix:main.include»,
«»,
Array(
«AREA_FILE_SHOW» => «page»,
«AREA_FILE_SUFFIX» => «inc»,
«EDIT_MODE» => «html»,
«EDIT_TEMPLATE» => «»
),
false
);?>

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

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

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

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 — максимальный уровень вложенности

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

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
);?>

IncludeComponent(
«bitrix:system.auth.form»,
«»,
Array(
«REGISTER_URL» => «»,
«PROFILE_URL» => «»,
«SHOW_ERRORS» => «N»
),
false
);?>

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

Форма поиска

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

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

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

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

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 — количество выводимых новостей

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

IncludeComponent(
«bitrix:sale.basket.basket.small»,
«»,
Array(
«PATH_TO_BASKET» => «/personal/basket.php»,
«PATH_TO_ORDER» => «/personal/order.php»
),
false
);?>

Источник

Подключение компонента обратной связи в шаблон компонента catalog.element

Если я передаю в элемент массива «CONTENT» то что выше без кавычек то компонент работает но отображается выше табс. (см фото Проблема1)
Если я ставлю кавычки разные и даже пробую открывающие закрывающие теги php то получается как по фото Проблема2

Все это конечно же я пришу как вы советовали исходя из этого подключаемого модуля в компонент эпилог файле.

Все понятно, вызов компонента выводит html и поэтому форма появляется над табами, а во втором случае вызов становится просто стройкой.

Надо сделать вот так:

У меня работает
следующий код application includecomponent bitrix catalog main array

Цитата
Scrooge написал:
Все понятно, вызов компонента выводит html и поэтому форма появляется над табами, а во втором случае вызов становится просто стройкой.

Надо сделать вот так:

Но вот то что dreamweaver понаписал в сопутствующих файлах css вот там было огромное количество кода.

Я то думал что можно присвоить ключу строковое значение со всем содержимым подключаемого модуля.

Ваш код у меня заработал тоже. Вот только непойму почему таб по умолчанию не скрывается когда я присваиваю «ACTIVE» => «N», Я думал это и влияет на изначальное открытие\скрытие таба.

Если только изучаете, то никаких кодогенераторов, все вручную, начать писать код лучше в Notepad++, потом, через 1-2 года, когда почувствуется дзен, можно переходить на IDE для ускорения и повышения заработка.

Если нужно убрать таб, когда он только один, то можно попробовать скопировать шаблон компонента catalog.tabs и дописать подходящее условие в цикле foreach(), вот здесь.
https://monosnap.com/file/fYVTrb8qIcF1vMCj0T7y1UKswGe0h7.png

Но не факт, что джаваскрипт табов будет работать, если скрыть ul li, попробуйте лучше скрыть таб в css, не копируя шаблон.

Источник

Включаемая область Битрикс

Для реализации функционала с вставкой включаемой областью в битрикс понадобится компонент bitrix:main.include, который необходим для выноса статичьных данных в отденьный файл и редактирования их средствами cms битрикс с помощью «режима правки»

Компонент bitrix:main.include

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

Параметр «AREA_FILE_SHOW» => «sect» подключает включаемую область для всего раздела. Для этого в разделе создаем файл с именем sect_inc.php Установив компонент в шаблоне и перейдя в раздел сайта мы увидим подключение sect_inc.php Если установим параметр «AREA_FILE_RECURSIVE» => «Y» все внутренние разделы также покажут этот файл.

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

Параметр «AREA_FILE_SHOW» => «page» подключает включаемую область для определенной страницы. Для этого в разделе создаем файл с именем index_inc.php Установив компонент в шаблоне и перейдя на определенную страницу сайта мы увидим подключение index_inc.php

Включаемая область из файла

Параметр «AREA_FILE_SHOW» => «file» подключает включаемую область в битрикс из файла. Для этого в параметре «PATH» => SITE_TEMPLATE_PATH.»/include/header-logo.php» указываем путь до файла отностительно корня сайта.

Навыки и умения Знание PHP5, MySQL, JS, HTML5, CSS3. Работа с технологиями XML, AJAX, GIT, SOAP Большой опыт взаимодействия с сервером. Работа с 1C-BITRIX FRIMEWORK, BITRIX24

Источник

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *