Оптимизация изображений «на лету» в Битрикс

Как правило, одним из важных пунктов при проверке сайта через Google Page Speed является оптимизация изображений на сайте. В основном контент-менеджеры, клиенты или сами разработчики загружают на сайт изображения «как есть», хотя в них содержится куча лишней информации, которую можно безболезненно удалить и качество при этом не пострадает. Загружать по одной картинке или даже пачкой на сторонний ресурс, выкачивать их и грузить на сайт долго и муторно. Есть способ поинтереснее.  Читать далее «Оптимизация изображений «на лету» в Битрикс»

Как создать реальный заказ в 1 клик на d7

Когда-то пришлось столкнуться с необходимости создания реального заказа в Битриксе при покупки в 1 клик. Для формы я использовал веб-форму и компонент from.result.new, соответственно отлваливал событие создания результата формы и на нём генерировал заказ. Но, по большому счёту, где будет точка входа это дело техники и конкретной задачи. В статье я опущу детали, как получал данные по заполненной форме и напишу только о создании заказа. Читать далее «Как создать реальный заказ в 1 клик на d7»

Как заставить композит работать на страницах умного фильтра

Проблема возникает, потому что при выбранном фильтре компонент catalog.smart.filter голосует «против» и композит перестаёт работать. Cовет подойдёт тем, кто использует catalog.smart.filter в шаблоне комплексного компонента, например, section.php.

Что бы заставить композит работать на страницах фильтрации, нужно умный фильтр завернуть во frame:

 

$frame = $this->createFrame()->begin('');
$APPLICATION->IncludeComponent('bitrix:catalog.smart.filter', 'v1', [
    'IBLOCK_TYPE' => $arParams['IBLOCK_TYPE'],
    'IBLOCK_ID' => $arParams['IBLOCK_ID'],
    'SECTION_ID' => $arResult['VARIABLES']['SECTION_ID'],
    'FILTER_NAME' => $arParams['FILTER_NAME'],
    'PRICE_CODE' => $arParams['PRICE_CODE'],
    'CACHE_TYPE' => $arParams['CACHE_TYPE'],
    'CACHE_TIME' => $arParams['CACHE_TIME'],
    'CACHE_GROUPS' => $arParams['CACHE_GROUPS'],
    'CACHE_FILTER' => $arParams['CACHE_FILTER'],
    'SAVE_IN_SESSION' => $arParams['SAVE_IN_SESSION'],
    'SECTION_CODE' => $arResult['VARIABLES']['SECTION_CODE'],
    'HIDE_NOT_AVAILABLE' => $arParams['HIDE_NOT_AVAILABLE'],
    'CONVERT_CURRENCY' => $arParams['CONVERT_CURRENCY'],
    'CURRENCY_ID' => $arParams['CURRENCY_ID'],
    'SEF_MODE' => $arParams['SEF_MODE'],
    'SEF_RULE' => $arResult['FOLDER'] . $arResult['URL_TEMPLATES']['smart_filter'],
    'SMART_FILTER_PATH' => $arResult['VARIABLES']['SMART_FILTER_PATH'],
    'PAGER_PARAMS_NAME' => $arParams['PAGER_PARAMS_NAME'],
    'DISPLAY_ELEMENT_COUNT' => 'Y',
    ], $component, ['HIDE_ICONS' => 'Y']);
$frame->end();

Правда, при использовании такого метода нужно поставить размер кеша соответствующий кол-ву возможных закешированных страниц. Я ставлю обычно 2Гб.

Как научить свой модуль Битрикс вызывать самого себя

Такой себе «хак» для того, что бы не вызывать Loader::includeModule(); в коде проекта, если нужно что бы модуль подключался на всех страницах сайта. Сейчас я пробую практику, когда все функции, обработчики и константы упаковываю в модуль. Соответственно, нужно что бы модуль вызывался на всех страницах сайта, но самостоятельно вызывать его не очень хотелось. Читать далее «Как научить свой модуль Битрикс вызывать самого себя»

Битрикс

Фильтрация по пользовательским свойствам getList на D7

Когда-то давно разработчики Битрикс обещали лёгкую выборку пользовательских свойств из инфоблка на «новом ядре D7». Много времени прошла. Новое ядро уже не такое уж и новое, а подвижек в этом вопросе всё нет.

Всё-таки выход есть Читать далее «Фильтрация по пользовательским свойствам getList на D7»