에코 템플릿 엔진과 partials 플러그인에서 docpad를 사용하고 있습니다. 포인트는 방문 페이지에 스 니펫 목록을 삽입하는 것입니다.부분 집합을 사용하여 URL을 기반으로 부분을 삽입하는 방법은 무엇입니까?
논리적 인 접근법은 스 니펫 집합을 반복하고 각 스 니펫을 삽입하는 것입니다.
나는 다음과 같은 구조가 (다음을 beginner guide on adding blog posts과 partials 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
으로 전달할 수 있습니까?