Jekyll обнаружил файл sass с именем yaml в качестве страницы

Я сделал жидкий шаблон для меню навигации и попытался добавить активное правило CSS к текущему активному пункту меню.

Вот мой жидкий тег для отображения пункта меню:

<ul class="list-inline float-right">
    {% assign menu_pages = site.pages | sort: 'index' %}
    {% for p in menu_pages limit 3 %}
        {% if page.menu_title and page.url == p.url %}
        <li class="active"><a href="{{ p.url | prepend: site.baseurl }}">{{ p.menu_title }}</a></li>
        {% else %}
        <li><a href="{{ p.url | prepend: site.baseurl }}">{{ p.menu_title }}</a></li>
        {% endif %}
    {% endfor %}
</ul>

index переменная основного текста yaml для сортировки пунктов меню
menu_title переменная основного текста yaml для добавления пользовательского заголовка меню, отображаемого в строке меню.

Я добавляю эти две передние переменные непосредственно к моему .html файл в корне, которые будут отображаться в виде страниц.

Но когда я проверил это в браузере, у меня появились другие пустые пункты меню, которые связывают меня с моими файлами main.css и framework.css.

Вот визуализированный HTML:

<ul class="list-inline float-right">
    <li><a href="/css/main.css"></a></li>
    <li><a href="/css/framework.css"></a></li>
    <li class="active"><a href="/">Home</a></li>
    <li><a href="/works/">Works</a></li>
    <li><a href="/blog/">Blog</a></li>
</ul>

Это произошло сразу после того, как я включил свои файлы main.sass и framework.sass в ресурсы Jekyll, расположенные в css папка в то время как частичный файл SASS в _sass папка. Я предполагаю, что передний вопрос делает эти два файла sass визуализированными как страницы, и это из-за того, что я добавил к своему файлу два sass. Я пытался удалить двойной --- поверх них я обновляю localhost и пустые пункты меню пропали.

У меня есть три пункта меню для рендеринга:

  • Главная
  • Работает
  • Блог

но результат пять!

Так правда ли, что это потому, что вопрос о ямле? Как я могу это исправить при использовании конвейера активов Sass Jekyll?

2 ответа

Решение

В этом случае вам лучше использовать site.html_pages вместо:

{% assign menu_pages = site.html_pages | sort: 'index' %}

С https://jekyllrb.com/docs/variables/, site.html_pages является:

Подмножество site.pages перечисляя те, которые заканчиваются .html,

Ваше условие if фильтрует по menu_title, но предложение else не фильтрует. Вы можете изменить свое состояние на:

{% if page.menu_title %}
  <li{% if page.url == p.url %} class="active">{% endif %}
    <a href="{{ p.url | prepend: site.baseurl }}">{{ p.menu_title }}</a>
  </li>
{% endif %}
Другие вопросы по тегам