Установка переменной URL для всех сообщений - PullRequest
0 голосов
/ 21 июня 2020

Я пытаюсь сослаться на изображение из сообщения на страницах GitHub. Я ссылался на изображения из макета, и для этого я использовал следующий код в моем _layouts/default.html:

{% assign custom_url = site.url | append: site.baseurl %}
{% assign full_base_url = custom_url | default: site.github.url %}
… href="{{ "/images/logo.png" | prepend: full_base_url }}" …

(я не уверен, как именно я справился с первыми двумя строками , но они, похоже, хорошо работают как на действующих страницах, так и в моем локальном предварительном просмотре, поэтому я склонен сохранить их семантику.)

Попытка дублировать только последнюю строку в теле сообщения не удалась, что привело к ничего не добавляется. Я предполагаю, что переменная отсутствует при рендеринге поста, только тогда, когда рендеринг подключается к макету. Использование всех трех строк в каждом посте с изображениями кажется немного повторяющимся. установка stati c значений, а не вычисляемых значений, как я делаю в своих назначениях.

Я также читал Как определять глобальные переменные в Liquid? который, похоже, решает ту же проблему с Liquid . Но вопрос очень простой и помечен для Shopify, а не для Jekyll, поэтому некоторые ответы не кажутся мне применимыми. Суть, которую я получаю из ответов, заключается в том, что, возможно, я смогу где-то включить некоторые «фрагменты», но я понятия не имею, как это сделать, не говоря уже о том, чтобы сделать это таким образом, чтобы не требовалось добавлять строки в каждое сообщение. . Тот факт, что термин «сниппет» имеет тенденцию относиться к фрагментам кода, не упрощает поиск руководств.

1 Ответ

1 голос
/ 21 июня 2020

В одном из моих проектов Jekyll у меня было такое же требование, и я, как и вы, не нашел по-настоящему четкого способа сделать это.

Я долго боролся, пытаясь уместить это в _config.yaml , но из-за порядка обработки понял, что это никогда не сработает.

То, что у меня в итоге получилось, возможно, не самое чистое решение, и мне бы очень хотелось, чтобы кто-нибудь пришел с лучшим решением, чем это, но вот оно:

В папке _includes я создал переменных. html файл, содержащий все эти глобальные переменные Я знал, что могу использовать на всех страницах.

В вашем случае файл _includes / variables. html будет

{% assign custom_url = site.url | append: site.baseurl %}
{% assign full_base_url = custom_url | default: site.github.url %}

Тогда во всех макетах мне понадобятся эти переменные, я бы просто включил переменные. html файлов сразу после DOCTYPE, вот упрощенный пример _layouts / default. html :

<!DOCTYPE html>
{% include variables.html %}
<html>
    <head></head>
    <body>
        {{ content }}
        <a href="{{ '/images/logo.png' | prepend: full_base_url }}">Some image</a>
    </body>
</html>

Таким образом ваши переменные custom_url и full_base_url глобально доступны везде, где вы используете макет по умолчанию .

...