Nunjucks syntax
Depending on your environment you'll want to use render
or include
. As a rule of thumb: server-side use include
, precompiled browser use render
. If you're using vf-eleventy you should use include
.
Using include
You'll need to pass a context object from your code or Yaml file (exampe), as well as the path to the Nunjucks template. Nunjucks' include
is an abstraction of render
and provides some additional portability.
{% set context fromYourYamlFile %}
- or -
{% set context = {
"component-type": "block",
"previous_text": "Previous",
"previous_url": "JavaScript:Void(0);",
"next_text": "Next",
"next_url": "JavaScript:Void(0);",
"jumpBack_text": -10,
"jumpBack_url": "JavaScript:Void(0);",
"jumpForward_text": 10,
"jumpForward_url": "JavaScript:Void(0);",
"pagination__list": [
{
"page_number": "Previous",
"page_href": "JavaScript:Void(0);",
"item_modifier": "vf-pagination__item--previous-page"
},
{
"page_number": -10,
"page_href": "JavaScript:Void(0);",
"item_modifier": "vf-pagination__item--jump-back"
},
{
"page_number": 1,
"page_href": "JavaScript:Void(0);"
},
{
"page_number": 2,
"page_href": "JavaScript:Void(0);"
},
{
"page_number": "..."
},
{
"page_number": 17,
"page_href": "JavaScript:Void(0);"
},
{
"page_number": 18,
"item_modifier": "vf-pagination__item--is-active"
},
{
"page_number": 19,
"page_href": "JavaScript:Void(0);"
},
{
"page_number": "..."
},
{
"page_number": 91,
"page_href": "JavaScript:Void(0);"
},
{
"page_number": 92,
"page_href": "JavaScript:Void(0);"
},
{
"page_number": 10,
"page_href": "JavaScript:Void(0);",
"item_modifier": "vf-pagination__item--jump-forward"
},
{
"page_number": "Next",
"page_href": "JavaScript:Void(0);",
"item_modifier": "vf-pagination__item--next-page"
}
]
}
%}
{% include "../path_to/vf-pagination/vf-pagination.njk" %}
Using render
This approach is best for bare-bones Nunjucks environments, such as precompiled templates with the Nunjucks slim runtime where include
is not be available.
{% render '@vf-pagination', {
"component-type": "block",
"previous_text": "Previous",
"previous_url": "JavaScript:Void(0);",
"next_text": "Next",
"next_url": "JavaScript:Void(0);",
"jumpBack_text": -10,
"jumpBack_url": "JavaScript:Void(0);",
"jumpForward_text": 10,
"jumpForward_url": "JavaScript:Void(0);",
"pagination__list": [
{
"page_number": "Previous",
"page_href": "JavaScript:Void(0);",
"item_modifier": "vf-pagination__item--previous-page"
},
{
"page_number": -10,
"page_href": "JavaScript:Void(0);",
"item_modifier": "vf-pagination__item--jump-back"
},
{
"page_number": 1,
"page_href": "JavaScript:Void(0);"
},
{
"page_number": 2,
"page_href": "JavaScript:Void(0);"
},
{
"page_number": "..."
},
{
"page_number": 17,
"page_href": "JavaScript:Void(0);"
},
{
"page_number": 18,
"item_modifier": "vf-pagination__item--is-active"
},
{
"page_number": 19,
"page_href": "JavaScript:Void(0);"
},
{
"page_number": "..."
},
{
"page_number": 91,
"page_href": "JavaScript:Void(0);"
},
{
"page_number": 92,
"page_href": "JavaScript:Void(0);"
},
{
"page_number": 10,
"page_href": "JavaScript:Void(0);",
"item_modifier": "vf-pagination__item--jump-forward"
},
{
"page_number": "Next",
"page_href": "JavaScript:Void(0);",
"item_modifier": "vf-pagination__item--next-page"
}
]
} %}
HTML
<nav class="vf-pagination" aria-label="Pagination">
<ul class="vf-pagination__list">
<li class="vf-pagination__item vf-pagination__item--previous-page">
<a href="JavaScript:Void(0);" class="vf-pagination__link">
Previous<span class="vf-u-sr-only"> page</span>
</a>
</li>
<li class="vf-pagination__item vf-pagination__item--jump-back">
<a href="JavaScript:Void(0);" class="vf-pagination__link">
-10<span class="vf-u-sr-only"> page</span>
</a>
</li>
<li class="vf-pagination__item">
<a href="JavaScript:Void(0);" class="vf-pagination__link">
1<span class="vf-u-sr-only"> page</span>
</a>
</li>
<li class="vf-pagination__item">
<a href="JavaScript:Void(0);" class="vf-pagination__link">
2<span class="vf-u-sr-only"> page</span>
</a>
</li>
<li class="vf-pagination__item">
<span class="vf-pagination__label">...</span>
</li>
<li class="vf-pagination__item">
<a href="JavaScript:Void(0);" class="vf-pagination__link">
17<span class="vf-u-sr-only"> page</span>
</a>
</li>
<li class="vf-pagination__item vf-pagination__item--is-active">
<span class="vf-pagination__label" aria-current="page">
<span class="vf-u-sr-only">Page </span>18
</span>
</li>
<li class="vf-pagination__item">
<a href="JavaScript:Void(0);" class="vf-pagination__link">
19<span class="vf-u-sr-only"> page</span>
</a>
</li>
<li class="vf-pagination__item">
<span class="vf-pagination__label">...</span>
</li>
<li class="vf-pagination__item">
<a href="JavaScript:Void(0);" class="vf-pagination__link">
91<span class="vf-u-sr-only"> page</span>
</a>
</li>
<li class="vf-pagination__item">
<a href="JavaScript:Void(0);" class="vf-pagination__link">
92<span class="vf-u-sr-only"> page</span>
</a>
</li>
<li class="vf-pagination__item vf-pagination__item--jump-forward">
<a href="JavaScript:Void(0);" class="vf-pagination__link">
10<span class="vf-u-sr-only"> page</span>
</a>
</li>
<li class="vf-pagination__item vf-pagination__item--next-page">
<a href="JavaScript:Void(0);" class="vf-pagination__link">
Next<span class="vf-u-sr-only"> page</span>
</a>
</li>
</ul>
</nav>