Bitrix как подключить api без header

Дата поста: 21-09-2012

Сегодня речь пойдёт о том, что ещё недавно меня мучило самого. Был сделан php скрипт, использующий API Битрикс, однако при выводе во включаемой области через AJAX у меня дублировался дизайн, а скрипт выводил всего лишь поисковую форму в зависимости от определённых условий. Хотя нет, объясню иначе, был сделан блок на интернет магазине, в котором выводился выпадающий список марок автомобилей, данная выборка делалась из разделов инфоблока марок и моделей машин, заносились в массив и выводились в списке. Когда пользователь выбирает из этого выпадающего списка какую либо марку то ниже должен появляться новый dropdown список, в котором делается выборка из базы определённой марки по моделям, т.е. если мы в 1 списке выбрали Renault, то появлется список где, к примеру, есть Logan, Sandero ну и прочие. Так вот проблема была в том, что подгружался контент через ajax, для того чтоб не перезагружать страницу, ну красивее так. Но если мы делаем отдельный скрипт, то возникает вопрос как использовать api 1с битрикса, но не подключать шаблон, т.к. если подключить по стандарту, то в результате выполнения скрипта и вывода его через аякс, то выведется полностью контент включая шаблон, т.е. будет ужас, можете попробовать это сделать, поймёте. Решение было найдено изучив документацию и исходники других страниц и модулей. Главная фишка заключается в том, что api битрикса подключается не так как на стандартных страницах.
По дефолту при создании страницы мы имеем приблизительно следующий контент:

Изучив header.php и footer.php, пройдя по куче инклудов и поняв где подключается API битрикс я делюсь информацией с вами.

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

В результате вы получите страницу с текстом «Содержимое страницы» на белом фоне, и на этой странице можно подключать компоненты, апи полностью доступен, и эта страница не будет иметь оформления вашего шаблона, т.е. выведется только результат работы скрипта. Интерфейс админ панели и шаблон подключается в файле prolog_after.php

В моем случае я использовал jQuery.Post. Передавал ID раздела Марки (у меня марки были в одном инфоблоке и являлись разделом, а элементы — модели машин в соответствующем разделе), в результате делалась выборка CIBlockElement::GetList, в которой из post-запроса брался ID раздела марки, и формировался через echo select-список, и выводился в результат вышеописанного запроса jQuery.Post в секции data

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

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

Источник

Вариант реализации REST API для 1С-Битрикс Управление сайтом

Вводные

1. В Битрикс заведен каталог товаров без привязки к 1С. В 1С УТ 11 аналогичный каталог.

2. Типовая обработка не позволяет состыковать номенклатуру, результат её работы дубли либо со стороны 1С либо со стороны БУС.

3. Реализация обмена со стороны БУС «черный ящик», в который даже продвинутые программисты по битрикс не горят желанием лезть.

4. Реализация обмена со стороны 1С вызывает ряд вопросов (по логичности и по реализации).

5. Установка доп модуля https://1c.1c-bitrix.ru/ecommerce/download.php проблему не решает, усложняет обновление конфигурации.

Все вышесказанное вынес из собственного опыта взаимодействия при реализации обменов различными способами.

Вариант решения

Настройка проекта

Есть опыт работы с symfony, взял его.

READ  Как подключить канал в лотро

Так же присутствуют ошибки по проверке доступности реквизитов (PSR-4).

Для обхода ошибок был собран symfony без errorhandler.

В папке /local БУС создал папку api_min, в ней создал проект (архив проекта будет в фйлах для скачивания)

Создал папку public, в ней index.php, это будет точкой входа в API

Слеш в конце строки сделал для унификации, т.к. в некоторых настройках БУС автодобавление слеша.

В маршрутах можно использовать regex, что удобно при работе и через id и через xml_id

Организация точки входа

В файле index.php описываем приложение, подключаем контроллеры с данными.

1. Аутентификация по токену

1.1 Заголовок токена, его значения, инфоблоки для работы с товарами заданы в Helpers/ConfigAPI

Работа с товарами

Основная логика описана в «ReferenceIblockController» и «ReferenceController»

Для чтения списка товаров используется «Iblock\ElementTable», т.к. поддерживает limit/offset, для работы с элементами используется CIBlockElement, потому что в новом движке через ElementTable элемент не поменять.

Наследование использую для уменьшения количества кода, т.к. операции с элементами повторяются.

Для проверки параметров запроса и данных в теле запроса использую https://symfony.com/doc/current/validation.html, существенно удобнее чем вручную все проверять и писать сообщения. При ошибки проверки вызываю исключение BadRequestException в которое передаю массив ошибок.

