Интерполяция строки URL с жидкими тегами Jekyll - PullRequest
0 голосов
/ 10 сентября 2018

Я пытаюсь заставить Джекилла генерировать ссылку динамически. Ссылка предназначена для файла CSS, но зависит от страницы, которая отображается.

т.е. Если страница была контактной, она должна отображать mywebsite.com/lib/css/contact.css

Проблема, с которой я столкнулся, заключается в том, что когда я пытаюсь вложить метки жидкости, он не может правильно определить имя. Кажется, что вместо разрешения имени вся строка обрабатывается как буквальная строка.

Я пробовал следующее:

Примечание: layout.cssFile - это переменная страницы, которая содержит имя файла CSS, который я хочу отобразить.

Попытка 1:

<link href="{{ lib/css/" | append:  layout.cssFile }} | relative_url }}" rel="stylesheet">

Попытка 2:

<link href="{{ "lib/css/{{ layout.cssFile }} | relative_url }}" rel="stylesheet"> 

Попытка 3:

{% assign cssPath="lib/css/{{layout.cssFile}}" %}
  <link href="{{ cssPath | relative_url }}" rel="stylesheet"> 

Ничего из этого не работает. Как я могу написать это чистым способом, который легко читается и делает то, что я хочу?

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Вам не нужно использовать двойные кавычки в Liquid. Одинарные кавычки так же хорошо.

<link href="{{ layout.cssFile | prepend: 'lib/css/' | append: '.css' | relative_url }}" />
0 голосов
/ 10 сентября 2018

Я нашел решение. Однако я не уверен, что это лучшее решение. Если у вас есть лучшее решение, пожалуйста, оставьте сообщение ниже.

Проблема в том, что я хотел, чтобы двойные кавычки отображались в фактическом генерируемом файле, так как это href. Кроме того, я также хочу иметь возможность помещать переменные, разрешенные с помощью жидкости, как часть URL.

Решение состоит в том, чтобы использовать фильтр "добавить", чтобы добавить переменные с разрешением по жидкости, а затем добавить фильтр относительный_url в самом конце.

<link href="{{ "lib/css/" | append: layout.cssFile | append: ".css" | relative_url }}" 

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

Символ {{, который, как вы видите, следует за ним, является началом жидкой метки. Двойные кавычки после позволяют путям lib/css/ отображаться в виде строки.

Обратите внимание, что я использовал символ канала и начал использовать фильтр добавления, чтобы добавить переменную layout.cssFile, соединив ее со строкой. Затем я использовал другой фильтр добавления, чтобы привязать расширение css к пути к файлу.

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

...