2014-03-12 6 views
0

에코 템플릿 엔진과 partials 플러그인에서 docpad를 사용하고 있습니다. 포인트는 방문 페이지에 스 니펫 목록을 삽입하는 것입니다.부분 집합을 사용하여 URL을 기반으로 부분을 삽입하는 방법은 무엇입니까?

논리적 인 접근법은 스 니펫 집합을 반복하고 각 스 니펫을 삽입하는 것입니다.

나는 다음과 같은 구조가 (다음을 beginner guide on adding blog postspartials doco) : hello.html.eco의

src 
├── documents 
│   ├── index.html.eco 
│   ├── scripts ... 
│   └── styles ... 
├── files... 
├── layouts 
│   └── default.html.eco 
└── partials 
    ├── hello.html.eco 
    └── world.html.eco 

내용 : world.html.eco의

--- 
title: "Hello" 
isArticle: true 
--- 
Hello 

내용 :

--- 
title: "World" 
isArticle: true 
--- 
World 

default.html.eco (레이아웃) 내용

<html> 
<head> 
    <title>Test Partials</title> 
    <%- @getBlock("styles").add(["/styles/style.css"]).toHTML() %> 
</head> 
<body> 
    <h1><%= @document.title %></h1> 
    <%- @content %> 
    <%- @getBlock("scripts").add(["/vendor/jquery.js","/scripts/script.js"]).toHTML() %> 
</body> 
</html> 

그리고 index.html.eco의 내용 :

--- 
title: "Welcome" 
layout: "default" 
isPage: true 
--- 
<p>Welcome to my website</p> 

<% for page in @getCollection("partials").findAllLive({isArticle:true}).toJSON(): %> 
<article> 
    <%- @partial("<%= page.url %>") %> 
</article> 
<% end %> 

이상이므로, docpad가 Cannot read property '0' of null와 충돌합니다. 그러나 라인을 제거하면 <%- @partial("<%= page.url %>") %>이 작동합니다.

다음 줄은 isArticle이 true로 설정된 partials 디렉토리의 모든 파일을 검색합니다. 내가 기대되는, 출력 목록을 /hello.html 및 /world.html <%- @partial("<%= page.url %>") %><p>page.url</p>에 변경하는 경우

<% for page in @getCollection("partials").findAllLive({isArticle:true}).toJSON(): %> 

.

<%-을 한 줄에 두 번 사용하여 효과적으로 일부 에코를 포함하려고 시도하는 것이 문제의 원인입니다.

내가이 문제를 어떻게 해결할 수 있는지 아는 사람이 있습니까? 수동으로 삽입하려는 각 파일에 대해 @partial("<filename>") 코딩을 피하기 위해 노력하고있어. 어떻게 든 @partial 값을 page.url으로 전달할 수 있습니까?

답변

0

문제는 두 번째 <%= 문 때문에 부분 플러그인과 관련이 없습니다. 우리가 이미 환경 친화적 인 환경에 접어 들었으므로 다시 생태 환경으로 탈출 할 필요가 없습니다. 변수가 직접 참조 될 수 있으므로 두 번째는 <%=입니다.

"원래 환경 변수를 어떻게 설정 했습니까?"라는 제목이 있어야합니다.

솔루션은 index.html.eco에 대해 다음 사용하는 것입니다

로 위에서 볼 수

--- 
title: "Welcome" 
layout: "default" 
isPage: true 
--- 
<p>Welcome to my website</p> 

<% for page in @getCollection("partials").findAllLive({isArticle:true}).toJSON(): %> 
<article> 
    <%- @partial(page.url) %> 
</article> 
<% end %> 
, page.url 이제 직접 참조됩니다.