Как получить доступ к нетекущим элементам цикла for с помощью системы шаблонов Liquid

Я пытаюсь получить доступ к элементам из предыдущего и следующего массивов. Возможно ли это вообще с жидкостью / Джекиллом? Я хочу получить доступ к предыдущему и следующему URL страниц. Это то, что я сделал до сих пор.
Заранее спасибо.

Чтобы убедиться, что эта жидкость работает на моем сайте, я протестировал, выведя текущий URL-адрес страницы:

{{venue.url}}
//this line also works
{{page.url}}

и вот как я бросил вызов массиву, который берет данные из файла yml

{% assign page_venue = site.data.venues-array | where: "venueID",   page.venue | first %}

Это часть файла yml:

venueID: Red-Radish
name: Red Radish
url: redradish
building: 65
neighborhood: University Union

venueID: Poly-Deli
name: Poly Deli
url: polydeli
building: 19
neighborhood: University Union

venueID: Myrons
name: Myron's
url: myrons
previous: MustangStation
building: 19
neighborhood: University Union

Поэтому у меня проблемы с выводом чего-то вроде этого (работает только текущий URL):

Текущий URL: polydeli
Предыдущий URL: красноватый
Следующий URL: myrons

Я пробовал следующее, но ничего не работает:

<p>{{page.next.url}}</p>
<p>{{venue.next.url}}</p>
<p>{{paginate.next.url}}</p>
<p>{{paginator.next_page}}</p>

person Charlie805    schedule 12.07.2018    source источник
comment
Контекст не ясен. Не могли бы вы объяснить еще немного и показать код?   -  person David Jacquel    schedule 13.07.2018
comment
Я только что добавил код, спасибо, Дэвид!   -  person Charlie805    schedule 16.07.2018
comment
предыдущий и следующий не существует для обычных страниц. Они существуют только для сообщений и пользовательских коллекций.   -  person David Jacquel    schedule 16.07.2018
comment
Значит, нет возможности получить доступ к значениям url из предыдущего и следующего массивов? Даже путем определения какого-то цикла for?   -  person Charlie805    schedule 17.07.2018


Ответы (1)


Обновлено:

Во-первых, вам нужно правильно отформатировать файл venues-array.yml, например так:

- venueID: Red-Radish
  name: Red Radish
  url: redradish
  building: 65
  neighborhood: University Union

- venueID: Poly-Deli
  name: Poly Deli
  url: polydeli
  building: 19
  neighborhood: University Union

- venueID: Myrons
  name: Myron's
  url: myrons
  previous: MustangStation
  building: 19
  neighborhood: University Union

Затем вы можете получить доступ к следующему и предыдущему URL-адресам следующим образом:

{% for venue in site.data.venues-array %}

  {% assign next = forloop.index0 | plus: 1 %}
  {% assign previous = forloop.index0 | minus: 1 %}
    <div>Name: {{ venue.name }}</div>
    <div>Current URL: {{ venue.url }}</div>

    <div>Previous url:{{ site.data.venues-array[previous].url }}</div>
    <div>Next URL is:{{ site.data.venues-array[next].url }}</div>
    <hr>

{% endfor %}

Что выйдет из этого:

Name: Red Radish
Current URL: redradish
Previous url:myrons
Next URL is:polydeli
Name: Poly Deli
Current URL: polydeli
Previous url:redradish
Next URL is:myrons
Name: Myron's
Current URL: myrons
Previous url:polydeli
Next URL is:
person Keith Mifsud    schedule 18.07.2018
comment
Спасибо, но по какой-то причине {{previous.url}} и {{next.url}} не работают. - person Charlie805; 18.07.2018
comment
Привет, Чарли, извини, что не тестировал раньше. Обновленный ответ проверен и работает очень хорошо :) - person Keith Mifsud; 19.07.2018
comment
Спасибо, Кейт! С этим кодом выводит весь список ресторанов. Вы знаете, что я мог, чтобы я открывал только один ресторан за раз. вот так: Имя: Red Radish Текущий URL: redradish Предыдущий URL: myrons Следующий URL: polydeli - person Charlie805; 20.07.2018
comment
Привет, я думаю, вы хотите разбить места на страницы. Правильно ли я говорю, что вам нужна страница для каждого места, на странице будет информация об одном месте и ссылки на предыдущее и следующее место? В таком случае вам нужно будет либо использовать плагин разбиения на страницы, либо быстро взломать его с помощью javascript. В любом случае, примите этот ответ, поскольку он отвечает на ваш вопрос (доступ к элементам цикла for), и не стесняйтесь отправить мне ссылку на вопрос о разбиении на страницы, и я отвечу на него подробно. - person Keith Mifsud; 21.07.2018
comment
Привет, Кейт, здесь ссылка stackoverflow .com / questions / 51488205 / Спасибо! - person Charlie805; 24.07.2018