Генерация полных URL-адресов на Eleventy и Netlify

Я работаю над блогом и веб-сайтом на основе Eleventy. Функции обмена в социальных сетях, такие как Facebook OpenGraph и карты Twitter, необходимо иметь полные абсолютные URL-адреса для таких ресурсов, как изображения. Twitter особенно отвергает любые относительные URL-адреса изображений.

Предлагает ли Eleventy собственный способ создания полных URL-адресов? Поскольку Eleventy - это статический сайт, созданный, в отличие от размещенного веб-сервера, он не может получать эту информацию из заголовков HTTP, как другие системы. Сайт размещен на Netlify, если Netlify предоставляет какие-либо инструменты для генерации URL-адресов из JS. У меня уже есть несколько задач по созданию изображений с измененным размером с помощью Gulp.

В настоящее время я просто использую свою собственную конфигурацию на сайте, подобную этой, для генерации URL-адресов в шаблонах Nunjucks:

{# page_twitter_image is a site root relative path to the image #}
{% if page_twitter_image %}
<meta name="twitter:image" content="{{ site_base_url }}{{ page_twitter_image }}" />
{% endif %}

Подробнее о создании URL-адресов здесь.


person Mikko Ohtamaa    schedule 19.02.2020    source источник


Ответы (3)


Насколько мне известно (на основе документов: https://www.11ty.dev/docs/data/#page-variable-contents) ответ отрицательный. Я думаю, что ваше решение имеет смысл.

Я подаю справку, чтобы можно было получить к этому доступ. Я думаю, это должно быть доступно в данных страницы и, возможно, через шорткоды / фильтры.

person Raymond Camden    schedule 25.02.2020
comment
Спасибо, Раймонд. Я ожидал, что фильтр url работает в Django и других, но был удивлен, что он не делает абсолютных URL-адресов. Затем я понял, что с текущей моделью развертывания Eleventy это невозможно. Но я думаю, что должно быть решение, которое работает с разными генераторами сайтов, например. переменная окружения. Не уверен, что Netlify deploy уже его устанавливает. - person Mikko Ohtamaa; 26.02.2020
comment
Я добавил ER, чтобы добавить эту поддержку (ну, чтобы запросить ее;) - person Raymond Camden; 26.02.2020

Официальный плагин RSS включает очень простой фильтр Nunjuck absoluteUrl. Если вы добавите этот плагин, ваш код может быть:

<meta name="twitter:image" content="{{ page_twitter_image | url | absoluteUrl(site_base_url) }}" />

Небольшое улучшение разборчивости, но, полагаю, более перспективное.

person gerwitz    schedule 29.02.2020

| Фильтр URL-адресов предварительно отложит базовый URL-адрес сайта до предполагаемой строки URL-адреса.

person baHI    schedule 13.03.2021