AMP-страницы для Битрикса

С каждым годом больше и больше увеличивается доля мобильного трафика в общем количестве заходов в интернет-магазины. Очевидно, что для решения проблемы «отказов» и повышения конверсии, следует смотреть в сторону ускорения загрузки товарных страниц сайта для мобильных пользователей. Одним из возможных решений является технология AMP (Ускоренных мобильных страниц) от Google. В данной статье рассматривается внедрение их для сайта на битриксе. 

Ускоренные мобильные страницы для Битрикса. С чего начать?

Сразу стоит оговориться, что автор данной статьи, в целях экономии времени, использовал для интеграции AMP на сайт готовое решение, которое нашел в маркетплейсе битрикса. Но, если вы решите проделать весь путь самостоятельно, то ниже приведен примерный алгоритм действий для разработки AMP под битрикс.

Итак, с чего же, всё-таки начать?

Прежде всего, стоит понимать,  что AMP для интернет-магазина на битриксе — это, в первую очередь, отдельный шаблон, который соответствует требованиям к AMP-разметки от гугл: https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/?referrer=ampproject.org

Соответственно, нужно будет разработать полноценный AMP-френдли шаблон, в т.ч. с шаблонами компонентов каталога. Помочь с решение данной задачи может валидатор AMP от Google: https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/?referrer=ampproject.org

Предположим, что шаблон разработан. Всё удачно, он проходит валидацию «на ура». Следующим шагом будет создание папки, в которой будет вызван каталог с AMP-шаблоном. Например, эту папку можно назвать «amp». Вызов каталога в этой папке будет примерно следующим (т.е., по факту, просто вызов компонента с нужным шаблоном):

