2014-09-21 4 views
1

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

Я попробовал ниже, он отображает все категории, но не как ссылку.

{% for category in site.categories %} 
    <div class= "categories-title"><a name="{{ category | first }}">{{ category | first }}</a></div> 
{% endfor %} 

Я также пробовал jekyll-category-archive-plugin, как показано ниже, но это дает ошибку: Неизвестный тег 'category'.

{% for category in site categories %} 
    {% category link category %}This is a link to {{category}} {% endcategorylink %} 
{% endfor %} 

Может ли кто-нибудь дать мне несколько советов, как лучше всего это сделать?

Большое спасибо. Jing

ответ

1

Jekyll не делает страницы архива автоматически как страницы категории по умолчанию. Вы сами должны сами создавать страницы категорий или использовать плагин как »Category archive plugin for Jekyll«. Но я думаю, что это не сработает, если вы используете GitHub Pages с Jekyll.

4

Есть еще одно решение, которое работает на GitHub Страницы:
Одна единственная страница, содержащая все сообщения для всех категорий.

Я отвечал на подобный вопрос здесь, где я показал, как это сделать:
An easy way to support tags in a jekyll blog

В моем ответе, я с помощью тегов, а не категорий, но, насколько я знаю, как работать точно так же, путь.
(так что вы можете просто взять мой код и заменить site.tags на site.categories)

Сгенерированный HTML для каждого тега будет выглядеть примерно так:

<h3 id="jekyll">jekyll</h3> 
    <ul> 
    <li> 
     <a href="/blah/">Newest Jekyll post</a> 
    </li> 
    <li> 
     <a href="/foo/">Older Jekyll post</a> 
    </li> 
    </ul> 

Это была страница, которая отображает все должности для каждой категории.
Теперь в список категорий в панели навигации.

Опять же, обратите внимание на выше HTML:
Спасибо к id="jekyll" части, вы можете использовать ссылку /tags/#jekyll загрузить /tags/ страницы и перейти непосредственно к тегу Джекила.

На моем сайте я использую это везде, где я связываюсь с страницей /tags/.

Чтобы создать эти ссылки в панели навигации, а также, нужно просто взять первый пример кода из вашего вопроса, и изменить это:

<a name="{{ category | first }}"> 

...к этому:

<a href="/tags/#{{ category | first }}"> 

(я просто предположим, что ваша страница категории находится под URL /tags/ а также, как в моем примере)

Так что полный код будет выглядеть так:

{% for category in site.categories %} 
    <div class="categories-title"><a href="/tags/#{{ category | first }}">{{ category | first }}</a></div> 
{% endfor %} 

Сгенерированный HTML будет иметь ссылку, как в следующем, для каждой категории:

<div class="categories-title"><a href="/tags/#jekyll">jekyll</a></div> 

EDIT:

Вы написали в комментарии:

I see that you have all tags with posts on one page. I have created a categories page and I would like to use this page as a template. While clicking each category in the navigation bar, I would like it to link to its own page.

В то же время, я писал в блоге о создании отдельных страниц категорий без плагина:
Separate pages per tag/category with Jekyll (without plugins)

+0

привет, христианин, большое спасибо за вашу помощь. Я вижу, что у вас есть все теги с сообщениями на одной странице. Я создал страницу категорий, и я хотел бы использовать эту страницу в качестве шаблона. При нажатии каждой категории на панели навигации мне бы хотелось, чтобы она ссылалась на свою страницу. Я попытаюсь изменить ваши коды и получить работу, надеюсь. Еще раз спасибо :) – Jing

+0

Вы можете использовать плагин для создания нескольких категорий страниц (например, [https://github.com/recurser/jekyll-plugins/blob/master/generate_categories.rb)), но что не будет работать на страницах GitHub. Если вы не можете использовать плагин по каким-либо причинам, у вас есть два варианта: a) мое решение выше * или * b) создайте все страницы категорий как отдельные страницы вручную –

+0

Привет, христианин, я использовал плагин, на который вы ссылались, и он работал. Большое спасибо. Теперь я получаю некоторое осложнение. Я хотел бы создать многоязычные сайты (en и cn). Я переместил сообщения в отдельные папки, такие как CN/_posts и EN/_posts, например. Тогда это испортилось. Теперь я пытаюсь играть с подключением jekyll-multi-languages, надеюсь, это может сработать. если у вас есть дополнительные советы по этому поводу, пожалуйста, дайте мне знать. – Jing

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