Яндекс кэширование yandex-manifest.json, настраиваем для Drupal

  

Какой русский не любит быстрой езды.

Кэширование от Ядекса

Не так давно Яндекс ввел турбо-страницы и .возможность для разработчиков сайтов дать знать Яндекс Браузеру какой именно контент нужно кэшировать, давайте рассмотрим реализацию для CMS Drupal.

Официальная документация от Яндекс

Документация находиться здесь, она достаточно проста для изучения, так что не будем на этом заострять внимание. По сути нам нужно будет создать файл yandex-manifest.json в корне Вашего сайта, написать в нем инструкции и затем добавить тег <link rel="manifest" href="yandex-manifest.json" /> в head Вашего сайта.

Файл yandex-manifest.json

Следуя инструкции Яндекса, создайте файл yandex-manifest.json в корне Вашего сайта и заполните необходимы параметры, рекомендую добавить в resource все CSS файлы Вашей темы оформления, а так же фоновые изображения и изображения которые часто используются на Вашем сайте, так же, при необходимости, можно добавить JS файлы.

Привожу как пример yandex-manifest.json для моего сайта:

{
    "name": "Сайт Drupal девелопера. Обучающие материалы по Drupal и веб-разработке. Разработка, темизация, оптимизация. | iQis.ru",
    "lang": "ru",
    "icons": [
        {
            "src": "https://iqis.ru/themes/iqis/favicon.png",
            "sizes": "56x52",
            "type": "image/png"
        }
    ],
    "start_url": "https://iqis.ru/",
    "scope": "https://iqis.ru/",
    "yandex": {
        "manifest_version": 1,
        "app_version": "1.0.0",
        "cache": {
            "resources": [
                "/themes/iqis/css/adaptive.css",
                "/themes/iqis/css/articles.css",
                "/themes/iqis/css/blog.css",
                "/themes/iqis/css/colorbox.css",
                "/themes/iqis/css/comments.css",
                "/themes/iqis/css/modals.css",
                "/themes/iqis/css/nodes.css",
                "/themes/iqis/css/recipes.css",
                "/themes/iqis/css/style.css",
                "/themes/iqis/css/user.css",
                "/themes/iqis/img/bg/brain-color-white-1.png",
                "/themes/iqis/img/bg/brain-color-white-2.png",
                "/themes/iqis/img/bg/brain-color-white.png",
                "/themes/iqis/img/bg/brain-color.png",
                "/themes/iqis/img/bg/coffee-mug.png",
                "/themes/iqis/img/bg/eggs.png",
                "/themes/iqis/img/bg/iphone.png",
                "/themes/iqis/img/bg/keyboard.png",
                "/themes/iqis/img/bg/knife.png",
                "/themes/iqis/img/bg/letters.png",
                "/themes/iqis/img/bg/maintenance.png",
                "/themes/iqis/img/bg/mouse.png",
                "/themes/iqis/img/bg/papper.png",
                "/themes/iqis/img/bg/salat.png",
                "/themes/iqis/img/bg/typewriter.png",
                "/themes/iqis/img/bg/wood.jpg"
            ]
        }
    }
}

Не забудьте проверить манифест на корректность и отсутствие ошибок https://turboapps.yandex.ru/console/check-manifest

Добавляем тег link в head Вашего сайта

Существует несколько способов это сделать, мы рассмотрим два, с помощью модуля и с помощью темы оформления.

Через модуль

Для этого Вам нужно будет открыть your-module.module файл, где your-module - это название Вашего модуля. Затем добавить следующий хук.

/**
 * Implements hook_page_attachments().
 */
function your_module_page_attachments(array &$page) {
  $yandexCache = [
    '#tag' => 'link',
    '#attributes' => [
      'rel' => 'manifest',
      'href' => 'yandex-manifest.json',
    ],
  ];

  $page['#attached']['html_head'][] = [$yandexCache, 'manifest'];
}

После этого сохраните изменения и очистите кеш сайта, все готово!

Через тему оформления

Для этого Вам нужно будет открыть your-theme.theme файл, где your-theme - это название Вашей темы оформления. Затем добавить следующий хук.

/**
 * Implements hook_preprocess_html().
 */
function your_theme_preprocess_html(&$variables) {
  $yandexCache = [
    '#tag' => 'link',
    '#attributes' => [
      'rel' => 'manifest',
      'href' => 'yandex-manifest.json',
    ],
  ];

  $page['#attached']['html_head'][] = [$yandexCache, 'manifest'];
}

После этого сохраните изменения и очистите кеш сайта, все готово!

Если у Вас появились вопросы, не стесняйтесь пишите мне!
Оставьте Ваш комментарий