MODX Evolutionで外部のRSSを読み込んで表示する目的で「piex」を利用していましたが、新しいMODX Evolutionで利用できなかった為、「NewsParserX」を利用してみたのですが、ページの表示が4秒ほど遅く表示されるようになっていまいました。
「piex」と「NewsParserX」以外で、外部のRSSを読み込んで表示する方法があれば教えていただけますでしょうか。
外部のRSSを読み込んで表示する方法が知りたいです
外部のRSSを読み込んで表示する方法が知りたいです
こんにちは。
まだローカルのみでテスト中ですが、1.0.18J-rc2+XAMPP(PHP 5.6.24)にてpiexが動作しています。
もしかしたらサーバスペックなどの条件によって動かなくなるのではと気になりましたので、情報として投稿いたしました。
まだローカルのみでテスト中ですが、1.0.18J-rc2+XAMPP(PHP 5.6.24)にてpiexが動作しています。
もしかしたらサーバスペックなどの条件によって動かなくなるのではと気になりましたので、情報として投稿いたしました。
外部のRSSを読み込んで表示する方法が知りたいです
palmaさん,ryockaさん,こんばんは。
私も,
RSS取得する必要があった際に調べたことがあるのですが,piexはメンテナンスされている感じではなかったのですよね…。
なのでその時は,piexでも使用しているライブラリsimplepie(https://github.com/simplepie/simplepie/)
の最新版(1.4.*)を使用して、以下のような感じの簡易的なスニペットを作って対応しました。汎用的なスニペットがある敷居が下がって良いのでしょうけれども。
simplepieそのものは,rss/atomのバージョン違いを吸収してくれてキャッシュも使え、なにげにきちんとメンテナンスされているうえ,composerで管理することもできるので便利だと思います。
以下のスニペット(getRSSとして保存)は,simplepieのライブラリの保存場所に気をつければ,最近のevoで利用できると思います。
本職のプログラマでもないので恥ずかしいんですが,参考まで。
私も,
RSS取得する必要があった際に調べたことがあるのですが,piexはメンテナンスされている感じではなかったのですよね…。
なのでその時は,piexでも使用しているライブラリsimplepie(https://github.com/simplepie/simplepie/)
の最新版(1.4.*)を使用して、以下のような感じの簡易的なスニペットを作って対応しました。汎用的なスニペットがある敷居が下がって良いのでしょうけれども。
simplepieそのものは,rss/atomのバージョン違いを吸収してくれてキャッシュも使え、なにげにきちんとメンテナンスされているうえ,composerで管理することもできるので便利だと思います。
以下のスニペット(getRSSとして保存)は,simplepieのライブラリの保存場所に気をつければ,最近のevoで利用できると思います。
本職のプログラマでもないので恥ずかしいんですが,参考まで。
コード: 全て選択
/*
* getRSS
* RSS/Atomフィードを取得する簡易スニペット
* [[getRSS? &url=`rssのurl` &n=`取得件数` &tpl=`フォーマットのチャンク名`]]
* もしくは、rssurlを入力するテンプレート変数等のモディファイア
* [*tv_url:getRSS(n)*]
* で利用。
* テンプレートのプレースホルダは,とりあえず[+url+][+date+][+title+][+summary+]が利用可能。
* require https://github.com/simplepie/simplepie/
*/
if(isset($value)) $url=$value;
if(isset($opt)) $n=(int)$opt;
$a=array(
'url'=> isset($url)?$url:'',
'n'=> isset($n)?intval($n):5,
'tpl'=>isset($tpl)?$tpl:'',
);
if(!$a['url']) return;
if(!$tpl){
$format = '<li><a href="[+url+]" target="_blank"><span class="date date-rss">[+date:date(%Y.%m.%d)+]</span><span>[+title+]</span></a></li>';
}else{
$format = $modx->getChunk($tpl);
}
//load simplepie
if(file_exists($modx->config['base_path'] . '../vendor/autoload.php')) {
//composer
$autoload = $modx->config['base_path'] . '../vendor/autoload.php';
}else{
//manual
$autoload = $modx->config['base_path'] . 'assets/snippets/getRSS/simplepie/autoloader.php';
}
require_once($autoload);
$feed = new SimplePie();
$feed->set_feed_url($a['url']);
$feed->set_cache_location($modx->config['base_path'] . "assets/cache/rss/");
if(!file_exists($modx->config['base_path'] . "assets/cache/rss/"))mkdir($modx->config['base_path'] . "assets/cache/rss/", 0777, true);
$feed->set_cache_duration(1800);
$success = $feed->init();
$c=1;
$r="";
if ($success){
foreach ($feed->get_items() as $e ) {
$ph=array(
'url'=>$e->get_link(),
'date'=>$e->get_date(),
'title'=> $e->get_title(),
'summary'=>$e->get_description(),
);
$r .= $modx->parseText($format, $ph);
if($c++==$a['n'])break;
}
}else{
$r='<li>最新情報の取得に失敗しました。</li>';
}
return $r;
外部のRSSを読み込んで表示する方法が知りたいです
ryockaさん、nokaさん、貴重な情報をご提供いただき、ありがとうございます。
さくらインターネットのスタンダードプランにインストールしたMODXを、1.0.17Jにアップデートしたところ、piexが利用できなくなってしまいました。
NewsParserXを使ったときにはページを表示するのに4秒ほど遅く表示されていましたが、nokaさんのコードを利用すると遅延を感じることなくページの表示が完了します。
本当に助かりました。
ありがとうございます。
さくらインターネットのスタンダードプランにインストールしたMODXを、1.0.17Jにアップデートしたところ、piexが利用できなくなってしまいました。
NewsParserXを使ったときにはページを表示するのに4秒ほど遅く表示されていましたが、nokaさんのコードを利用すると遅延を感じることなくページの表示が完了します。
本当に助かりました。
ありがとうございます。
外部のRSSを読み込んで表示する方法が知りたいです
こんにちは。
私も、さくらのレンタルサーバにてpiexを利用していますので、動かなくなった際は
参考にさせていただきます。
有用な情報を公開していただきまして誠にありがとうございました。
私も、さくらのレンタルサーバにてpiexを利用していますので、動かなくなった際は
参考にさせていただきます。
有用な情報を公開していただきまして誠にありがとうございました。
外部のRSSを読み込んで表示する方法が知りたいです
noka さんが書きました:コード: 全て選択
/*
* getRSS
* RSS/Atomフィードを取得する簡易スニペット
* [[getRSS? &url=`rssのurl` &n=`取得件数` &tpl=`フォーマットのチャンク名`]]
* もしくは、rssurlを入力するテンプレート変数等のモディファイア
* [*tv_url:getRSS(n)*]
* で利用。
* テンプレートのプレースホルダは,とりあえず[+url+][+date+][+title+][+summary+]が利用可能。
* require https://github.com/simplepie/simplepie/
*/
if(isset($value)) $url=$value;
if(isset($opt)) $n=(int)$opt;
$a=array(
'url'=> isset($url)?$url:'',
'n'=> isset($n)?intval($n):5,
'tpl'=>isset($tpl)?$tpl:'',
);
if(!$a['url']) return;
if(!$tpl){
$format = '<li><a href="[+url+]" target="_blank"><span class="date date-rss">[+date:date(%Y.%m.%d)+]</span><span>[+title+]</span></a></li>';
}else{
$format = $modx->getChunk($tpl);
}
//load simplepie
if(file_exists($modx->config['base_path'] . '../vendor/autoload.php')) {
//composer
$autoload = $modx->config['base_path'] . '../vendor/autoload.php';
}else{
//manual
$autoload = $modx->config['base_path'] . 'assets/snippets/getRSS/simplepie/autoloader.php';
}
require_once($autoload);
$feed = new SimplePie();
$feed->set_feed_url($a['url']);
$feed->set_cache_location($modx->config['base_path'] . "assets/cache/rss/");
if(!file_exists($modx->config['base_path'] . "assets/cache/rss/"))mkdir($modx->config['base_path'] . "assets/cache/rss/", 0777, true);
$feed->set_cache_duration(1800);
$success = $feed->init();
$c=1;
$r="";
if ($success){
foreach ($feed->get_items() as $e ) {
$ph=array(
'url'=>$e->get_link(),
'date'=>$e->get_date(),
'title'=> $e->get_title(),
'summary'=>$e->get_description(),
);
$r .= $modx->parseText($format, $ph);
if($c++==$a['n'])break;
}
}else{
$r='<li>最新情報の取得に失敗しました。</li>';
}
return $r;
上記コード、GitHubに登録していただけたらmodx.jpで管理を引き継ぎます。いかがでしょうか?
外部のRSSを読み込んで表示する方法が知りたいです
yama さま
追記で質問です。
自分のgithubアカウントでリポジトリ作成して共有or移譲する感じになるのでしょうか?
ありがとうございます。近日中に登録してみますのでよろしくお願い致します。上記コード、GitHubに登録していただけたらmodx.jpで管理を引き継ぎます。いかがでしょうか?
追記で質問です。
自分のgithubアカウントでリポジトリ作成して共有or移譲する感じになるのでしょうか?
外部のRSSを読み込んで表示する方法が知りたいです
作っていただいたリポジトリをフォークして、独立して管理するような感じになります
外部のRSSを読み込んで表示する方法が知りたいです
yamaさま
外部ライブラリの扱いをどうすべきかよくわからないのですが,とりあえず独立して動作できるように同梱してます。
https://github.com/noka/getRSS
ちなみに,他にもEvogalleryのフォーク版(アップローダーflashをjsライブラリに差替え,最新evoで取り敢えず動作)をgithubで管理してみています。有用そうでしたら,セキュリティ面が心配だったりするので,見て頂けると嬉しいです。
https://github.com/noka/EvoGallery/releases
外部ライブラリの扱いをどうすべきかよくわからないのですが,とりあえず独立して動作できるように同梱してます。
https://github.com/noka/getRSS
ちなみに,他にもEvogalleryのフォーク版(アップローダーflashをjsライブラリに差替え,最新evoで取り敢えず動作)をgithubで管理してみています。有用そうでしたら,セキュリティ面が心配だったりするので,見て頂けると嬉しいです。
https://github.com/noka/EvoGallery/releases
外部のRSSを読み込んで表示する方法が知りたいです
noka様 yama様
こちらを使用する際は、https://github.com/noka/getRSSからダウンロードしたgetRSSフォルダをsnippetsにアップロードし、getRSS.install-base.tpl.phpをスニペットに登録すれば良いのでしょうか?初歩的な質問で申し訳ありません。
こちらを使用する際は、https://github.com/noka/getRSSからダウンロードしたgetRSSフォルダをsnippetsにアップロードし、getRSS.install-base.tpl.phpをスニペットに登録すれば良いのでしょうか?初歩的な質問で申し訳ありません。
外部のRSSを読み込んで表示する方法が知りたいです
saba様
こんばんは。ご返事が遅くなりました。ご質問の件、そのとおりで大丈夫なはずです。が、うまく動かない点などございましたら、状況を共有いただければ対応できるかもしれません。よろしくお願いします。
こんばんは。ご返事が遅くなりました。ご質問の件、そのとおりで大丈夫なはずです。が、うまく動かない点などございましたら、状況を共有いただければ対応できるかもしれません。よろしくお願いします。
saba さんが書きました:Source of the post
こちらを使用する際は、https://github.com/noka/getRSSからダウンロードしたgetRSSフォルダをsnippetsにアップロードし、getRSS.install-base.tpl.phpをスニペットに登録すれば良いのでしょうか?