2017-01-25 24 views
0

好的超級基本問題,但我必須錯過一些東西。Nunjucks中的模板繼承有哪些要求?

我使我的網頁:

router.get('/', function(req, res) { 
     res.render('index.njk', {}); 
}); 

創建我的基地佈局,主layout.njk佈局文件夾:

<!DOCTYPE html> 

<html> 
    <body>  
     {% block content %} 
     {% endblock %} 
    </body> 
</html> 

延長我的模板,index.njk將內容添加到佈局:

{% extends 'layout/main-layout.njk' %} 

{% block content %} 
<?php include_once("analyticstracking.php") ?> 
<main> 

    <p>sploooge</p> 

    {% block panel %}{% endblock %} 

</main> 
{% endblock %} 

現在我想index.njk由panel.njk延長(該文件是在同一文件夾):

{% extends 'index.njk' %} 

{% block panel %} 
    <p>second sploooge</p> 
{% endblock %} 

但我無法讓它出現。文檔沒有提到任何東西,但我需要像索引.njk那樣渲染它嗎?

回答

1

我相信這個問題在於你有'中'文件。

我得到這個與下面的配置工作:

文件樹:

pages/ 
    -index.njk 

templates/ 
    -base.njk 
    -layout.njk 

base.njk:

<!DOCTYPE html> 
<html lang="en"> 
<head></head> 
<body> 
    {% block content %}{% endblock %} 
</body> 
</html> 

layout.njk

{% extends "base.njk" %} 
{% block content %} 
    Content 
{% block more %}{% endblock %} 
{% endblock %} 

指數.njk:

{% extends "layout.njk" %} 
{% block more %} 
    More Content 
{% endblock %} 

輸出:

<!DOCTYPE html> 
<html lang="en"> 
<head></head> 
<body> 
    Content 
    More Content 
</body> 
</html> 

您可以使用一個模板,是任何地方,你只需要確保您添加到URL中的延伸。例如:

{% extends "templates/layouts/extras/template.njk" %} 

這會產生可怕的混亂並增加出錯的可能性,但理論上它會起作用。

查看使用包括在一些領域,以及在這種情況下可能是有益的沒有額外的模板層。

+0

感謝您在此的時間,真的很感激。 – JPB