我正在尝试对2个变量(rsstitle和rssdescription)使用truncate过滤器,并将截断的版本分配给新变量(rsstitletrunc和rssdescriptiontrunc)。我对Template Toolkit比较陌生,并且不明白为什么这段代码不起作用(SET和IF / ELSE / END):
[% FOREACH feed IN rss_feeds %]
<div class="rssfeed">
<a class="rsstitle" href="[% feed.link | html %]">[% feed.title %]</a>
<div class="rssdescription">[% feed.description %]</div>
[% SET rsstitle = feed.title %]
[% SET rsstitleclean = rsstitle | truncate(10) %]
[% SET rssdescription = feed.description %]
[% SET rssdescriptionclean = rssdescription | truncate(10) %]
[% IF rssdescriptionclean == rsstitleclean %]
<div class="rssdescription">Same: [% rsstitleclean %] | [% rssdescriptionclean %]</div>
[% ELSE %]
<div class="rssdescription">Differs: [% rsstitleclean %] | [% rssdescriptionclean %]</div>
[% END %]
</div>
[% END %]
rsstitleclean 会返回 rsstitle 的值(未截断)。 rssdescriptionclean 会返回 rssdescription 的值(未截断)。似乎我不能在变量上使用过滤器并将过滤后的值声明为另一个变量。或者我可以吗?
答案 0 :(得分:1)
我发现了我应该做的事情。我最终得到的代码是:
[% FOREACH feed IN rss_feeds %]
<div class="rssfeed">
<a class="rsstitle" href="[% feed.link | html %]">[% feed.title %]</a>
[% USE String %]
[% SET rsstitle = String.new(feed.title) %]
[% SET rssdescription = String.new(feed.description) %]
[% IF rsstitle.truncate(10) != rssdescription.truncate(10) %]
<div class="rssdescription">[% feed.description %]</div>
[% END %]
</div>
[% END %]
我必须将散列键声明为新字符串,然后我能够截断并比较变量。据我所知,不可能将过滤器作为一种方法运行。希望这有助于某人!