Примеры небольших, но часто крайне полезных php сниппетов для Битрикса.
Bitrix CMS:
Набор полезных рецептов для Bitrix
Как сбросить пароль администратора bitrix
Способ работает, только если есть доступ к файловой системе.
Допустим, что у нас есть раздел Сервис (IBLOCK_ID = 50) и у него несколько подразделов. Один из них, например, акции (SECTION_ID = 44).
Компонент bitrix:news.list не принимает параметр SECTION_ID. Но есть способ решить эту проблему.
В какой-то "прекрасный" момент начали поступать жалобы, что письма с сайта не всем приходят. При более детальном рассмотрении, оказалось, что не приходят только на ящики @gmail.com.
В логах по ним было сообщение: Messages missing a valid messageId header are not 550 5.7.1 accepted., оказалось, что с сайта уходят письма без заголовка Message-ID.
При обновлении Битрикса получил ошибку:
MySQL Query Error: CREATE TABLE b_sale_cashbox_check_correction( ID int(11) unsigned not null auto_increment, CHECK_ID int(11) not null, CORRECTION_TYPE varchar(50) not null, DOCUMENT_NUMBER varchar(35) not null, DOCUMENT_DATE date not null, DESCRIPTION varchar(255) default '', CORRECTION_PAYMENT text default '', CORRECTION_VAT text default '', PRIMARY KEY (ID) ) [[1101] BLOB, TEXT, GEOMETRY or JSON column 'CORRECTION_PAYMENT' can't have a default value]
Решение - нужно создать эту таблицу "руками":
CREATE TABLE b_sale_cashbox_check_correction( ID int(11) unsigned not null auto_increment, CHECK_ID int(11) not null, CORRECTION_TYPE varchar(50) not null, DOCUMENT_NUMBER varchar(35) not null, DOCUMENT_DATE date not null, DESCRIPTION varchar(255) default '', CORRECTION_PAYMENT text, CORRECTION_VAT text, PRIMARY KEY (ID) )
Частая проблема письма с сайта не доходят и не всегда понятно, проблема в сайте, хостинге, промежуточных сервисах или даже конечном ящике получателя. В данной заметке расскажу как можно проверить, что письма ушли из Битрикса.
Отправка писем, попадет в журнал событий Битрикса. Хранятся все события в таблице b_event, посмотреть значения можно через Настройки - Производительность - Таблицы (/bitrix/admin/perfmon_table.php?lang=ru&table_name=b_event)
Для событий отправки писем нужно смотреть на поле SUCCESS_EXEC Возможные статусы:
SUCCESS_EXEC = Y — сообщение отправлено.
SUCCESS_EXEC = N — не обработано событие (а значит не отправлено)
SUCCESS_EXEC = 0 — не найден шаблон (указан не верный шаблон)
SUCCESS_EXEC = F — надо смотреть логи отправки сервера или хостинга.
Основное на что стоит обратить внимание, что SUCCESS_EXEC = N не значит, что письмо вообще не оправлено, это текущий статус, и если отправка настроена на cron (по расписанию) или на хиты, то нужно подождать перед тем, как проверять статус!
Часто бывает нужно вывести в определенном месте содержимое какого-либо файла, require в случаи Битрикса это плохая идея, т.к. такие области нельзя будет редактировать через WYSIWYG-редактор.
Поэтому стоит использовать:
<?$APPLICATION->IncludeFile(SITE_DIR . "include/contacts.php", Array(), Array("MODE"=>"html"));?>
Как в Bitrix вызвать 404 ошибку
Если, при заходе на определенную, например, тестовую страницу, нужно выдавать 404, то нам поможет такой код:
<?php // Header require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php"); if (!defined("ERROR_404")) define("ERROR_404", "Y"); \CHTTP::setStatus("404 Not Found"); if ($APPLICATION->RestartWorkarea()) { require(\Bitrix\Main\Application::getDocumentRoot()."/404.php"); die(); }
Файл 404.php должен быть в корне сайта.
Установка битрикса
Довольно обыденная задача - установка демоверсии магазина на Битриксе, например, на VPS. В целом все просто, но есть пара моментов.
У Битрикса существует богатый каталог расширений, но поставить их можно только если активна лицензия.
Также стоит учитывать, если лицензии нет и CMS Bitrix не обновляется, то расширения могут не заработать на старых версиях php.
Именно так и получилось, при установке расширения "Долями".