2

2つの変数(rsstitleとrssdescription)で切り捨てフィルターを使用し、切り捨てられたバージョンを新しい変数(rsstitletruncとrssdescriptiontrunc)に割り当てようとしています。私はTemplateToolkitに比較的慣れていませんが、このコードが機能しない理由(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の値を返します(切り捨てられません)。変数にフィルターを使用して、フィルターされた値を別の変数に宣言できないようです。または私はできますか?

4

1 に答える 1

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

ハッシュキーを新しい文字列として宣言する必要があり、それから変数を切り捨てて比較することができました。私の知る限り、メソッドとしてフィルターを実行することはできません。これが誰かに役立つことを願っています!

于 2010-03-09T15:06:11.240 に答える