Окружение для Bitrix сайтов средствами Docker и Docker Compose

Недавно реализовал свой вариант окружения для Bitrix сайтов с помощью Docker.

По умолчанию под капотом имеется:

  • php 7.1.32
  • apache 2.4.38
  • MySQL 5.6.45
  • все необходимые директивы php.ini
  • в контейнерах с php и MySQL для удобства поднят Midnight Commander и редактор MCEdit
  • реализована возможность поднять в одном окружении несколько сайтов и привязать их к одному IP адресу хоста (по умолчанию — 2 сайта: site1.loc и site2.loc открываются на одном IP, предварительно указанном в файле hosts)
  • установлен OPCache для быстрой работы php

Скачать и ознакомиться с подробной инструкцией можно в публичном Git репозитории: https://gitlab.com/angerro/bitrix-docker

Организация универсального обработчика Ajax запросов

Этот сниппет обработчика ajax запросов я часто использую в своих проектах.

Представим себе такую задачу: необходимо реализовать CRUD (create, update, delete) операции элементов инфоблока Битрикс. При этом сами операции должны выполняться от имени такого пользователя, который:

  • авторизован на сайте
  • принадлежит определённой группе пользователей

Операции должны инициироваться POST обращением по Ajax к определённому скрипту (обработчику аякс запроса)

Читать далее

Bitrix API правил работы с корзиной

Представим себе, что перед нами стоит следующая прикладная задача:

Есть правило работы с корзиной, применяющее 10% скидку на определённые товары:

Необходимо на уровне Bitrix API добавить в это правило еще несколько товаров. Данная задача актуальна, когда товаров много и вручную добавлять слишком трудозатратно.

Прежде чем приступить к решению задачи, стоит уточнить, что начиная с версии 16.6.0 модулей Информационные блокиТорговый каталог и Интернет-магазин, доступны объединенные скидки каталога и магазина. Соответственно после конвертации правила работы с корзиной «переплыли» с CCatalogDiscount в CSaleDiscount. В новых же версиях Битрикс необходимо пользоваться классом CSaleDiscount.

Читать далее

Ресайз изображений через обработчик событий Битрикс

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

За основу была взята Битриксовая функция ресайза CIBlock::ResizePicture

Собственно код:

Читать далее

Зоны доставки на Яндекс картах. Бесплатное решение для Битрикс от автора блога.

Всем привет! Наконец-то у меня дошли руки до реализации своего собственного решения для Битрикс Маркетплейса.

Собственно встречайте: Зоны доставки на Яндекс картах

Данное решение позволяет рисовать и отображать зоны доставки на Яндекс картах.

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