EEフォーラム

magpieで条件分岐

 
Avatar
合計ポスト数: 10

こんにちは。
magpieで他ブログのRSSを表示させているのですが、その際、表示させるカテゴリを指定したいので下記のように書きました。

{exp:magpie url="http://xxx.com/?xml" limit="5" refresh="720" parse="inward"}  
{items}
{if subject
=="カテゴリ名"}
            
<div class="news-list">
              <
h4>[ {subject} ]</h4>
              <
dl>
                  <
dt><a href="{link}">{title}({current_time format="%m/%d"})</a></dt>
                <
dd>{exp:word_limit total="3"}{description}{/exp:word_limit}</dd>
              </
dl>
              <
div class="clear">&#160;</div>
            
</div>
{/if}
{
/items} 
{
/exp:magpie}

しかし、これだと何も表示されません。

もしかして、プラグインの中でGloval Variablesは使えないのでしょうか?

よろしくお願いいたします。

Avatar
合計ポスト数: 14

こんのちは。

ここの説明をみますと→ http://expressionengine.com/downloads/details/magpie_rss_atom_parser/

{exp:magpie ... } のパラメターリストに “parse"というのはないようですが、

{exp:magpie url="http://enigmesurre.blog19.fc2.com/?xml" limit="5" refresh="720" parse="inward"}

の “parse...” の部分は正しいですか?

プラグインの中に Global Variables は使えるはずです。コードの例では “ガテゴリ名” が Global Variable ですか?

後、念のため下記のようなテストを使ってみてください:

{exp:magpie url="http://enigmesurre.blog19.fc2.com/?xml" limit="5" refresh="720"}  
{items}
    {subject}
{
/items} 
{
/exp:magpie}

後、magpie は cache を使いますので、なにかを編集した後 system/cache/magpie のフォルダー内を全部削除してからページをリフレッシュしてくみてください。

Avatar
合計ポスト数: 10

mattyさん
お返事ありがとうございます。

{exp:magpie ... } のパラメターリストに “parse"というのはないようですが、

確かにここにはありませんが、下記の使い方の説明には載っていて、これを指定しないとword_limitが使えないようです。
http://expressionengine.com/docs/templates/plugins.html

プラグインの中に Global Variables は使えるはずです。コードの例では “ガテゴリ名” が Global Variable ですか?

説明が足りなかったですね。すみません。
”カテゴリ名”は固定のStringです。

つまり、下記のようにRSS内の情報の中から”インフォーメーション”というカテゴリだけを抜き出して表示したいのです。

{if subject=="インフォーメーション"}

日本語でも英語でも駄目でした。

後、念のため下記のようなテストを使ってみてください:

これは問題無く表示されました。

いろいろ試したのですが、結果として、{exp:magpie}〜{/exp:magpie}の中には、{if}も含めてGlobal Variablesは使えませんでした。
なんか、根本的な設定ミスがあるんでしょうか…

合計ポスト数: 13

inwardなんてプロパティがあるのですねぇ。

You may change the parsing order and instruct ExpressionEngine to parse an outer Plugin first. This is done by adding a parse="inward" parameter to the Plugin opening tag. Using that parameter will tell EE to parse that Plugin before parsing any Plugins inside of it.

とはいえ、ifはプラグインではないから後回しにはしてもらえなくて意図どおりにならない、ということだとお見受けしました。

禁断の秘技 PHP in Template だとさらに後に評価させることができるので、こうやればできますね。

#Template Preferences Managerで、該当ページの PHP Parsing Stage をOutputにしておきます。

<div id="blog" class="contents">
<
h1 class="title">ブログ</h1>
    
{exp:magpie url="http://blog.mogya.com/atom.xml" limit="5" refresh="60"}
    {items}
    <?php 
if ( strpos("{title}","ブログパーツ")!==false
echo <<<_HTML_
    <div class="content">
    <h2 class="title"><a href="{link}">{title}</a></h2>
    <span>{summary}</span>
    </div>
_HTML_;
    
} ?>
    {
/items}
    {
/exp:magpie}
</div>

お役に立てば幸いです。

Avatar
合計ポスト数: 10

もぎゃさん

お礼が遅くなってしまいましたが、ご紹介いただいた「禁断の秘技」を使うことで、解決することができました。

とはいえ、ifはプラグインではないから後回しにはしてもらえなくて意図どおりにならない、ということだとお見受けしました。

ああ、そういうことだったんですね。ようやく理解しました。

ありがとうございました。

合計ポスト数: 1

hi everyone! i’m new here :)