Редирект всех URL одного домена на другой

Задача: перенаправлять все запросы со старого домена на новый, т.е. относительная часть URL сохраняется, меняется только домен.

Решение — настроить редирект через .htaccess.

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} robots.txt$ [NC]
RewriteRule ^([^/]+) $1 [L]
 
RewriteCond %{HTTP_HOST} ^old_site\.ru
RewriteRule ^(.*)$ http://new_site.ru/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www.old_site\.ru
RewriteRule ^(.*)$ http://new_site.ru/$1 [R=301,L]

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

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

Чистый код: создание, анализ и рефакторинг. Библиотека программиста. Мартин Р.

Книга, которую стоит время от времени перечитывать. Хотя бы раз в год. Моя оценка 9 из 10.

Приемы объектно-ориентированного проектирования. Паттерны проектирования

Авторы: Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес — так называемая «банда четырёх». Легендарная книга в целом и для меня в частности. Можно сказать, настольная книга. Однозначно 10 из 10.

Мэтт Зандстра, PHP: объекты, шаблоны и методики программирования

Для меня одна из первых книг по ООП на PHP. Зашла не с первого раза, но всё же. Тема ООП и шаблонов неплохо раскрыта, моя оценка 7 из 10.

Как создать реальный заказ в 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»