2016-11-21 4 views
0

Я запускаю сайт Jekyll, который использует JSON в качестве данных в моей папке _data. Я прокручиваю файл, как обычно, делая вещи вроде {% for item in site.data.resources.items %} просто отлично. Тем не менее, я бы хотел проанализировать переднюю часть YAML, находящуюся внутри строки.Liquid - parse YAML front matter in string

Пример:

\n---\nblog: http://google.com\nbackground-img: http://www.ew.com/sites/default/files/i/2013/07/23/Dumb-and-Dumber.jpg\nbuttonText: Download\n---\n

Как я могу Жидкое разобрать это в моем сайте Джекил, так что я могу использовать его так:

<a href="{{blog}}"><img src="{{background-img}}>Image</a>

или что-то подобное?

EDIT: Чтобы уточнить, эта строка находится в формате начального элемента в текстовом файле, который я извлекаю с помощью вызова ajax. Так что строка - это ответ, который я возвращаю, и формат не будет меняться. Я надеялся, что Liquid может каким-то образом разобрать эту строку и искать формат фронтального типа. Если нет, я верну свои методы JavaScript.

+0

Вы спрашиваете, как вы можете использовать элемент управления yaml для выбора элементов данных? – TBB

+0

Я не разработчик, а пары дочерних ключевых слов 'background-img' и' buttonText' элемента 'blog' в этой структуре? Если это так, возможно, что-то вроде входа в элемент «item: blog» и в содержании ' TBB

+0

Как выглядит ваш фронт? Эта длинная строка на самом деле является ценностью в вашем представлении? Будет ли работать оператор «содержит»? например, {% if page.url содержит «nbackground-img»%} background-img {% endif%}. Не совсем ясно, что такое ваша установка. –

ответ

0

Это невозможно.

Liquid/YML анализируется при создании сайта, и ваша строка JSON доступна через много дней после создания сайта: она существует только после того, как запрос JSON для строки был успешным.

Однако вы можете использовать javascript, как вы уже упоминали. Просто разделите строку на \n для ваших пар ключ-значение и разделите на : для вашего ключа и значения. Затем используйте jQuery (или простой javascript) для записи результатов в DOM.

Удачи вам!

+0

Я использую задачу Gulp, чтобы сначала перенести эти данные, а затем сохраните ее в json-файле в моей папке '_data', а затем запустите команду сборки. Так технически это есть. Наверное, я надеялся, что есть способ сделать это изнутри Liquid, но я начинаю видеть, что это просто невозможно. Вернемся к доске с большим количеством способов решить эту проблему. –

Смежные вопросы