自宅サーバの整理箱

自宅サーバを構築しwordpress,fedora,CentOSの作業メモ

*

アンテナサイト風にRSSを取得して画像を表示

   

アンテナサイトについている外部RSS。
画像を中心としたグリッド風の表示ができるように作成しました。
アダルトブログにはれば、まるで有料ソフトで作成したxx速報に
そっくりになります。

出来上がりのイメージはこちらになります。
>>RSS画像表示サンプル

<?php
//-----------------------
//環境設定
//-----------------------
//MagPieまでのパスを設定
require_once('/var/www/magpierss/rss_fetch.inc');

//RSS群を定義
$rssUrl=array(
'http://blog.livedoor.jp/news4vip2/index.rdf',//ニュー速クオリティ
'http://himasoku.com/index.rdf',//ひま速
'http://kanasoku.info/index.rdf',//カナ速
'http://workingnews.blog117.fc2.com/?xml',//働くモノニュース
'http://blog.livedoor.jp/dqnplus/index.rdf',//痛いニュース
'http://majikichi.com/index.rdf',//マジキチ速報
''
);
//最大件数を定義
$num = 9;

//---------設定はここまで
//-----------------------
//以下メイン処理
//-----------------------
//MagpieRSS
define('MAGPIE_OUTPUT_ENCODING','UTF-8');
define('MAGPIE_CACHE_ON', false);
 
//配列編集
foreach ($rssUrl as $no => $rss_url) {
	$rss = @fetch_rss($rss_url);
	if ($rss != NULL) {
		for ($i=0; $i<count($rss->items); $i++) {
		$rss->items[$i]["site_title"] = $rss->channel["title"];
		$rss->items[$i]["site_link"] = $rss->channel["link"];
		}
	$rssItemsArray[] = $rss->items;
	}
}
 
$concatArray = array();
for($i=0;$i<count($rssItemsArray);$i++)
{
	$concatArray = array_merge($concatArray,$rssItemsArray[$i]);
}
 
foreach ($concatArray as $no => $values) 
{
	//RSSの種類によって日付を取得
	if($values['published'])
	{
		$date = $values['published'];
	}
	elseif($values['dc']['date'])
	{
		$date = $values['dc']['date'];
	}
	elseif($values['pubdate'])
	{
		$date = $values['pubdate'];
	}
	else
	{
	}
	$date=date("Y-m-d H:i:s",strtotime($date));//形式を揃える
	  
	//Filter
	$nowtime = date("Y-m-d H:i:s",strtotime( "now" ));//現在時刻の取得
	if($date > $nowtime){//未来記事の排除
	}elseif(preg_match("/AD/", $values["title"])){//広告記事の排除
	}elseif(preg_match("/PR/", $values["title"])){
	}else{
	  
	//値の定義
	$title=$values["title"];
	$link=$values["link"];
	$site_title=$values["site_title"];
	$site_link=$values["site_link"];
	  
	//画像取得
	if($values['content'])
	{
		$content=$values["content"]["encoded"];
	}
	elseif($values['description'])
	{
		$content = $values['description'];
	}
		preg_match('/<img.*>/i', $content, $img_all);
		preg_match('/http.*?(.gif|.png|.jpg|.jpeg$|.bmp)/i', $img_all[0], $gazo);
		//配列
		$rssArray[]=array($date, $title, $link, $site_title, $site_link,$gazo);
	}
}
 
//取得したRSS群を降順でソート
function cmp($a, $b) {
	if ($a[0] == $b[0]) return 0;
	return ($a[0] > $b[0]) ? -1 : 1;
}
usort($rssArray, 'cmp');

if(count($rssArray) > $num)
{
	$count=$num;
}
else
{
	$count=count($rssArray);
}
for ($i=0; $i<$count; $i++) {
	$date=date("m/d H:i",strtotime($rssArray[$i][0]));
	$title=$rssArray[$i][1];
	$link=$rssArray[$i][2];
	$site_title=$rssArray[$i][3];
	$site_link=$rssArray[$i][4];
	$gazo=$rssArray[$i][5];
    if (empty($gazo[0])) {
    	$gazourl = "/noimage.png";
    }else{
    	$gazourl = $gazo[0];
    }
	//-----------------------
	//HTML整形(好きな形に変更!)
	//-----------------------
	echo "<!--RSS START-->";
	echo "<div class='entry-toppage'>";
	echo "<div class='sumbox-toppage'>";
	echo "<a href='" . $link . "'><img src='" . $gazourl . "'></a>";
	echo "</div>";
	echo "<div class='entry-content-toppage'>" . $title . "</div>";
	echo "</div>";
	echo "<!--RSS END -->";
}
?>

おまけですが、スタイルシートはこんな感じでグリッド風にしてみました。

.entry-toppage {
	margin: 15px;
	float: left;
        padding: 5px;
	margin 10px;
	width: 160px;
        height: 220px;
	border: 1px solid #ccc;
	background-color: #FFF;
}
.sumbox-toppage {
	float: left;
}
.sumbox-toppage img {
        margin-bottom: 1px;
	width:150px;
}
.entry-content-toppage {
	clear: both;
        font-size: 13px;
	margin-top: 0px;
}

 - Word Press

 Total 200 views