Сообщения

Сообщения за май, 2020

Битрикс: два способа отправить файл

Изображение
В битриксе с некоторых пор есть встроенный функционал для работы HTTP запросами. Т.е. не обязательно напрямую дёргать curl или привлекать какой-нибудь Guzzle . Плюс это или минус - оставлю решать каждому самостоятельно. Тут покажу два варианта, как можно отправить файл встроенным битриксовым методом. Это нужно, например, при интеграции с каким-то API. Примеров не нашлось ни в официальной документации , ни в полезном разжёвывании . Вариант в теле запроса через send() Тут надо обратить внимание на заголовок: тип "multipart/form-data"; наличие вложения в виде файла "Content-Disposition". Сам файл отправляем в теле запроса через вызов содержимого файла $file->getContents(). $result = []; // Проверяем существование файла на сервере $file = new \Bitrix\Main\IO\File(     \Bitrix\Main\Application::getDocumentRoot() . '/upload/file.zip' ); if ($file->isExists()) {     $httpClient = new HttpClient(         [  ...

Битрикс: таргетинг баннеров

Изображение
В битриксе есть встроенная сущность баннеры . Но этой сущности почему-то не повезло и тут штатно не предусмотрено вариантов пользовательских полей или подобной возможности расширить функционал. Но даже из того, что есть не всегда удобно пользоваться имеющимся функционалом из кода. Для отбора баннеров есть метод CAdvBanner::GetList() . Но к сожалению, в нём нет доступа к таким полезным параметрам, как "Разделы и страницы, только на которых должны показываться баннеры" и "Разделы и страницы, на которых не могут показываться баннеры" . Более того, для этих полезных параметров даже нет толкового описания: в каком формате тут надо вписывать значения. Так вот, указывать тут нужно относительные ссылки. Они будут искаться по маске. Т.е. если указать "/info/contacts/", то в отбор попадёт и страница "/info/contacts/shop/". Скорее всего, разработчики битрикса подразумевали, что баннерами будут пользоваться только через компонент "bitrix:advertisi...