2010-03-01 52 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 %] 

我不得不宣佈散列鍵作爲一個新的字符串,然後我能夠截斷和比較的變量。從我所知道的情況來看,不可能運行過濾器作爲一種方法。希望這可以幫助別人!

相關問題