2015-10-19 6 views
3

Я использую систему шаблонов Mozilla Nunjucks для статического веб-сайта с несколькими страницами. Для некоторых целей, я хочу, чтобы добавить класс body тег для каждой отдельной страницыКак добавить класс изменения в тело для разных страниц в nunjucks?

О нас страница><body class="about">

Главная><body class="home">

Я могу сделать это очень легко, если body тег я держу внутри каждый но я хочу сохранить тег body внутри моего шаблона, который я буду использовать для всех страниц.

Я хочу изменить классы условно.

+0

Как вы визуализировали для себя шаблоны? Можете ли вы передать переменные страницы для рендеринга? – xmojmr

+1

@xmojmr - Я использую плагин gulp-nunjucks-html –

+0

Можете ли вы передать переменную страницы ('body class') в https://www.npmjs.com/package/gulp-nunjucks-html#options-locals ? – xmojmr

ответ

0

Попробуйте это:

Планировка: <body class="{%block bodyClass %}{% endblock %}">

Страница: {% block bodyClass %} about {% endblock %}

+0

Это не работает, потому что оно также отображает имя страницы на странице –

+1

Что вы подразумеваете под этим номером, отображает название страницы на странице –

+0

Я верю, что он захочет сделать это, если скомпилированная страница - «about.html», вы можете каким-то образом получить доступ к имени файла «about» и использовать это имя в шаблоне, чтобы вам не было явно задавать класс страницы. Это позволит кому-то создавать произвольные имена страниц и рассчитывать на класс, заданный из имени файла, и не нужно повторять себя. – joeyfb

1

Это не полностью динамический, но вы можете установить переменные внутри ваших шаблонов страниц и использовать их в условном, чтобы установить body класс.

layout.nunjucks

{% if pgHome %} 
    <body class="home"> 
{% elif pgAbout %} 
    <body class="about"> 
{% else %} 
    <body class="page"> 
{% endif %} 

home.nunjucks

{% extends "layout.nunjucks" %} 
{% set pgHome = true %} 


    Homepage Markup 
    ... 
2
  1. Набор переменных на вашей странице. На вашей странице.njk: {% set bodyClass = "pageClass" %}
  2. Call bodyClass on layout. <body class="{{ bodyClass }}"></body>
+0

Lifesaver ... спасибо! – sol