Настройка AMP-страниц для 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка AMP-страниц для 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1181
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    813
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка AMP-страниц для 1С-Битрикс

AMP (Accelerated Mobile Pages) — это HTML-подмножество Google с жёсткими ограничениями: никаких кастомных JavaScript, только разрешённые компоненты, CSS не более 75KB inline. Для Битрикса это означает, что нельзя использовать ни jQuery, ни BX.ajax, ни стандартные JS-компоненты. AMP-страница — это отдельный шаблон, который живёт параллельно с обычным сайтом.

Нужен ли AMP в 2024 году

Google убрал AMP-молнию из поисковой выдачи в 2021 году. Преимущество AMP сейчас — это кеш Google (google.com/amp/s/...) и скорость отдачи с CDN Google. Для новостных сайтов и блогов на Битриксе AMP всё ещё даёт прирост в Core Web Vitals. Для интернет-магазинов — спорно: AMP не поддерживает полноценную корзину и checkout, только информационные страницы.

Структура AMP-шаблона в Битриксе

AMP-страница отдаётся по тому же URL с параметром ?amp=1 или на отдельном поддомене. Первый вариант проще — один шаблон сайта, переключение в прологе:

// /bitrix/templates/ШАБЛОН/header.php
if (!empty($_GET['amp'])) {
    define('IS_AMP', true);
    // Подключить AMP-шаблон
    include __DIR__ . '/amp_header.php';
    return;
}

AMP требует специфического <html ⚡> или <html amp> и набора обязательных тегов:

<!doctype html>
<html ⚡ lang="ru">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
    <link rel="canonical" href="<?= $canonicalUrl ?>">
    <script async src="https://cdn.ampproject.org/v0.js"></script>
    <style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both}...</style>
    <noscript><style amp-boilerplate>body{-webkit-animation:none}</style></noscript>
    <style amp-custom>
        /* Весь CSS страницы — не более 75KB */
    </style>
</head>

Изображения и медиа через amp-img

В AMP нельзя использовать тег <img> — только <amp-img>. Обязательны атрибуты width и height. В шаблоне catalog.element для AMP:

$img = \CFile::GetFileArray($arResult['DETAIL_PICTURE']);
$w = $img['WIDTH'] ?: 800;
$h = $img['HEIGHT'] ?: 800;
?>
<amp-img src="<?= absoluteImageUrl($img['SRC']) ?>"
         width="<?= $w ?>" height="<?= $h ?>"
         alt="<?= htmlspecialcharsEx($arResult['NAME']) ?>"
         layout="responsive">
</amp-img>

Для галереи используется amp-carousel:

<script async custom-element="amp-carousel"
    src="https://cdn.ampproject.org/v0/amp-carousel-0.1.js"></script>

<amp-carousel width="400" height="400" layout="responsive" type="slides">
    <?php foreach ($slides as $slide): ?>
    <amp-img src="<?= $slide['src'] ?>" width="400" height="400" layout="responsive"
             alt="<?= $slide['alt'] ?>"></amp-img>
    <?php endforeach; ?>
</amp-carousel>

Формы в AMP

Стандартные битриксовые формы (JS-отправка, AJAX) в AMP не работают. Для формы обратного звонка или подписки нужен amp-form:

<script async custom-element="amp-form"
    src="https://cdn.ampproject.org/v0/amp-form-0.1.js"></script>

<form method="POST" action="/local/ajax/amp-subscribe.php"
      action-xhr="/local/ajax/amp-subscribe.php">
    <input type="email" name="email" placeholder="Email" required>
    <button type="submit">Подписаться</button>
    <div submit-success><template type="amp-mustache">Спасибо!</template></div>
    <div submit-error>Ошибка, попробуйте снова</div>
</form>

Обработчик /local/ajax/amp-subscribe.php должен возвращать JSON с нужными полями и устанавливать CORS-заголовки для домена ampproject.org.

Связь канонической и AMP-страницы

На обычной странице указывается ссылка на AMP:

<link rel="amphtml" href="https://example.com/catalog/product/?amp=1">

На AMP-странице — на каноническую:

<link rel="canonical" href="https://example.com/catalog/product/">

Без этой пары Google не будет использовать AMP-страницу как ускоренную версию. Проверка через Google Search Console → «Ускоренные мобильные страницы».