【问题标题】:How can I use a filter as a method in template toolkit?如何在模板工具包中使用过滤器作为方法?
【发布时间】:2011-01-22 11:39:44
【问题描述】:

我正在尝试对 2 个变量(rsstitle 和 rssdescription)使用截断过滤器,并将截断的版本分配给一个新变量(rsstitletrunc 和 rssdescriptiontrunc)。我对模板工具包比较陌生,不明白为什么这段代码不起作用(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 的值(未截断)。似乎我不能对变量使用过滤器并将过滤后的值声明给另一个变量。或者我可以吗?

【问题讨论】:

    标签: template-toolkit


    【解决方案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 %]
    

    我必须将哈希键声明为一个新字符串,然后才能截断和比较变量。据我所知,不可能将过滤器作为一种方法运行。希望这对某人有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-02
      • 2014-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多