2017-04-05 4 views
1

누구나이 퍼즐을 비출 수 있는지 궁금합니다. Mac에서 바닐라 지킬을 새로 설치하고 있습니다. 모든 것이 잘 작동하는 것처럼 보이지만 내 페이지 바닥 글에 표시된 일부 텍스트가 게시물 및 다른 모든 페이지에서 다르게 렌더링되고 있음을 발견했습니다. 대부분의 페이지에서 텍스트는 HTML로 렌더링되지만 게시물에서는 Markdown으로 렌더링되었습니다. 해결 방법을 찾았지만, 더 많은 질문이있었습니다.foreach의 멤버 또는 where 필터를 사용하면 마크 다운 렌더링이 달라집니다.

컨텍스트

I는 보행자의 일부를 보유하는 컬렉션 footer_sections로 정의 하였다. 내 _config.yml에서이 같이 보인다 :

같은 _footer_sections/address.md 등으로 바닥 글 섹션은 다음 마크 다운 파일에 정의되어
collections: 
    footer_sections: 
    output: false 

:이처럼 내 HTML 뭔가에 바닥 글 섹션을 가지고 내 default.html에서

--- 
title: Address 
order: 1 
--- 
**My Name** 
123 My Street 
My Town, ST 12345 
123-555-5555 

:

:

<div id="footer"> 
    {{ site.footer_sections | where: "title", "Address" }} 
</div> 

그리고 내 글이 예제처럼 설정

--- 
title: Silly new post 
date: 2017-02-27T12:33:53+00:00 
author: Eric Celeste 
layout: post 
--- 
Silly post. 

그리고 마지막으로, 포스트 레이아웃은 다음과 같이 기본 레이아웃에 연결 :

--- 
layout: default 
--- 
<h1>{{ page.title }}</h1> 
<p class="meta">{{ page.date | date_to_string }}</p> 
<div class="post"> 
    {{ content }} 
</div> 

문제 address.md 파일이 마크 다운에 정의 된 다음의 내용이 표시되어 있는지

공지 사항 바닥 글에 default.html에 섹션이 포함됩니다. 모든 일반 페이지에서 이것은 HTML (굵은 이름, 일반 주소)로 렌더링되지만 위의 어리석은 게시물과 같은 게시물에서는 Markdown (별과 휴식 시간이없는 주소로 둘러싸인 이름)으로 렌더링됩니다.

게시물과 페이지 사이에 다른 절차 단계를 거쳐야한다고 생각했는데 마크 다운 렌더링이 페이지의 "나중"에 발생했지만 이미 게시물의 "이전"상황이 발생했을 수 있습니다. 나는 이틀 만 지킬에 관한 것이므로 어떻게 작동하는지 정말로 모른다.

이론을 테스트하기 위해 나는 markdownify 필터를 사용하여 Markdown 렌더링을 강요했습니다.

{% assign section = site.footer_sections | where: "title", "Address" %} 
{{ section.content | markdownify }} 

이상하게도,이 모든 곳에서 더 나쁜 결과를 생산 : 나는 그들이 읽을 수 있도록 default.html 액체 태그를 변경했습니다. 이제 정규 또는 게시 페이지의 꼬리말에 어떤 종류의 텍스트도 나타나지 않습니다.

어쩌면 where 필터가 나는 또 다른 접근 시도 foreach와 배열의 멤버를 통해 반복에서 실제로 다른 것을 이론에

: 일

{% for section in site.footer_sections %} 
    {% if section.title == "Address" %} 
     {{ section.content | markdownify }} 
    {% endif %} 
{% endfor %} 

을! 이제 일반 페이지와 게시물 모두에서 HTML로 렌더링되는 바닥 글 섹션의 내용.

내 질문

왜 초기 접근 일을 했습니까?지킬의 게시물 렌더링과 다른 페이지의 차이점은 무엇입니까?

해결 방법을 찾았는데 왜 작동하는지 이해할 수 없습니다. 어떤 방법으로 where 필터가있는 배열에서 항목을 꺼내는 것이 루프 foreach의 멤버를 사용하는 것과 다른가요? 이 결과는 markdownify 필터의 결과에 어떤 영향을 줍니까?

HTML 렌더링 된 콘텐츠를 내 섹션에서 가져올 때마다 반복 할 때보 다 더 깨끗하고 간단한 방법이 있습니까?

당신이 가진 통찰력에 감사드립니다!

답변

2

site.footer_sections는 array이고 '위치'필터의 출력은 여전히 ​​배열이지만 조건에 맞는 값만 포함합니다.

귀하의 경우 단일 요소 배열을 얻고 있지만 여전히 배열 개체입니다. 각 반복에서 for 루프를 사용하여 요소를 통해 당신은 루프, 당신은 배열의 개별 요소를 얻을 때 한편

{% assign section = site.footer_sections | where: "title", "Address" %} 
{{ section.content | inspect }} 

: 자신이 검사 필터를 사용하기위한

이를 참조하십시오. 루프 내에서 inspect을 사용하여 section 변수의 두 유형이 어떻게 다른지 확인하십시오.

{% assign section = site.footer_sections | where: "title", "Address" %} 
{{ section.first.content | markdownify }} 

또는

{% assign section = site.footer_sections | where: "title", "Address" %} 
{{ section[0].content | markdownify }} 

링크 :

''방법

당신이 중 하나를 first 또는 [0]으로 배열의 실제 요소를 얻을 필요가 작동하려면

array documentation

first documentation

매우 도움이된다

where documentation

+0

, 트레버, 감사합니다! – EFC