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

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

Резюме

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

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

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

Источник

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

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

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

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

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

Читайте также:  Что означает код ошибки 508 в реестре фсс

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

Вход в админку битрикс

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

Шаг 4.

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

Шаг 6.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также:  microsoft шлет код безопасности

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

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

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

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

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

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

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

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

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

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

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

Рекурсивное подключение включаемых областей разделов: галочка

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

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

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

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

Источник

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

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

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

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

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 и поэтому форма появляется над табами, а во втором случае вызов становится просто стройкой.

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

У меня работает

Цитата
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

Источник

Онлайн платформа