Jekyll - показывать изображения и текст в слайдере - PullRequest
0 голосов
/ 17 мая 2018

Я использую Bootstrap-Carousel.

К сожалению, данные из front-matter не отображаются.

index.html:

...
carousel:
  a:
    image: home/athenaBeta.jpeg 
    text: random text 1
  b: 
    image: home/transport.jpeg
    text: |
      random text 2
  c:
    image: home/coffee.jpeg 
    text: |
      random text 3
---
{% include hero-carousel.html %}
...

герой-carousel.html:

  <div id="carousel" class="carousel slide" data-ride="carousel" pause="false">
    <div class="carousel-inner text-center">
      {% for news in page.carousel %}
      {% capture image %}
        {% assign img = news.image %}
      {% endcapture %}
      <div class="item img-cover img-fixed {% if forloop.index == 0 %}active{% endif %}" style="background-image:url({{ image }})">
        <h2>{{ news.text }}</h2>
      </div>
      {% capture i %}{{ i | plus:1 }}{% endcapture %}
      {% endfor %}
    </div>

    <a class="left carousel-control" href="#carousel" role="button" data-slide="prev">
      <span class="fa glyphicon-chevron-left"></span>
    </a>
    <a class="right carousel-control" href="#carousel" role="button" data-slide="next">
      <span class="fa glyphicon-chevron-right"></span>
    </a>
    <a class="arrow-down" href="#content">
      <span class="fa glyphicon-chevron-down"></span>
    </a>
  </div>

Он отображает три слайда, однако ни одно из изображений или текста не отображается. Вывод, который я получаю в браузере, выглядит следующим образом:

<div id="carousel" class="carousel slide" data-ride="carousel" pause="false">
  <div class="carousel-inner text-center">
    <div class="item img-cover img-fixed " style="background-image:url(

      )">
      <h2></h2>
    </div>
    <div class="item img-cover img-fixed " style="background-image:url(

      )">
      <h2></h2>
    </div>
    <div class="item img-cover img-fixed " style="background-image:url()">
      <h2></h2>
    </div>
  </div>
  <a class="left carousel-control" href="#carousel" role="button" data-slide="prev">
    <span class="fa glyphicon-chevron-left"></span>
  </a>
  <a class="right carousel-control" href="#carousel" role="button" data-slide="next">
    <span class="fa glyphicon-chevron-right"></span>
  </a>
  <a class="arrow-down" href="#content">
    <span class="fa glyphicon-chevron-down"></span>
  </a>
</div>

1 Ответ

0 голосов
/ 18 мая 2018

Когда вы вводите в цикл page.caroussel, вы получаете такие вещи, как:

{{ news | inspect }}
==> ["a", {"image"=>"home/athenaBeta.jpeg", "text"=>"random text 1"}]

, который является массивом, содержащим два элемента.

Чтобы получить изображение, вы можете сделать {% assign img = news[1].image %}, но вам лучше немного поменять рефакторинг:

...
carousel:
  - image: home/athenaBeta.jpeg
    text: random text 1

  - image: home/transport.jpeg
    text: |
      random text 2

  - image: home/coffee.jpeg
    text: |
      random text 3
---

<div id="carousel" class="carousel slide" data-ride="carousel" pause="false">
  <div class="carousel-inner text-center">
  {% for news in page.carousel %}
    <div class="item img-cover img-fixed {% if forloop.first %}active{% endif %}" style="background-image:url('{{ news.image }}')">
      <h2>{{ news.text }}</h2>
    </div>
  {% endfor %}
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...