Работа со справочником товары, реализация со стороны 1С

Гружу без пагинации, т.к. каталог небольшой, текущего limit 1000 хватает.

Для обновления элемента используется код

Реализация обмена через REST не сложна, гибка и структурирована, понятно на каком именно элементе произошла ошибка.

Сборка symfony нестандартная, если получится нормально настроить ErrorHandler, то будет чуть проще.

Благодарю за внимание.

Скачать файлы

Специальные предложения

Не соглашусь с первыми 2 пунктами.

Но решение интересное и познавательное, спасибо за статью.

Вопрос следующий: в БУС развивается свое REST API и планируется создать обмен с использованием его (по аналогии, как сейчас работает обмен с Битрикс24). Не сморили в сторону работы через REST API?

Источник

Частые вопросы

Вопросы по установке и настройке продукта

1. Определить свой часовой пояс: http://php.net/manual/en/timezones.php
Например,

Europe/Moscow

Внимание! Не все системы содержат информацию об отмене перехода на зимнее время в РФ. Используйте прямое указание сдвига относительно GMT, например для Москвы будет

Etc/GMT-4

2. Установить часовой пояс для php в /bitrix/php_interface/dbconn.php

date_default_timezone_set(«Etc/GMT-4»);

Для версии php ниже 5.1 используется функция putenv:

putenv(«TZ=Etc/GMT-4»);

3. Установить часовой пояс для MySQL в файле /bitrix/php_interface/after_connect.php:

$DB->Query(«SET LOCAL time_zone=’Etc/GMT-4′»);

Можно использовать для БД часовой пояс php, тогда используйте такой код:

$DB->Query(«SET LOCAL time_zone='».date(‘P’).»‘»);

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

В данном случае следует запретить не только отображение значения цены в каталоге, но и покупку по цене данного типа.
Настройка типов цен:
Рабочий стол->Магазин->Торговый каталог->Типы цен

Наверх

Заказчику не приходит уведомление о новом заказе, почему?
Ошибочно думать, что уведомление о новом заказе отправляется на электронный адрес покупателя, который был указан при его регистрации на сайте. Уведомление отправляется на адрес, указанный в процессе оформления заказа. Чтобы дать возможность покупателю указать свой адрес следует создать соответствующее свойство заказа типа «[TEXT]СТРОКА»; и включить для этого свойства опцию «Использовать как E-Mail». Данное свойство становиться обязательным для заполнения автоматически.

Магазин->Настройки магазина->Свойства заказа->Список свойств

Также следует удостоверится, что в шаблоне типа события SALE_NEW_ORDER в поле «Кому» или «Скрытая копия» было указано шаблон «#EMAIL#»;, вместо которого и будет подставляться значение созданного вами свойства заказа.

Настройки->Настройки продукта->Почтовые события->Почтовые шаблоны

Если свойства заказа, отмеченного как e-mail, нет, то письма отправляться не будут.
Наверх

Как добавить новые данные в текст письма-уведомления, используя функцию Send?
Для внесение новых данных в письмо-уведомление, например уведомление о новом заказе, следует получить эти данные, используя соответствующие API фукнции и занести в массив, который является входящим параметром функции Send.
Функция Send генерирует событие, а поля указанные в массиве будут доступны для вставки в шаблоне соответствующего типа почтового события.
Например, в компоненте оформления заказа:

Шаблон почтового события и тип почтового события добавляются в административной части:
Настройки->Настройки продукта->Почтовые события->Почтовые шаблоны
Настройки->Настройки продукта->Почтовые события->Типы почтовых событий

Внимание! Данные изменения делаются в коде компонентов, которые следует сначала скопировать в пользовательское пространство имён.
Если функция Send вызывается в ядре, проводить какие-либо изменения не рекомендуется.

Наверх

Как кастомизировать стандартный компонент?
Чтобы кастомизировать стандартный компонент Вам надо:
1. Создать новое пространство имён компонентов в папке /bitrix/components/, например создать директорию /bitrix/components/my_components/.
2. В созданную папку необходимо скопировать папку с компонентом, который хотите изменить (копировать из папки /bitrix/components/bitrix/).
3. Очистите кеш визуального редактора.
В результате в визуальном редакторе у Вас отобразится кастомизированный компонент.

Наверх

Как использовать параметры PARAM1 и PARAM2 в модуле поиска?
PARAM1 и PARAM1 используются для сужения области поиска.

Для каждого модуля значение этих параметров разное.

Пример вызова:

errorno!=0):
?>
В поисковой фразе обнаружена ошибка:
error);?>
Исправьте поисковую фразу и повторите поиск.
GetNext())
<
?>
«>

