Как отобразить глобальную переменную как данные внутри для l oop в nunjucks? - PullRequest
0 голосов
/ 03 февраля 2020

Я столкнулся с проблемой: у меня есть глобальные переменные с иконками SVG, и я хочу сделать все значки внутри шаблона, используя для l oop. Как отобразить глобальную переменную как данные внутри для l oop.

facebook: <svg viewBox="0 0 8 17" fill="none" xmlns="http://www.w3.org/2000/svg" .../>
{% set
 list = [
   {
     link: 'https://facebook-link',
     icon: 'facebook',
     title: 'facebook group',
   },
   {
     link: 'https://twitter-link',
     icon: 'twitter',
     title: 'twitter group',
   }
 ]
%}

<ul class="socials">
 {% for data in list %}
  <li class="socials__item">
    <a href="{{data.link}}" 
       title="{{data.title}}"
       target="_blank" 
       rel="noopener noreferrer nofollow"
       class="socials__link"
       >
     {{ data.icon | safe }}
    </a>
  </li>
  {% endfor %}
</ul>

1 Ответ

0 голосов
/ 05 февраля 2020

Вы можете использовать пользовательский фильтр или глобальную функцию, чтобы получить значение переменной по ее имени

var nunjucks  = require('nunjucks');
var env = nunjucks.configure();

env.addFilter('context', function(variable) {
    return this.ctx[variable];
});

var html = env.renderString(
    `{{ 'facebook' | context | safe }}`, 
    {facebook: '<a href = "www.facebook.com">FB</a>'}
);

console.log(html);
...