<?$APPLICATION->IncludeComponent(
    "bitrix:catalog",
    "amp",
    Array(
        "ACTION_VARIABLE" => "action",
        "ADD_ELEMENT_CHAIN" => "N",
        "ADD_PICT_PROP" => "MORE_PHOTO",
        "ADD_PROPERTIES_TO_BASKET" => "Y",
        "ADD_SECTIONS_CHAIN" => "Y",
        "AJAX_MODE" => "N",
        "AJAX_OPTION_ADDITIONAL" => "",
        "AJAX_OPTION_HISTORY" => "N",
        "AJAX_OPTION_JUMP" => "N",
        "AJAX_OPTION_STYLE" => "N",
        "BASKET_URL" => "/personal/",
        "BIG_DATA_RCM_TYPE" => "personal",
        "CACHE_FILTER" => "Y",
        "CACHE_GROUPS" => "Y",
        "CACHE_TIME" => "36000000",
        "CACHE_TYPE" => "A",
        "COMMON_ADD_TO_BASKET_ACTION" => "ADD",
        "COMMON_SHOW_CLOSE_POPUP" => "N",
        "COMPATIBLE_MODE" => "Y",
        "CONVERT_CURRENCY" => "Y",
        "CURRENCY_ID" => "RUB",
        "DETAIL_ADD_DETAIL_TO_SLIDER" => "N",
        "DETAIL_ADD_TO_BASKET_ACTION" => array("BUY"),
        "DETAIL_ADD_TO_BASKET_ACTION_PRIMARY" => array("BUY"),
        "DETAIL_BACKGROUND_IMAGE" => "-",
        "DETAIL_BRAND_USE" => "N",
        "DETAIL_BROWSER_TITLE" => "-",
        "DETAIL_CHECK_SECTION_ID_VARIABLE" => "N",
        "DETAIL_DETAIL_PICTURE_MODE" => array("POPUP","MAGNIFIER"),
        "DETAIL_DISPLAY_NAME" => "Y",
        "DETAIL_DISPLAY_PREVIEW_TEXT_MODE" => "E",
        "DETAIL_IMAGE_RESOLUTION" => "16by9",
        "DETAIL_MAIN_BLOCK_PROPERTY_CODE" => array(),
        "DETAIL_META_DESCRIPTION" => "-",
        "DETAIL_META_KEYWORDS" => "-",
        "DETAIL_PROPERTY_CODE" => array("",""),
        "DETAIL_SET_CANONICAL_URL" => "N",
        "DETAIL_SET_VIEWED_IN_COMPONENT" => "N",
        "DETAIL_SHOW_POPULAR" => "Y",
        "DETAIL_SHOW_SLIDER" => "N",
        "DETAIL_SHOW_VIEWED" => "Y",
        "DETAIL_STRICT_SECTION_CHECK" => "Y",
        "DETAIL_USE_COMMENTS" => "N",
        "DETAIL_USE_VOTE_RATING" => "N",
        "DISABLE_INIT_JS_IN_COMPONENT" => "Y",
        "DISPLAY_BOTTOM_PAGER" => "Y",
        "DISPLAY_TOP_PAGER" => "Y",
        "ELEMENT_SORT_FIELD" => "sort",
        "ELEMENT_SORT_FIELD2" => "id",
        "ELEMENT_SORT_ORDER" => "asc",
        "ELEMENT_SORT_ORDER2" => "desc",
        "FILTER_FIELD_CODE" => array("",""),
        "FILTER_HIDE_ON_MOBILE" => "N",
        "FILTER_NAME" => "",
        "FILTER_PRICE_CODE" => array("BASE"),
        "FILTER_PROPERTY_CODE" => array(),
        "FILTER_VIEW_MODE" => "VERTICAL",
        "GIFTS_DETAIL_BLOCK_TITLE" => "Выберите один из подарков",
        "GIFTS_DETAIL_HIDE_BLOCK_TITLE" => "N",
        "GIFTS_DETAIL_PAGE_ELEMENT_COUNT" => "4",
        "GIFTS_DETAIL_TEXT_LABEL_GIFT" => "Подарок",
        "GIFTS_MAIN_PRODUCT_DETAIL_BLOCK_TITLE" => "Выберите один из товаров, чтобы получить подарок",
        "GIFTS_MAIN_PRODUCT_DETAIL_HIDE_BLOCK_TITLE" => "N",
        "GIFTS_MAIN_PRODUCT_DETAIL_PAGE_ELEMENT_COUNT" => "4",
        "GIFTS_MESS_BTN_BUY" => "Выбрать",
        "GIFTS_SECTION_LIST_BLOCK_TITLE" => "Подарки к товарам этого раздела",
        "GIFTS_SECTION_LIST_HIDE_BLOCK_TITLE" => "N",
        "GIFTS_SECTION_LIST_PAGE_ELEMENT_COUNT" => "4",
        "GIFTS_SECTION_LIST_TEXT_LABEL_GIFT" => "Подарок",
        "GIFTS_SHOW_DISCOUNT_PERCENT" => "Y",
        "GIFTS_SHOW_IMAGE" => "Y",
        "GIFTS_SHOW_NAME" => "Y",
        "GIFTS_SHOW_OLD_PRICE" => "Y",
        "HIDE_NOT_AVAILABLE" => "N",
        "HIDE_NOT_AVAILABLE_OFFERS" => "N",
        "IBLOCK_ID" => "228",
        "IBLOCK_TYPE" => "catalog",
        "INCLUDE_SUBSECTIONS" => "Y",
        "INSTANT_RELOAD" => "N",
        "LABEL_PROP" => array(),
        "LAZY_LOAD" => "N",
        "LINE_ELEMENT_COUNT" => "3",
        "LINK_ELEMENTS_URL" => "link.php?PARENT_ELEMENT_ID=#ELEMENT_ID#",
        "LINK_IBLOCK_ID" => "",
        "LINK_IBLOCK_TYPE" => "",
        "LINK_PROPERTY_SID" => "",
        "LIST_BROWSER_TITLE" => "-",
        "LIST_ENLARGE_PRODUCT" => "STRICT",
        "LIST_META_DESCRIPTION" => "-",
        "LIST_META_KEYWORDS" => "-",
        "LIST_PRODUCT_BLOCKS_ORDER" => "",
        "LIST_PRODUCT_ROW_VARIANTS" => "[{'VARIANT':'2','BIG_DATA':false},{'VARIANT':'2','BIG_DATA':false},{'VARIANT':'2','BIG_DATA':false},{'VARIANT':'2','BIG_DATA':false},{'VARIANT':'2','BIG_DATA':false},{'VARIANT':'2','BIG_DATA':false},{'VARIANT':'2','BIG_DATA':false},{'VARIANT':'2','BIG_DATA':false},{'VARIANT':'2','BIG_DATA':false},{'VARIANT':'2','BIG_DATA':false}]",
        "LIST_PROPERTY_CODE" => array("",""),
        "LIST_PROPERTY_CODE_MOBILE" => array(),
        "LIST_SHOW_SLIDER" => "N",
        "LIST_SLIDER_INTERVAL" => "3000",
        "LIST_SLIDER_PROGRESS" => "N",
        "LOAD_ON_SCROLL" => "N",
        "MESSAGE_404" => "",
        "MESS_BTN_ADD_TO_BASKET" => "В корзину",
        "MESS_BTN_BUY" => "Купить",
        "MESS_BTN_COMPARE" => "Сравнение",
        "MESS_BTN_DETAIL" => "Подробнее",
        "MESS_BTN_SUBSCRIBE" => "Подписаться",
        "MESS_COMMENTS_TAB" => "Комментарии",
        "MESS_DESCRIPTION_TAB" => "Описание",
        "MESS_NOT_AVAILABLE" => "Нет в наличии",
        "MESS_PRICE_RANGES_TITLE" => "Цены",
        "MESS_PROPERTIES_TAB" => "Характеристики",
        "PAGER_BASE_LINK_ENABLE" => "N",
        "PAGER_DESC_NUMBERING" => "N",
        "PAGER_DESC_NUMBERING_CACHE_TIME" => "36000",
        "PAGER_SHOW_ALL" => "N",
        "PAGER_SHOW_ALWAYS" => "N",
        "PAGER_TEMPLATE" => "pager",
        "PAGER_TITLE" => "Товары",
        "PAGE_ELEMENT_COUNT" => "30",
        "PARTIAL_PRODUCT_PROPERTIES" => "N",
        "PRICE_CODE" => array("BASE"),
        "PRICE_VAT_INCLUDE" => "Y",
        "PRICE_VAT_SHOW_VALUE" => "N",
        "PRODUCT_ID_VARIABLE" => "id",
        "PRODUCT_PROPERTIES" => array(),
        "PRODUCT_PROPS_VARIABLE" => "prop",
        "PRODUCT_QUANTITY_VARIABLE" => "quantity",
        "PRODUCT_SUBSCRIPTION" => "Y",
        "SEARCH_CHECK_DATES" => "Y",
        "SEARCH_NO_WORD_LOGIC" => "Y",
        "SEARCH_PAGE_RESULT_COUNT" => "50",
        "SEARCH_RESTART" => "N",
        "SEARCH_USE_LANGUAGE_GUESS" => "Y",
        "SECTIONS_SHOW_PARENT_NAME" => "Y",
        "SECTIONS_VIEW_MODE" => "LIST",
        "SECTION_ADD_TO_BASKET_ACTION" => "ADD",
        "SECTION_BACKGROUND_IMAGE" => "-",
        "SECTION_COUNT_ELEMENTS" => "N",
        "SECTION_ID_VARIABLE" => "SECTION_ID",
        "SECTION_TOP_DEPTH" => "2",
        "SEF_FOLDER" => "/amp/",
        "SEF_MODE" => "Y",
        "SEF_URL_TEMPLATES" => Array("compare"=>"","element"=>"catalog/#ELEMENT_ID#/","section"=>"sections/#SECTION_ID#/","sections"=>"sections/","smart_filter"=>"sections/#SECTION_ID#/filter/#SMART_FILTER_PATH#/"),
        "SET_LAST_MODIFIED" => "N",
        "SET_STATUS_404" => "Y",
        "SET_TITLE" => "Y",
        "SHOW_404" => "N",
        "SHOW_DEACTIVATED" => "N",
        "SHOW_DISCOUNT_PERCENT" => "N",
        "SHOW_MAX_QUANTITY" => "N",
        "SHOW_OLD_PRICE" => "N",
        "SHOW_PRICE_COUNT" => "1",
        "SHOW_TOP_ELEMENTS" => "N",
        "SIDEBAR_DETAIL_SHOW" => "N",
        "SIDEBAR_PATH" => "",
        "SIDEBAR_SECTION_SHOW" => "N",
        "TEMPLATE_THEME" => "blue",
        "TOP_ADD_TO_BASKET_ACTION" => "ADD",
        "TOP_ELEMENT_COUNT" => "9",
        "TOP_ELEMENT_SORT_FIELD" => "sort",
        "TOP_ELEMENT_SORT_FIELD2" => "id",
        "TOP_ELEMENT_SORT_ORDER" => "asc",
        "TOP_ELEMENT_SORT_ORDER2" => "desc",
        "TOP_ENLARGE_PRODUCT" => "STRICT",
        "TOP_LINE_ELEMENT_COUNT" => "3",
        "TOP_PRODUCT_BLOCKS_ORDER" => "",
        "TOP_PRODUCT_ROW_VARIANTS" => "[{'VARIANT':'2','BIG_DATA':false},{'VARIANT':'2','BIG_DATA':false},{'VARIANT':'2','BIG_DATA':false}]",
        "TOP_PROPERTY_CODE" => array("",""),
        "TOP_PROPERTY_CODE_MOBILE" => array(),
        "TOP_SHOW_SLIDER" => "Y",
        "TOP_SLIDER_INTERVAL" => "3000",
        "TOP_SLIDER_PROGRESS" => "N",
        "TOP_VIEW_MODE" => "SECTION",
        "USE_BIG_DATA" => "N",
        "USE_COMMON_SETTINGS_BASKET_POPUP" => "N",
        "USE_COMPARE" => "N",
        "USE_ELEMENT_COUNTER" => "Y",
        "USE_ENHANCED_ECOMMERCE" => "N",
        "USE_FILTER" => "Y",
        "USE_GIFTS_DETAIL" => "N",
        "USE_GIFTS_MAIN_PR_SECTION_LIST" => "N",
        "USE_GIFTS_SECTION" => "N",

        "USE_MAIN_ELEMENT_SECTION" => "Y",
        "USE_PRICE_COUNT" => "N",
        "USE_PRODUCT_QUANTITY" => "N",
        "USE_REVIEW" => "N",
        "USE_SALE_BESTSELLERS" => "Y",
        "USE_STORE" => "N",
        "DISPLAY_CODES" => "",
        "SECTIONS_CANONICAL" => "/catalog/"
    )
);?>

