вторник, 24 февраля 2015 г.

Модификация капчи

В битриксе описание работы с капчей довольно краткое. Есть метод получения капчи, есть метод проверки, есть несколько методов по установке различных параметров капчи. Но если залезть в код класса капчи, то можно обнаружить, что большинство параметров можно указать с помощью соответствующих настроек модуля main. Причем в открытом доступе (на странице настроек главного модуля) я эти настройки не нашел. В этот раз меня интересовали две из них:

1. CAPTCHA_letters - настройка опредеделяет алфавит символов, которые будут использованы при генерации проверочного кода. Таким образом, можно например сделать вашу капчу на кириллице:
COption::SetOptionString('main', 'CAPTCHA_letters', 'АБВГДЕЖЗИК');
Естественно, шрифт должен быть с поддержкой кириллицы, шрифт битрикса по умолчанию, по-моему, ее не имеет.

2. CAPTCHA_arTTFFiles - настройка определяет шрифты, с помощью которых будет сгенерена картинка капчи. Шрифты ищутся в папке /bitrix/modules/main/fonts/:
COption::SetOptionString('main', 'CAPTCHA_arTTFFiles', 'my_custom_font.ttf');

Ну и чтобы не засорять модуль своими шрифтами можно сделать так:
COption::SetOptionString('main', 'CAPTCHA_arTTFFiles', '../../../templates/my_tpl/fonts/my_custom_font.ttf');
и разместить файл шрифта в шаблоне my_tpl вашего сайта.

суббота, 15 ноября 2014 г.

Расширение почтовых шаблонов

Вообще невозможность сделать это является камнем преткновения в шаблонах почтовых сообщений Битрикс.
В шаблонах нельзя задавать циклы! Циклы в почтовых шаблонах задавать нельзя!
Если, например, в письме рассылать список товаров, то приходится либо захардкодить все html-оформление, либо вынести шаблон товара например в языковой файл.
В любом случае требуется какое-то взаимодействие с кодом.

Однажды я решил понять, как же засунуть в шаблоны циклы. Как оказалось - это возможно и я даже реализовал простейший модуль, в котором сторонний шаблонизатор обрабатывает свой блок разметок и отдает контент обратно в шаблон Битрикс.

Тем кому не терпится скачать - ссылка на github. Краткое README там имеется, но я еще его тут повторю.

пятница, 31 октября 2014 г.

Дополнительные страницы каталога в комплексном компоненте

Однажды на проекте возникла задача следующего характера:
для детальных страниц товара требовались несколько вариантов отображения контента, например, у нас есть страница товара с вкладками - Описание, Характеристики, Отзывы по урлу /catalog/product_id.htm.
Изначально открыта вкладка "Описание" (дефолтная).

Требуется на клик по вкладкам  описание, характеристика, отзывы переходить на страницы с урлами:
/catalog/product_id.htm - дефолтная вкладка
/catalog/product_id/params- открыта вкладка "Характеристики"
/catalog/product_id/reviews - открыта вкладка "Отзывы"

Уточняю, это именно разные страницы (например, со своими SEO-тегами), никакой подгрузки аяксом, HistoryAPI и прочего.

Решение следующее:

среда, 27 августа 2014 г.

Удивления новым ядром пост

Как выяснилось путем экспериментов (на bitrix 14.5.3) новое ядро D7 позволяет добавить в инфоблок элемент, без указания ИД инфоблока:

CModule::IncludeModule('iblock');
$r = \Bitrix\Iblock\ElementTable::add(array(
    'NAME' => 'new_login_100',
    'ACTIVE' => 'Y'
));
var_dump($r->isSuccess()); // true
var_dump($r->getErrorMessages()); // empty array


Результатом операции будет запись в b_iblock_element, у которой поле IBLOCK_ID будет равно 0.
Теперь можно прятать в b_iblock_element результаты неудавшихся экспериментов, и никто их не найдет, муохохохо. #SARCASM

суббота, 8 марта 2014 г.

пятница, 7 февраля 2014 г.

Кастомный тип свойства инфоблока

Привет, котаны! Сегодня я расскажу вам как запилить собственный тип для свойства для инфоблоков Битрикса.
Вообще, в битриксовых инфоблоках уже достаточно типов свойств - и числа, и строки, и привязки к пользователям, форумным темам и прочему. Но может случиться так, что потребуется совершенно иной тип свойства, ранее не поддерживаемый битриксом. Такой тип можно создать.
Например, может потребоваться привязать к каждому элементу инфоблока почтовый шаблон битрикса.