2017-01-25 8 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 %} 

Но я не могу заставить его появляться. Документация не упоминает ничего, но мне нужно сделать ее каким-то образом как index.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