Twig/Timber 有条件地显示正文 class
Twig/Timber conditional to show body class
如果 URL 中有特定的字符串,我正在寻找一种向正文添加 class 的方法。
我的逻辑有点像,但语法如下:
1. 不干
2.因为if语句
只循环第一次迭代
我想我需要以某种方式在 'if' 语句之后放置一个数组,但不确定语法。
任何帮助,将不胜感激。
谢谢
{% if 'bus-data' in post.link %}
<body class="{{body_class}} jumbo" data-template="base.twig">
{% elseif 'bus-data' not in post.link %}
<body class="{{body_class}}" data-template="base.twig">
{% endif %}
{% if 'taxi-data' in post.link %}
<body class="{{body_class}} jumbo" data-template="base.twig">
{% elseif 'taxi-data' not in post.link %}
<body class="{{body_class}}" data-template="base.twig">
{% endif %}
{% if 'education-data' in post.link %}
<body class="{{body_class}} jumbo" data-template="base.twig">
{% elseif 'education-data' not in post.link %}
<body class="{{body_class}}" data-template="base.twig">
{% endif %}
{% if 'public-data' in post.link %}
<body class="{{body_class}} jumbo" data-template="base.twig">
{% elseif 'public-data' not in post.link %}
<body class="{{body_class}}" data-template="base.twig">
{% endif %}
您可以创建一个新的过滤器来解决这个问题,
过滤器
$twig->addFilter(new Twig_SimpleFilter('contains', function ($value, $needles) {
if (!is_array($needles)) $needles = [ $needles, ];
foreach($needles as $needle) if (strpos($value, $needle) !== false) return true;
return false;
});
树枝
<body class="{{body_class}}{% if post.link|contains(['bus-data', 'taxi-data', 'education-data', 'public-data',]) %} jumbo{% endif %}" data-template="base.twig">
看来我可能把一些非常简单的事情复杂化了,离开它会使它变得更清晰。
我刚刚整理了 'else if' 循环:
{% if 'bus-data' in post.link %}
<body class="{{body_class}} jumbo" data-template="base.twig">
{% elseif 'taxi-data' in post.link %}
<body class="{{body_class}} jumbo" data-template="base.twig">
{% elseif 'education-data' in post.link %}
<body class="{{body_class}} jumbo" data-template="base.twig">
{% elseif 'public-data' in post.link %}
<body class="{{body_class}} jumbo" data-template="base.twig">
{% else %}
<body class="{{body_class}}" data-template="base.twig">
{% endif %}
如果 URL 中有特定的字符串,我正在寻找一种向正文添加 class 的方法。
我的逻辑有点像,但语法如下: 1. 不干 2.因为if语句
只循环第一次迭代我想我需要以某种方式在 'if' 语句之后放置一个数组,但不确定语法。 任何帮助,将不胜感激。 谢谢
{% if 'bus-data' in post.link %}
<body class="{{body_class}} jumbo" data-template="base.twig">
{% elseif 'bus-data' not in post.link %}
<body class="{{body_class}}" data-template="base.twig">
{% endif %}
{% if 'taxi-data' in post.link %}
<body class="{{body_class}} jumbo" data-template="base.twig">
{% elseif 'taxi-data' not in post.link %}
<body class="{{body_class}}" data-template="base.twig">
{% endif %}
{% if 'education-data' in post.link %}
<body class="{{body_class}} jumbo" data-template="base.twig">
{% elseif 'education-data' not in post.link %}
<body class="{{body_class}}" data-template="base.twig">
{% endif %}
{% if 'public-data' in post.link %}
<body class="{{body_class}} jumbo" data-template="base.twig">
{% elseif 'public-data' not in post.link %}
<body class="{{body_class}}" data-template="base.twig">
{% endif %}
您可以创建一个新的过滤器来解决这个问题,
过滤器
$twig->addFilter(new Twig_SimpleFilter('contains', function ($value, $needles) {
if (!is_array($needles)) $needles = [ $needles, ];
foreach($needles as $needle) if (strpos($value, $needle) !== false) return true;
return false;
});
树枝
<body class="{{body_class}}{% if post.link|contains(['bus-data', 'taxi-data', 'education-data', 'public-data',]) %} jumbo{% endif %}" data-template="base.twig">
看来我可能把一些非常简单的事情复杂化了,离开它会使它变得更清晰。 我刚刚整理了 'else if' 循环:
{% if 'bus-data' in post.link %}
<body class="{{body_class}} jumbo" data-template="base.twig">
{% elseif 'taxi-data' in post.link %}
<body class="{{body_class}} jumbo" data-template="base.twig">
{% elseif 'education-data' in post.link %}
<body class="{{body_class}} jumbo" data-template="base.twig">
{% elseif 'public-data' in post.link %}
<body class="{{body_class}} jumbo" data-template="base.twig">
{% else %}
<body class="{{body_class}}" data-template="base.twig">
{% endif %}