2010-03-01 39 views
2

我想在2个变量(rsstitle和rssdescription)上使用truncate过滤器,并将截断的版本分配给一个新变量(rsstitletrunc和rssdescriptiontrunc)。我是比较新的模板工具包,并且不明白为什么这个代码不会工作(套和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(未截断)。看来我不能在变量上使用过滤器,并将过滤值声明为另一个变量。或者我可以吗?

回答

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 %] 

我不得不宣布散列键作为一个新的字符串,然后我能够截断和比较的变量。从我所知道的情况来看,不可能运行过滤器作为一种方法。希望这可以帮助别人!

相关问题