外部のRSSを読み込んで表示する方法が知りたいです
外部のRSSを読み込んで表示する方法が知りたいです
MODX Evolutionで外部のRSSを読み込んで表示する目的で「piex」を利用していましたが、新しいMODX Evolutionで利用できなかった為、「NewsParserX」を利用してみたのですが、ページの表示が4秒ほど遅く表示されるようになっていまいました。
「piex」と「NewsParserX」以外で、外部のRSSを読み込んで表示する方法があれば教えていただけますでしょうか。
「piex」と「NewsParserX」以外で、外部の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を読み込んで表示する方法が知りたいです
上記コード、GitHubに登録していただけたらmodx.jpで管理を引き継ぎます。いかがでしょうか?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;
外部の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を読み込んで表示する方法が知りたいです
saba様
こんばんは。ご返事が遅くなりました。ご質問の件、そのとおりで大丈夫なはずです。が、うまく動かない点などございましたら、状況を共有いただければ対応できるかもしれません。よろしくお願いします。
こんばんは。ご返事が遅くなりました。ご質問の件、そのとおりで大丈夫なはずです。が、うまく動かない点などございましたら、状況を共有いただければ対応できるかもしれません。よろしくお願いします。
外部のRSSを読み込んで表示する方法が知りたいです
初めての投稿です。
getRSSで、テンプレートで使用できるプレースホルダは,[+title+][+url+][+date+][+summary+]とありますが、
「+category+」を取得したいのですが、phpの記述の方法がわかりません。
どなたかご教授していただけないでしょうか?
getRSSで、テンプレートで使用できるプレースホルダは,[+title+][+url+][+date+][+summary+]とありますが、
「+category+」を取得したいのですが、phpの記述の方法がわかりません。
どなたかご教授していただけないでしょうか?
外部のRSSを読み込んで表示する方法が知りたいです
https://github.com/noka/getRSS/blob/mas ... hp#L37-L41
ここでしょうか?当てずっぽうですが、get_category()とかかなという気がします。
ここでしょうか?当てずっぽうですが、get_category()とかかなという気がします。
外部のRSSを読み込んで表示する方法が知りたいです
yama 様
早速のアドバイスありがとうございます。\(^o^)/
試してみます。
早速のアドバイスありがとうございます。\(^o^)/
試してみます。
外部のRSSを読み込んで表示する方法が知りたいです
'category'=> $e->get_category(),
と追加記してみたのですが、うまく表示できませんでした。
「6fb7883d41af12d519774683e9d7a251」と表示されました。
と追加記してみたのですが、うまく表示できませんでした。
「6fb7883d41af12d519774683e9d7a251」と表示されました。
外部のRSSを読み込んで表示する方法が知りたいです
コード: 全て選択
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++==$n)break;
}
コード: 全て選択
foreach ($feed->get_items() as $e ) {
print_r($e);exit;
$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++==$n)break;
}
外部のRSSを読み込んで表示する方法が知りたいです
yama 様
上記の通り、記述しましたが、表示ページで以下のようなエラーが出ました。
Parse error: syntax error, unexpected '}', expecting end of file in D:\xampp\htdocs\saijo\manager\includes\document.parser.class.inc.php(2238) : eval()'d code on line 45
当方の環境
modx1.0.22J
xammp 3.2.4
php 7.3
上記の通り、記述しましたが、表示ページで以下のようなエラーが出ました。
Parse error: syntax error, unexpected '}', expecting end of file in D:\xampp\htdocs\saijo\manager\includes\document.parser.class.inc.php(2238) : eval()'d code on line 45
当方の環境
modx1.0.22J
xammp 3.2.4
php 7.3
外部のRSSを読み込んで表示する方法が知りたいです
オレンジみかん さん
こんにちは。
yamaさま
ご対応ありがとうございます。
phpの環境が異なるので、ちょっとわかりませんが、
https://github.com/noka/getRSS/blob/mas ... se.tpl.php
に更新版をアップしてみました。
[+category+]
[+categories+]
を追加しています。前者は最初の一件のラベル、後者は、すべての所属カテゴリをカンマ区切りで出力してくれるはずです。
こんにちは。
yamaさま
ご対応ありがとうございます。
phpの環境が異なるので、ちょっとわかりませんが、
https://github.com/noka/getRSS/blob/mas ... se.tpl.php
に更新版をアップしてみました。
[+category+]
[+categories+]
を追加しています。前者は最初の一件のラベル、後者は、すべての所属カテゴリをカンマ区切りで出力してくれるはずです。
外部のRSSを読み込んで表示する方法が知りたいです
yama 様
自己解決したました。
phpは全くの素人ですが、はじめに投稿した
'category'=> $e->get_category(),
を
'category'=> $e->get_category()->get_label(),
としたら、うまく表示されました。
noka 様
はじめまして。対応いただき、ありがとうございます。\(^o^)/
当然ですが、nokaさんの更新版のほうが断然良いので早速使わせていただきます。
ps
yamaさん、nokaさん、に感謝感激です。
もう一つ、問題を抱えてまして後でフォーラム投稿いたしますので、
図々しいのですがいろいろとアドバイスをお願いいたしますm(_ _)m
本当にありがとうございました。
自己解決したました。
phpは全くの素人ですが、はじめに投稿した
'category'=> $e->get_category(),
を
'category'=> $e->get_category()->get_label(),
としたら、うまく表示されました。
noka 様
はじめまして。対応いただき、ありがとうございます。\(^o^)/
当然ですが、nokaさんの更新版のほうが断然良いので早速使わせていただきます。
ps
yamaさん、nokaさん、に感謝感激です。
もう一つ、問題を抱えてまして後でフォーラム投稿いたしますので、
図々しいのですがいろいろとアドバイスをお願いいたしますm(_ _)m
本当にありがとうございました。
外部のRSSを読み込んで表示する方法が知りたいです
noka 様
更新版で問題が発生しました。
[+categories+]と記述すると、最初のカテゴリ①、2番目①,②、3番目①,②,③とカテゴリが2番目以降重複されて表示されてしまいます。
当方のチャンクテンプレートの記述が悪いのでしょうか?
テンプレートの記述は、
[+categories+]
<h6 class=" bd-textblock-63 bd-content-element">[+title+]</h6>
<p class=" bd-textblock-67 bd-content-element">[+summary:summary(80)+]</p>
<a class="bd-linkbutton-27 bd-no-margins bd-button bd-own-margins bd-content-element" href="[+url+]" target=_blank>Read More</a>
[+category+]は正常です。
引き続き、よろしくお願いします。
更新版で問題が発生しました。
[+categories+]と記述すると、最初のカテゴリ①、2番目①,②、3番目①,②,③とカテゴリが2番目以降重複されて表示されてしまいます。
当方のチャンクテンプレートの記述が悪いのでしょうか?
テンプレートの記述は、
[+categories+]
<h6 class=" bd-textblock-63 bd-content-element">[+title+]</h6>
<p class=" bd-textblock-67 bd-content-element">[+summary:summary(80)+]</p>
<a class="bd-linkbutton-27 bd-no-margins bd-button bd-own-margins bd-content-element" href="[+url+]" target=_blank>Read More</a>
[+category+]は正常です。
引き続き、よろしくお願いします。