現在ワードプレスサイトに、別のワードプレスブログの記事をRSSで取得し表示させています。
現在RSSは5つのサイトから取得するよう設定していますが以下のことがうまくいきません。
■記事の取得数が10になっているものを変更したい。
1ページに表示する最大数が10で取得する記事数を全記事にしたいと考えています。素人ですのでRSS取得のphpコードは他のサイトからコピーして引用して使わせていただいています。
わかる方がいらっしゃいましたらどこを変更すれば良いか教えていただけますでしょうか。
よろしくお願いいたします。
(以下、RSS取得コード)
https://gist.github.com/cherenkov/2663757より引用して使わせていただいております。
================================================
PHP
1<?php 2$nums = 10; // 1ページの表示件数 3$rsslist = array('http://michaelsan.livedoor.biz/index.rdf', // RSSのURLを配列にして代入します。 4 'http://blog.livedoor.jp/domesaka/index.rdf', // 2件で大丈夫な場合はこの行を削除します。(※行を追加して4件以上にしても大丈夫です。) 5 'http://news4vip.livedoor.biz/index.rdf'); 6//デバッグ時はコメントアウトにする。うまくいかなかったらcookieを消す。 7session_start(); // ページ遷移ごとにリクエストしないようにセッションを使用します。 8header('Content-Type:text/html; charset=UTF-8'); 9if(!isset($_SESSION['rssses'])) { 10 foreach($rsslist as $url) { 11 $tmpData = file_get_contents($url); 12 $tmpData = str_replace('dc:creator', 'Creator', $tmpData); 13 $tmpData = str_replace('dc:date', 'Date', $tmpData); 14 $tmpData = str_replace('pubDate', 'Date', $tmpData); 15 $rssData[] = simplexml_load_string($tmpData); 16 } 17 foreach($rssData as $key => $value) { 18 if($value['version'] == '2.0') { 19 foreach($value->channel->item as $item) { 20 $date = date_create($item->Date); 21 $item->Date = date_format($date, 'Y-m-d\TH:i:sP'); 22 } 23 } 24 } 25 $i = count($rsslist); 26 $allrss = array(); 27 for($n=0;$n<$i;$n++) { 28 $rssarr[$n] = xml2arr($rssData[$n]); 29 //pr($rssarr[$n]); 30 $channelTitle = $rssarr[$n]['channel']['title']; 31 if(isset($rssarr[$n]['channel']['item'])) { 32 $rssarr[$n]['channel']['item'] = addChannelTitle($rssarr[$n]['channel']['item'], $channelTitle); 33 $allrss = array_merge($allrss, $rssarr[$n]['channel']['item']); 34 } else { 35 $rssarr[$n]['item'] = addChannelTitle($rssarr[$n]['item'], $channelTitle); 36 $allrss = array_merge($allrss, $rssarr[$n]['item']); 37 } 38 } 39 usort($allrss, 'cmp'); 40 //pr($allrss); 41 $i = count($allrss); 42 for($n=0;$n<$i;$n++) { 43 if(empty($allrss[$n]['title'])) { 44 $allrss[$n] = null; 45 } 46 } 47 48 $_SESSION['rssses'] = $allrss = array_filter($allrss); 49} else { 50 $allrss = $_SESSION['rssses']; 51} 52function addChannelTitle($items, $channelTitle) { 53 $result = array(); 54 foreach($items as $item) { 55 $result[] = array_merge($item, array('channel_title'=>$channelTitle)); 56 } 57 return $result; 58} 59//dumpして確認する関数 60function pr($var) { 61 echo '<pre>'; print_r($var); echo '</pre>'; 62} 63# オブジェクト→配列変換用関数(http://soft.fpso.jp/develop/php/entry_2764.html) 64function xml2arr($xmlobj) { 65 $arr = array(); 66 if (is_object($xmlobj)) { 67 $xmlobj = get_object_vars($xmlobj); 68 } else { 69 $xmlobj = $xmlobj; 70 } 71 foreach ($xmlobj as $key => $val) { 72 if (is_object($xmlobj[$key])) { 73 $arr[$key] = xml2arr($val); 74 } else if (is_array($val)) { 75 foreach($val as $k => $v) { 76 if (is_object($v) || is_array($v)) { 77 $arr[$key][$k] = xml2arr($v); 78 } else { 79 $arr[$key][$k] = $v; 80 } 81 } 82 } else { 83 $arr[$key] = $val; 84 } 85 } 86 return $arr; 87} 88function cmp($a, $b) 89{ 90 return strcmp($b['Date'], $a['Date']); 91} 92$maxnum = count($allrss); // 最大件数を取得 93$pages = ceil($maxnum / $nums); // 最大ページ数を計算 94$page = (empty($_GET['page'])) ? 1 : $_GET['page']; // 現在のページを取得 95$start = ($page - 1) * $nums; // スタートページを設定 96$script = basename($_SERVER['SCRIPT_NAME']); 97$link = ''; 98// 前ページ・次ページのリンク設定※表示形式は自由に指定してください。 99if ($page > 1) $link = '<a href="'.$script.'?page='.($page -1) .'">PREV</a> |'; 100// 各ページへのリンクを表示する場合 101for($n = 1; $n <= $pages; $n++) { 102 if($n == $page){ 103 $link .= '['.$n.']'; 104 } else { 105 $link .= '[<a href="'.$script.'?page='. $n .'">'.$n.'</a>]'; 106 } 107} 108if ($page < $pages) $link .= ' <a href="'.$script.'?page='.($page + 1) .'">NEXT</a>'; 109echo '<div style="margin: 15px 10px;">' . $link . "</div>\n"; 110echo "<h3>新着RSS</h3>\n<ul>\n"; 111$count = 1; 112foreach ($allrss as $rss => $item) { 113 if ($count > $start && $count <= $start + $nums) { 114 $date = preg_replace('/([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9:]{3}[0-9]{2})[0-9+:]+$/', '$1/$2/$3 $4', $item['Date']); 115 echo '<li class=""><a href="' . $item['link'] . '"'; 116 echo '>' . $date . ' ' . $item['title'] . ' ' . $item['channel_title'] .'</a></li>'; 117 echo "\n"; 118 } 119 $count++; 120} 121echo "</ul>\n"; 122echo '<div style="margin: 15px 10px;">' . $link . "</div>\n"; 123//pr($allrss);
================================================
回答2件
あなたの回答
tips
プレビュー