Версии пакетов composer в ядре Bitrix

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

Читать дальше…

Вебвизор Яндекс.Метрики, X-Frame-Options и защита фреймов

Для работы Вебвизора от Яндекс.Метрики необходима возможность отображения сайта во фрейме на сторонних сайтах. Модуль проактивной защиты Битрикса в целях безопасности добавляет заголовок X-Frame-Options: SAMEORIGIN, явно запрещающий это делать. Посмотрим, что можно сделать, если аналитика нужна, а жертвовать защитой ради этого не хочется.

Читать дальше…

Исправляем ошибку обновления «Statement violates GTID consistency»

При обновлении старых версий битрикса можно столкнуться с ошибкой

Некоторые обновления не были установлены

Ошибка в updater’e 18.5.500 модуля main: [1786] Statement violates GTID consistency: CREATE TABLE … SELECT.. Установка обновлений модуля main прервана. [CL04] Ошибка обновления модулей.

Проблема возникает, если вы используете репликацию MySQL на базе GTID. Конструкция СREATE TABLE … SELECT запрещена, т.к. существует неоднозначность при записи этой транзакции в binlog в зависимости от настроек мастера и слейва.

Читать дальше…

Копирование инфоблоков в Битриксе

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

Читать дальше…

Расчет стоимости корзины с учетом купона на d7

При классическом использовании функционала работы с купонами в Битриксе, размер скидки и обновление цен в корзине происходит в момент сохранения заказа. До этого момента объект Basket содержит «исходную» цену товара, а DiscountCouponsManager знает о примененных купонах.

Разбираемся, как показывать цену товаров в корзине до момента оформления заказа с учетом примененных скидок.

Читать дальше…

Чеклист: готовим Битрикс к Kubernetes

Все новые проекты, включая разработанные на 1c-bitrix, мы в компании разворачиваем в Kubernetes. Изначально это кажется довольно сложным процессом, но, при должном подходе все проблемы в итоге решаемы и можно с уверенностью сказать — проекты на битриксе корректно разворачиваются и работают в инфраструктуре k8s.

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

Читать дальше…

Исправляем падение ядра Bitrix при добавлении параметра USER_FIELD_MANAGER

Главный модуль ядра 1с-Битрикс версии 22.100 подвержен ошибке — при добавлении get-параметра ?USER_FIELD_MANAGER=1 в любую ссылку сайт падает в exception вида

[Error] 
Call to a member function getEntityList() on string (0)
/var/www/public/bitrix/modules/main/lib/orm/entity.php:324
#0: Bitrix\Main\ORM\Entity->postInitialize()
	/var/www/public/bitrix/modules/main/lib/orm/entity.php:129
#1: Bitrix\Main\ORM\Entity::getInstanceDirect(string)
	/var/www/public/bitrix/modules/main/lib/orm/entity.php:107
...
----------
Читать дальше…

Сохранение данных веб-формы в Google таблицы

Таблицы Google представляют собой удобный инструмент совместного просмотра\редактирования каких-либо данных. При помощи небольшого скрипта в Google Apps мы напишем обработчик, который будет служить action’ом для любой формы на сайте и сохранять информацию в google-таблицу. Его можно использовать, например, для абсолютно анонимного опроса, отправляя данные из формы сразу в облако, минуя backend-часть сайта. Читать дальше…

Программно отключить NTLM авторизацию

Иногда, после разворачивания копии портала Битрикс, NTLM-авторизация становится недоступна и поэтому невозможно зайти в админку сайта. Авторизация через CUser::Authorize в этом случае тоже не работает.

Код ниже поможет программно выключить NTLM:

<?php

$_SERVER["DOCUMENT_ROOT"] = '/home/bitrix/www/';
$DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"];
define("NO_KEEP_STATISTIC", true);
define("NOT_CHECK_PERMISSIONS",true);
define('BX_NO_ACCELERATOR_RESET', true);
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");
if (!CModule::IncludeModule('ldap')) {
    return false;
}
CLdapUtil::UnSetBitrixVMAuthSupport(true);
echo 'Ntlm auth off';

Facebook API: публикация записей в ленту групп и страниц

Facebook API дает возможность размещать информацию на страницах или в группах FB без участия редактора. Например, автоматически публиковать в соцсети новости сайта сразу после их появления. Под катом пример интеграции самой актуальной на данный момент библиотеки FB SDK for PHP v5.0.0 и описание популярных ошибок ее использования. Читать дальше…