Поиск будет осуществляться в инфоблоке, который имеет тип «news» и код 33.

Наверх

У меня есть домен site.ru. Как в «Битриксе» настроить поддомены вида forum.site.ru?
Настроить домены можно через DNS сервер хостинг-провайдера. PHP приложение не имеет доступа к настрокам DNS, изменить конфигурацию доменов из «Битрикс» невозможно. Вам необходимо обратиться к своему хостинг-провайдеру с вопросом настройки DNS.

Наверх

Какая структура таблиц БД «Битрикса»? Как мне писать свои SQL запросы?
Концепция работы с продуктом предполагает работу с данными через функции API (http://dev.1c-bitrix.ru/api_help/main/reference/index.php).
Структура данных может меняться от версии к версии, а функции сохраняют обратную совместимость.
Мы настоятельно не рекомендуем использовать прямые запросы к БД, т.к. это может нарушить целостность данных и привести к неработоспособности сайта. Нормальная работа продукта в таком режиме не гарантируется и не поддерживается.

Наверх

Как настроить работу периодических функций с использованием планировщика cron?
Чтобы запускать скрипты, работающие с API «Битрикс», из командной строки необходимо определить некоторые серверные переменные, отключить статистику и подключить ядро без отображения шаблона сайта:

После этого такому скрипту необходимо дать права на выполнение:
chmod +x myscript.php

Убедившись, что скрипт отрабатывает из командной строки, можно добавить задание cron, например:
0 0 * * * [путь]/myscript.php >> [путь]/myscript.log

Путь к текущей папку можно узнать командой
pwd
Весь вывод скрипта будет дописываться в myscript.log

Если на хостинге нет интерпретатора php (только модуль php для apache), то сам скрипт будет иметь вид:

А вызов в планировщике надо будет делать через http клиент (например, lynx):
0 0 * * * lynx mysite.ru/myscript.php >> [путь]/myscript.log

Наверх

Какие права на файлы необходимы для работы «Битрикс: Управление сайтом»?
Дать универсальный ответ, какие должны быть права на файлы, нельзя, так как каждый хостинг настроен по особенному.

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

Поэтому вопрос необходимо решать с хостинг-провайдером.

Наверх

Почему нельзя изменять содержимое папки bitrix/modules?
Содержимое папки bitrix/modules называется ядром продукта (сюда же относятся системные компоненты: bitrix/components/bitrix). В процессе обновления системы содержимое этой папки может быть переписано. Если вы внесёте свои изменения в ядро, они потеряются при обновлении.
Вы делаете изменения на свой страх и риск, компания «Битрикс» не несёт ответственности за последствия изменений. Согласно лицензионному соглашению, в этом случае вам будет отказано в технической поддержке со стороны нашей компании.

Наверх

Как выбрать хостера? Какие требования продукта к хостингу?
Для успешной установки и полноценной работы продукта необходимы следующие параметры:

Крайне рекомендуется наличие акселератора PHP (APC, eAccelerator или любого другого).
Режим работы PHP как модуля Apache предпочтительнее (CGI настоятельно не рекомендуется, лучше FastCGI): http://dev.1c-bitrix.ru/community/blogs/howto/568.php

Наверх

Как изменить выставляемые продуктом права на файлы?
Права, с которыми создаются файлы и папки, вы можете установить в файле /bitrix/php_interface/dbconn.php:
define(«BX_FILE_PERMISSIONS», 0755);
define(«BX_DIR_PERMISSIONS», 0755);

См. также:
http://dev.1c-bitrix.ru/community/blogs/howto/387.php

Внимание! Обязательно удалите этот файл после восстановления пароля!

Таким образом, запуск в safe mode возможен, но для этого требуются глубокие знания администрирования. Можете делать это на свой страх и риск.
Мы рекомендуем использовать хостинг, который тестировался на совместимость с продуктом. Список таких компаний-хостеров представлен на странице:
http://www.1c-bitrix.ru/products/cms/requirements.php#tab-hosting-link
Существует также много других компаний, которые тоже предоставляют услуги хостинга без safe mode.

Наверх

Как при показе flash-баннера использовать альтернативную картинку?
Для того чтобы вставить Flash баннер с подложкой (картинкой GIF, JPG, PNG) необходимо сделать следующее:
1. При публикации Flash баннера из программы Macromedia (ныне Adobe) Flash следует указать альтернативные форматы, которые будут созданы вместе с Flash баннером, например Gif.
2. На вкладке HTML в диалоге публикации следует установить опцию «Detect Flash Player». В данном случае будет сгенерирован специальный код, содержащий JavaScript для проверки установлен ли Flash проигрыватель и какой он версии.
3. Обратите внимание, полученный HTML код следует скопировать в поле «Код баннера» в режиме HTML (визуальный редактор можно отключить).
4. Код можно сократить оставив только непосредственно вывод баннер средствами JavaScript

Код определения версии Flash проигрывателя можно вынести в область в шаблон сайта.

Ниже приведен пример подобного кода:

Файлы баннера и подложки должны быть скопированы в нужное место на сайт.
В данном случае не нужно загружать их средствами формы редактирования баннера(!).
Пути к файлам баннера можно скорректировать непосредственно в коде.
Обратите внимание, что вызов баннера Flash производится в двух местах: в теге для объекта ActiveX и в теге для браузеров использующих плагины.
5. Обратите внимание, так как вставка кода производится в поле «Код баннера», то стандартный учет кликов по Flash баннеру работать не будет.
Таким образом, следует при создании баннера учесть этот момент и использовать некоторый слой с картинкой поверх баннера. Следует установить ссылку на эту картинку в соответствии с правилами формирования URL для баннеров (это можно посмотреть на любом уже загруженном обычном баннере).

Наверх

Как убрать «PHPSESSID=. » из URL?
Чтобы избавиться от идентификатора сессии в URL, раскомментируйте строку в /.htaccess
php_flag session.use_trans_sid off

Если это не дает результата, необходимо изменить значение параметра session.use_trans_sid на Off непосредственно в php.ini на сервере.
Удостоверьтесь, также, что значение параметра session.use_cookies установлено в On.

1. Перейдите в настройки модуля «Монитор производительности» и включите отображение таблиц

echo(‘ ‘.GetMessage(«nav_of»).’ ‘);
echo($this->NavRecordCount);
echo(«\n
\n «);

Наверх

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

Если по каким-то причинам не удаётся использовать средства продукта, попробуйте другой вариант:

Использование штатных средств системы семейства UNIX

2. Используйте это значение в фильтре:

Как перенести сайт или корпоративный портал на другой компьютер?
array(«PROPERTY»=>array(«isMain»=>$EnumID))

Наверх

Как вставить flash-баннер?
Ротация Flash баннеров производится аналогично как и графических. Только вместо картинки указывается HTML код. Необходимо выполнить следующие шаги:

Ссылка для ролика создается в программе Macromedia Flash след. образом:
1. Создается новый слой, который помещается поверх остальных.
2. В него помещается прямоугольник, размерами и расположением закрывающий весь баннер.
3. Прямоугольник преобразуется в символ (Convert to Symbol, Behavior: Button).
4. Символ делается прозрачным (Properties, Color: Alpha = 0%).
5. Записывается ссылка на клик по символу (Actions, getURL).
6. В функции getURL необходимо вместо значений указать параметры link и target.

в результате получится:

on (release)
<
getURL(link, target);
>

Баннер загружается средствами продукта аналогично обычному графическому файлу в поле «Изображение:».

if (strlen(trim($arrPath[«extension»]))>0)
<
$arr = explode(«.»,$fname);
$NEWS_ID = intval($arr[0]);

>
require($_SERVER[«DOCUMENT_ROOT»].»/bitrix/modules/main/include/epilog.php»);
?>

Наверх

Как отключить определение языка пользователя
В версии поставки системы в файле /index.php помещен скрипт, определяющий язык пользователя и производящий включение соответствующего файла: / /index.php

Самым логичным решением для вас является:
1. определить русский язык в настройках сайта, как язык по умолчанию.
2. скопировать содержимое каталога «/» с поддиректориями в корень сайта
3. определить папку русского языка, как папку корня, «/»

Наверх

Опция: «Закрыть публичную часть сайта». Изменение приветственной страницы.
Чтобы изменить вид этой страницы, необходимо создать файл с именем «/bitrix/php_interface/include/site_closed.php» для всех языков или для конкретного языка с именем «/bitrix/php_interface/»код языка»/site_closed.php».

В этом файле можно разместить любое новое содержимое страницы с информацией о временном закрытии сайта (например, форма авторизации в дизайне сайта и т.п.).

Источник

Как подключить и установить...
Adblock
detector