jekyll liquid github-pages

jekyll - Categorías Jerárquicas en GitHub Pages



liquid github-pages (2)

Modifique su _config.yml en consecuencia

collections: animals: output: true mammals: output: true cats: output: true dogs: output: true reptiles: output: true lizards: output: true

Luego creó la estructura:

mkdir -p _animals/reptiles/lizards mkdir -p _animals/mammals/cats mkdir _animals/mammals/dogs

agregue sus archivos md y todos los index.html que indexarán los elementos con filtro. Debería verse así (quizás con más índices):

_animals/ ├── index.html ├── mammals │   ├── cats │   │   ├── housecat.md │   │   └── tiger.md │   ├── dogs │   │   ├── doberman.md │   │   └── poodle.md │   └── index.html └── reptiles └── lizards ├── chameleon.md └── iguana.md

luego creas _includes/list_animals.html

{% assign animals = site.animals| sort:''title'' %} {% for animal in animals %} {% if page.url != animal.url and include.taxonomy == nil or animal.url contains include.taxonomy %} <a href={{ animal.url | prepend: site.baseurl }}>{{animal.title}}</a> {% endif %} {% endfor %}

para enumerar todos los animales en animals/index.html :

--- title: animals --- {% include list_animals.html %}

Por ejemplo, para enumerar todos los mamíferos en animals/mammals/index.html :

--- title: animals --- {% include list_animals.html taxonomy="mammals" %}

Finalmente, la estructura generada debería verse así (con un poco más de index.html):

_site └── animals    ├── index.html    ├── mammals    │   ├── cats    │   │   ├── housecat.html    │   │   └── tiger.html    │   ├── dogs    │   │   ├── doberman.html    │   │   └── poodle.html    │   └── index.html    └── reptiles    └── lizards    ├── chameleon.html    └── iguana.html

Estoy usando Jekyll en las páginas de GitHub, y quiero tener categorías jerárquicas como esta:

  • animales -> mamíferos -> gatos -> _posts -> housecat.md, tiger.md
  • animales -> mamíferos -> perros -> _posiciones -> poodle.md, doberman.md
  • animales -> reptiles -> lagartos -> _posts -> iguana.md, chameleon.md

Me gustaría que los usuarios puedan visitar /animals y ver una lista de cada publicación de cada categoría. Pero si van a /animals/mammals , solo verían mamíferos. Si van a /animals/mammals/cats , entonces solo ven gatos.

Sé que puedo hacer esto manualmente colocando un archivo index.html en cada directorio y luego site.categories.mammals por site.categories.mammals o site.categories.cats , por ejemplo.

Pero eso parece una fuerza demasiado bruta, y espero que haya una mejor manera. Si quiero cambiar la forma en que estoy mostrando las listas, tendré que cambiar eso en cada subcategoría. También tendré problemas cuando las subcategorías compartan un nombre, como /ABC/XYZ/_posts/one.md y /DEF/XYZ/_posts/two.md .

He intentado seguir this artículo, que usa una página de category.html principal que recorre page.category :

{% for post in site.categories.[page.category] %} <h2><a href=""></a></h2> <p></p> {% endfor %}

Luego, cada archivo index.html usa esto como su diseño. Eso casi funciona, pero parece estar limitado a una categoría, no a múltiples categorías jerárquicas.

¿Existe un enfoque de fuerza bruta menor para crear listados para categorías jerárquicas?


page.categories es una lista

https://.com/a/23927986

{% for cat in page.categories %} <h1>{{ cat }}</h1> <ul> {% for post in site.categories[cat] %} <li><a href="{{ post.url }}">{{ post.title }}</a></li> {% endfor %} </ul> {% endfor %}

De la documentación de jekyll sobre page.category http://jekyllrb.com/docs/variables/#page-variables

La lista de categorías a las que pertenece este post. Las categorías se derivan de la estructura de directorios sobre el directorio _posts. Por ejemplo, una publicación en /work/code/_posts/2008-12-24-closures.md tendría este campo configurado en [''trabajo'', ''código''] . Estos también se pueden especificar en la materia frontal de YAML.

Debería poder agregar fácilmente un index.html dinámico simple a cada carpeta y las categorías deberían ser jerárquicas automáticamente.

Actualizar

Lo anterior NO funciona. Debe tratar la combinación de categorías de cada jerarquía como un elemento único. Conciba las categorías de la página del índice y compárelas con todas las publicaciones del sitio.

/foo/bar/_posts/2016-08-01-foo-bar-test.html

--- categories: - foo - bar title: test foo bar --- <h2>Foo Bar</h2>

/var/bar/_posts/2016-08-01-test-var-bar.html

--- categories: - var - bar title: test var bar --- <h2>Var Bar</h2>

/foo/bar/index.html

--- categories: - foo - bar --- {% assign pagecat = page.categories | join '' '' | append: '' ''%} {% assign pagecatlen = page.categories.size %} <h1>{{ cat }}</h1> <ul> {% for post in site.posts %} {% assign postcat = '''' %} {% for thispostcat in post.categories limit: pagecatlen %} {% assign postcat = postcat | append: thispostcat %} {% assign postcat = postcat | append: '' '' %} {% endfor %} {% if (postcat == pagecat) %} <li><a href="{{ post.url }}">{{ post.title }}</a></li> {% endif %} {% endfor %} </ul>

Las categorías son opcionales para los archivos en _posts, pero son obligatorias para la parte frontal de cada archivo de índice.