2012-02-02 4 views
11

_posts 폴더가 블로그 섹션에서 작동하는 것과 같은 방법으로 다른 페이지 기반 루프를 만들고 싶습니다. 그러나 잡지의 소규모 카탈로그를 작성합니다. (잘하면 그게 의미가)지킬에서 사용자 정의 페이지 기반 루프 만들기

어쩌면 내가 뭔가를 오해하고 있지만 어쩌면 그것을 해결할 수 없습니다. 나는이 루프가 작동해야한다고 생각하지만 아무것도 반환되지 않습니다.

{% for page in site.pressitems %} 
<li> 
    <a href="{{ post.url }}">{{ page.title }}</a> 
</li> 
{% endfor %} 

코드, 링크, 설명, 뭐든지 크게 환영합니다. :)

답변

18

마찬가지로 자신의 컬렉션을 site에 추가 할 수 없습니다.

sitepages, postscategories의 약 3 개만 알 수 있습니다. site.<category>.posts을 수행하여 카테고리의 모든 게시물을 가져올 수 있습니다. AFAIK, 범주는 게시물이 아닌 페이지에만 작동합니다.

Jekyll은 주로 블로그 엔진이며 일반 정적 웹 사이트 생성기가 아니기 때문에 이는 의미가 있습니다.

이제 가장 좋은 해결책은 지킬에 "거짓말"하는 것입니다. 실제로 페이지를 만들 때 게시물이 있다고 생각하게 만듭니다.

_posts/ 
    pressitems/ 
    blog/ 

는이 같은 _posts/pressitems 내부의 요소를 반복 할 수있을 것입니다 :

for p in site.categories.blog.posts do 
    ... {{ p.title }} ... {{ p.url }} 
endfor 

:

마찬가지로
for item in site.categories.pressitems.posts do 
    ... {{ item.title }} ... {{ item.url }} 
endfor 

, 당신의 "진짜 블로그 항목은"이 길을 갈 것입니다 그 잡기는 파일 이름과 관련하여 지킬의 명명 규칙을 존중해야한다는 것입니다. 당신의 pressitems는 진짜 포스트 같이보아야한다. 즉, 게시물과 같이 yyyy-mm-dd 문자열로 시작해야합니다. 그들에게 임의의 날짜를 알려주십시오.

_posts/ 
    pressitems/ 
    1901-01-01-the-first-press-item.textile 
    1902-01-01-the-second-one.textile 

편집 :이 게시물이 2012 년에 원래 작성되었지만 더 이상은 아닙니다. 현대 지킬 당신이 site.pages

{% for page in site.pages %} 
    <h3><a href="{{ page.url }}">{{ page.title }}</a></h3> 
    <p>{{ page.content }}</p> 
{% endfor %} 

을 통해 자신의 컬렉션을 https://jekyllrb.com/docs/collections/

+0

설명해 주셔서 감사합니다. 많이 도왔다 – PaulAdamDavis

+1

나는 그것이 '끝'이어야한다고 생각하지만, 나는 틀릴 수있다. – Zaz

+0

업데이트 됨, 감사합니다! – kikito

11

당신은 반복 할 수를 생성하고 목록을 특정 레이아웃을 사용하는 페이지 만 제한 할 수 있도록한다.

{% for page in site.pages %} 
    {% if page.layout == 'team' %} 
    <h3><a href="{{ page.url }}">{{ page.title }}</a></h3> 
    <p>{{ page.content }}</p> 
    {% endif %} 
{% endfor %} 

는 사이트 맵을 생성하는 방법에 대한이 게시물을 참조 : 당신은 또한 페이지에 YAML 프런트 문제를 추가 할 수 있습니다 지킬에 http://vvv.tobiassjosten.net/jekyll/jekyll-sitemap-without-plugins/

+0

매우 유용합니다. 감사합니다. 필자는 사이트의 _other_ 페이지를 나열하는 자신의 사용 사례에 맞게 조정했습니다. 이렇게하려면'page.permalink! = p.permalink' 조건을 추가했습니다 (네임 스페이스 충돌을 피하기 위해'page'보다는 iterator 값으로'p'를 사용합니다). –

+0

이것은 매우 도움이되었습니다, 감사합니다! 여기서 'if'논리가 조금 더 길어집니다. –

3

합니다. 페이지 카테고리와 같은 맞춤 프론트 - 문제를 추가하는 데는 아무런 문제가 없습니다. 지킬 2.5에서

{% for page in site.pages %} 
    {% if page.page-category == "category 1" %} 
     {{ page.content }} 
    {% endif %} 
{% endfor %} 
10

:를 통해

--- 
layout: plain 
title: "My beautiful page" 
description: "" 
snippet: "" 
page-category: "category 1" 
--- 

액세스를.3 실제로 collection 사이트에 추가 할 수 있습니다.

루트에 _my_collection 폴더를 추가하고 문서로 채 웁니다. _config.yml에 추가 : 컬렉션 : - my_collection

지금 포스트, 페이지, 또는 범주를 사용하여 문서를 호출합니다. 예 :

이 기능은 Jekyll 팀에서 "실험 기능이며 API가 기능이 안정 될 때까지 변경 될 수 있음"으로 표시된다는 점에 유의해야합니다.

+0

이것은 2016 년 10 월을 기준으로 올바른 응답입니다. – cwRichardKim

관련 문제