Далее, нам нужно будет закрыть папку AMP от ботов Яндекса. Например, так:

User-Agent: Yandex
Disallow: /amp/

User-Agent: YandexBot
Disallow: /amp/

User-Agent: YandexMedia
Disallow: /amp/

User-Agent: YandexImages
Disallow: /amp/

User-Agent: YandexBlogs
Disallow: /amp/

User-Agent: YandexNews
Disallow: /amp/

User-Agent: YandexMetrika
Disallow: /amp/

User-Agent: YandexMarket
Disallow: /amp/

После этого нужно отправить папку /amp/ на индексацию гуглом (Удобнее всего сделать это через search console).

В целом, на этом всё. Через какое-то время AMP-страницы начнут появляться поиске (Гугл сам будет выдавать их пользователю вместо обычных страниц). Однако, если вы хотите принудительно перенаправлять мобильных пользователей на AMP-версию страниц, то вы можете попробовать настроить следующий редирект в .htaccess:

<IfModule mod_rewrite.c>
RewriteBase /
RewriteCond %{REQUEST_URI} !/amp/$ [NC]
RewriteCond %{HTTP_USER_AGENT} (android|blackberry|googlebot\-   mobile|iemobile|iphone|ipod|\#opera\ mobile|palmos|webos) [NC]
RewriteRule ^([a-zA-Z0-9-]+)([\/]*)$ https://www.yoursite.com/$1/amp/ [L,R=302]
</IfModule>

Очень вероятно, что конверсия на amp-версии будет выше, чем на обычной версии. Но, конечно, для каждого бизнеса это индивидуально и нужно тестировать этот момент.