суббота, 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 г.

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

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

воскресенье, 19 января 2014 г.

Отложенные функции

В битриксе имеется функционал отложенных функций. В идеале он должен работать как: http://dev.1c-bitrix.ru/learning/course/?COURSE_ID=43&LESSON_ID=3489.

Но у меня почему-то так заставить его работать не получается. В очередной раз пытаясь понять как мне вывести код до того, как отработает компонент, генерящий этот код, с подсказки коллеги обнаружил следующие обертки над функционалом отложенных функций:
1. CMain::ShowViewContent($view_name) - функция, выводящая контент, который будет сгенерирован позже.
2. SetViewTarget($view_name) - функция, начинающая буферизацию контента в область с именем $view_name.
3. EndViewTarget() - функция, завершающая буферизацию контента в область с именем $view_name, указанную предыдущим вызовом setViewTarget.