标签: RSS

NetNewsWire

NetNewsWire是老外开发的Apple生态RSS订阅工具。当年Google Reader的优点,它一点不差的继承了。 近期已支持iCloud同步,于是在Mac和iPhone上都安装了。注意要新添账户iCloud才能在两系统间同步。 因为挺优秀的,所以推荐...

阅读更多

蚁阅

记得去年搞feedbro插件的时候网友子痕在文末评论里推荐了蚁阅。对于私人搞的小项目一般没啥大兴趣,但是今天试了一下觉得还不错,非常快速,界面清爽,可以完美替代限制100个的TheOldReader,而且不需要自己建服务器折腾TinyTinyRSS...

阅读更多

启用feedbro插件

近期,用了好多年的inoreader被dns污染无法访问了,真实原因未知。

可能又是GFW在过滤有害信息了吧。话说东西方的斗争还真是激烈啊。

(然而CNN大毒草竟然能正常访问,这又是什么操作?)

无奈之下,搜到了可在Firefox启用的feedbro插件,安装完成,导入从前备份的OPML,设置中文界面Chinese locale: https://raw.githubusercontent.com/YEWl/feedbro-locale/master/feedbro-locale-zh_CN.json。感觉可替代inoreader等rss订阅工具,除了长相不是很好外,功能还是比较强的,速度也较inoreader等快得多。不过需要记住不少快捷键,常用的如下(用于自己备忘):

  • j/k or shift-rightarrow/leftarrow:item down/up selects the next/previous item in the list
  • space/shift-space:page down/up moves the page down/up
  • o/enter:open/close item in list view, expands or collapses the selected item
  • v:view original opens the original source for this article in a new window
  • shift-a:mark all as read marks all items in the current view as read

利用FreshRSS自建RSS订阅器

最近发现inoreader越来越作死了,限制订阅也就算了,朋友更新的rss也无法正确收录。 免费的rss reader如今越来越少,干脆在虚拟主机上自建一个rss服务! 锁定工具:FreshRSS。 环境配置:一般的虚拟主机都支持,只要PHP版本...

阅读更多

The Old Reader,目前最好用的在线rss阅读器

这几周鲜果rss订阅不知犯了什么病,屡不能刷新。换了一阵有道阅读,也不给力,烦恼之下找到了从前注册的The Old Reader,试用之下发现除了速度稍微慢于鲜果,其余各方面都不错。 The Old Reader (home page) 界面清新可人就不...

阅读更多

别了,Google Reader;欢迎,Digg Reader

这个标题是从网上某篇新闻中掘来的。虽然那篇文章写得一般,不过标题着实有文艺风格。 其实这事儿早已是业界公认的秘密了。因此不需要太多言,直接贴图即可。 digg.com/reader Digg Reader 导入Google Reader数据 Dig...

阅读更多

PHP函数输出RSS时读取源错误解决方法

在《PHP函数调用输出RSS以及显示最后修改时间》中提到过将RSS源输出到主页显示最新文章列表的方法。一直以来效果不错。但最近时常碰到一个问题是主题或插件升级常因国内服务器与国外联系较慢而导致.maintenance模式出现(“正在执行例...

阅读更多

单篇文章嵌入不同的RSS或Atom feed地址

在知更鸟的文章《单篇文章嵌入不同的RSS或Atom feed地址》中提到:

该功能主要用于转载文章时,为了尊重原文作者,也为了方便自己和其他阅读者及时掌握原文作者最新文章动态而折腾的一个小功能。

WordPress可以通过使用下面代码,在任意位置调用不同的RSS或Atom feed地址条目,代码来自:官方Codex

<?php     
include_once(ABSPATH . WPINC . '/rss.php');     
wp_rss($uri, $num);     
?>

在此基础上,利用Wordpress自定义栏目功能,改进后的代码:

<?php if ( get_post_meta($post->ID, 'feed', true) ) : ?>     
<p class="feeds" style="font-weight:bold;">本文作者最新文章</p>     
<?php include_once(ABSPATH.WPINC.'/rss.php');?>     
<?php $feed = get_post_meta($post->ID, 'feed', true); ?>     
<?php wp_rss($feed, 5); ?>     
<?php endif; ?>

将该代码加到主题文章页面模版single.php的适当位置,一般放到:

<?php the_content('Read more...'); ?>

的下面,也就是文章末尾。

使用方法:

编辑文章时,在自定义栏目名称中输入:feed,值:为调用的RSS或Atom feed链接地址。

默认显示5篇RSS地址最新文章,可以自行修改其中的数字,不添加自定义栏目“feed”则不显示该内容。


2012年4月8日

补记:今天也测试了一下这个方法,比《调用其它站点RSS文章显示在自己的WordPress网站页面上》方法好,可以自由调用和改换RSS地址,只要在自定义栏目里定义即可。但是输出格式不太好,要修改一下格式。

具体修改方法:

1、新增一个template(以知更鸟的主题为例。具体template需根据自己的主题适当修改):

<?php   
/*
Template Name: CSS Template  
*/  
?>   
  
<?php get_header(); ?>   
<div id="content">   
    <?php if (have_posts()) : ?><?php while (have_posts()) : the_post(); ?>    
    <!-- menu -->   
    <div id="map">   
        <div class="browse">现在位置 ><a title="返回首页" href="<?php echo get_settings('Home'); ?>/">首页</a> ><?php the_title(); ?></div>   
        <div id="feed"><a href="<?php echo get_option('swt_rsssub'); ?>" title="RSS">RSS</a></div>   
    </div>   
    <!-- end: menu -->   
    <!-- entry -->   
    <div class="clear"></div>   
    <div class="entry_box_s">   
        <div class="entry">   
            <div class="page" id="post-<?php the_ID(); ?>">   
                <?php the_content('More &raquo;'); ?>   
//23行到28行为主要部分,把代码插入到你所使用主题的恰当位置,一般是content下方。              
        <?php if ( get_post_meta($post->ID, 'feed', true) ) : ?>        
        <p class="feeds" style="font-weight:bold;">最新文章</p>        
        <?php include_once(ABSPATH.WPINC.'/rss.php');?>        
        <?php $feed = get_post_meta($post->ID, 'feed', true); ?>        
        <?php wp_rss($feed, 10); ?>        
        <?php endif; ?>      
  
        <div class="clear"></div>   
                <?php the_tags('标签: ', ', ', ' '); ?>   
                <span class="edit"><?php edit_post_link('<span class="edita">&nbsp&nbsp&nbsp&nbsp&nbsp</span>', '  ', '  '); ?></span>   
                   
                <?php if(function_exists('the_views')) { print ' 被围观 '; the_views();   } ?>   
            </div>   
        </div>   
  
        <!-- end: entry -->   
        <div class="clear"></div>   
        <i class="lt"></i>   
        <i class="rt"></i>   
    </div>   
    <div class="entry_sb">   
        <i class="lb"></i>   
        <i class="rb"></i>   
    </div>   
    <div class="ct"></div>   
    <?php comments_template(); ?>   
    <?php endwhile; ?><?php else : ?>   
    
    <p class="center">非常抱歉,无与之相匹配的信息。</p>   
    <?php include (TEMPLATEPATH . "/searchform.php"); ?>   
    <?php endif; ?>   
</div>   
<!-- end: content -->   
<?php get_sidebar(); ?>   
<?php get_footer(); ?>

2、在目录下wp-includes找到rss.php,把wp_rss()函数稍作修改,特别是第13行的 esc_attr(strip_tags($item[‘description’])),修改为esc_attr(cut_strr( $item[‘description’], 360)):

function wp_rss( $url, $num_items = -1 ) {   
    if ( $rss = fetch_rss( $url ) ) {   
        echo '<ul>';   
  
        if ( $num_items !== -1 ) {   
            $rss->items = array_slice( $rss->items, 0, $num_items );   
        }   
  
        foreach ( (array) $rss->items as $item ) {   
            printf(   
            '<li><a href="%1$s" title="" target=_blank>%4$s</a><br /><div style="margin-left: 20px; ">%2$s</div></li><br / >',   
                esc_url( $item['link'] ),   
                esc_attr( cut_strr( $item['description'], 360)),   
                esc_attr( strip_tags( $item['pubDate'])),   
                htmlentities($item['title'],ENT_NOQUOTES,"UTF-8")   
            );   
        }   
  
        echo '</ul>';   
    } else {   
    _e( 'An error has occurred, which probably means the feed is down. Try again later.' ); 
    }   
}   
endif;   
  
//此处增加识别中文字函数的函数cut_strr,就不会乱码了。     
function cut_strr($str,$len) {     
 if (strlen($str) <= $len) return $str;     
 $n = 0;     
 $tempstr = '';     
 for ($i=0; $i<$len; $i++) {     
  if (ord(substr($str,$n,1)) > 224) {     
   $tempstr .= substr($str,$n,3);     
   $n += 3;     
   $i++; //把一个中文按两个英文的长度计算     
  } elseif (ord(substr($str,$n,1)) > 192) {     
   $tempstr .= substr($str,$n,2);     
   $n += 2;     
   $i++; //把一个中文按两个英文的长度计算     
  } else {     
   $tempstr .= substr($str,$n,1);     
   $n ++;     
  }     
}     
$tempstr = strip_tags($tempstr);     
return $tempstr.'...';     
}

调用其它站点RSS文章显示在自己的WordPress网站页面上

首先,本篇参考了知更鸟的文章《调用其它站点文章显示在自己的WordPress网站上》。原文如下:

如果在自己WordPress网站上显示其它站点的最新文章是不是很好玩,利用wordpress2.8以上版本新增加的一个fetch_feed函数就可轻松实现.

在添加以下代码之前,应首先在网站根目录新建一个名为 cache 权限为777 的文件夹,作为缓存文件夹.然后在模板(一般是侧边栏sidebar.php模板)适当位置加入以下代码:

<?php
require_once (ABSPATH . WPINC . '/class-feed.php');
$feed = new SimplePie();
$feed->set_feed_url(array('http://zmingcx.com/feed', 'http://themes.wopus.org/feed')); //可以添加多个站点feed地址
$feed->enable_order_by_date(false);
$feed->set_cache_location($_SERVER['DOCUMENT_ROOT'] . '/cache');//缓存文件夹
$feed->init();
$feed->handle_content_type();
?>
<ul>
<?php foreach ($feed->get_items(0,10) as$item)://10是文章篇数 ?>
<li>
<a href="<?php echo $item->get_permalink()?>" rel="bookmark" title="阅读> <?php echo $item->get_title()?>"><?php echo$item->get_title()?></a><!-- 文章标题 -->
<br/><?php echosubstr($item->get_description(),0,180);?><!-- 文章内容 -->
<?php endforeach; ?>
</li>
</ul>

为了方便使用 HotNewspro2.23 版主题的朋友实现此功能,已作好替换文件,供大家下载:

替换文件: feed.zip (1.7 KB, 146 次下载)

将下载的文件分别上传替换原主题目录中,并在style.css中加入:

.rss ul li {
width:209px;
white-space:nowrap;
overflow:hidden;
line-height:23px;
}

注:以上样式也可以不加,使用前可以打开rss.php修改标题及替换调用的feed地址,具体效果可以看本站侧边的”最新主题下载”

但是在实际应用中发现,样式还可以更美观,另外其代码主旨放到侧边栏也不是经常用的,更多的情况应该是放在某个页面或者某篇文章处,因此修改如下:

1、首先在网站根目录新建一个名为 cache 权限为777 的文件夹,作为缓存文件夹。

2、创建模版,可以利用知更鸟HotNewsPro主题文件夹下的几个模版更改。在模版中加入知更鸟上面的代码,但要订正两个地方:

//此处把知更鸟简单的substr函数改为自定义的可以识别中文字的函数cut_strr,就不会乱码了。  
function cut_strr($str,$len) {  
if (strlen($str) <= $len) return $str;  
$n = 0;  
$tempstr = '';  
for ($i=0; $i<$len; $i++) {  
if (ord(substr($str,$n,1)) > 224) {  
$tempstr .= substr($str,$n,3);  
$n += 3;  
$i++; //把一个中文按两个英文的长度计算  
} elseif (ord(substr($str,$n,1)) > 192) {  
$tempstr .= substr($str,$n,2);  
$n += 2;  
$i++; //把一个中文按两个英文的长度计算  
} else {  
$tempstr .= substr($str,$n,1);  
$n ++;  
}  
}  
//此处增加strip_tags(),去掉字串中包含 HTML 及 PHP 的标记,返回字符串形式的值,避免输出值中有分段现象造成各种难看  
$tempstr = strip_tags($tempstr);  
return $tempstr.'...';  
}

以及:

//此处把知更鸟的<br/><?php echosubstr($item->get_description(),0,180);?><!-- 文章内容 --> 改为cut_strr函数  
<br/><div style="margin-left: 20px; "><?php echo cut_strr($item->get_description(),360);?>

3、或者如果你比较懒,直接拷贝本文最下面的代码,在主题中创建一个模版php页面,然后写文时使用模版即可。

<?php  
/*
Template Name: 输出RSS页面  
*/ 
?>  
 
<?php get_header(); ?>  
<div id="content">  
    <?php if (have_posts()) : ?><?php while (have_posts()) : the_post(); ?>   
    <!-- menu -->  
    <div id="map">  
        <div class="browse">现在位置 ><a title="返回首页" href="<?php echo get_settings('Home'); ?>/">首页</a> ><?php the_title(); ?></div>  
        <div id="feed"><a href="<?php echo get_option('swt_rsssub'); ?>" title="RSS">RSS</a></div>  
    </div>  
    <!-- end: menu -->  
    <!-- entry -->  
    <div class="clear"></div>  
    <div class="entry_box_s">  
 
                <div class="entry_title_box">  
                <!-- 分类图标 -->  
                <div class="ico"><?php include('includes/cat_ico.php'); ?></div>  
                <!-- end: 分类图标 -->  
                <div class="entry_title"><?php the_title(); ?></div>  
                <div class="archive_info">  
                    <span class="date"><?php the_time('Y年m月d日') ?></span>  
                    <?php include('includes/source.php'); ?>  
                    <span class="comment"> &#8260; <?php comments_popup_link('暂无评论', '评论数 1', '评论数 %'); ?></span>  
                    <?php if(function_exists('the_views')) { print ' &#8260; 被围观 '; the_views(); print '+';  } ?>  
                      
                    <span class="edit"><?php edit_post_link('&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;', '  ', '  '); ?></span>  
                </div>  
            </div>  
            <!-- end: entry_title_box -->  
 
        <div class="entry">  
            <div class="page" id="post-<?php the_ID(); ?>">  
                <?php the_content('More &raquo;'); ?>  
                <div class="clear"></div>  
            </div>  
        <div class="rss">  
 
                  
<?php  
require_once (ABSPATH . WPINC . '/class-feed.php');  
 
//此处把知更鸟的简单str函数改为可以识别中文字函数的函数cut_strr,就不会乱码了。  
function cut_strr($str,$len) {  
 if (strlen($str) <= $len) return $str;  
 $n = 0;  
 $tempstr = '';  
 for ($i=0; $i<$len; $i++) {  
  if (ord(substr($str,$n,1)) > 224) {  
   $tempstr .= substr($str,$n,3);  
   $n += 3;  
   $i++; //把一个中文按两个英文的长度计算  
  } elseif (ord(substr($str,$n,1)) > 192) {  
   $tempstr .= substr($str,$n,2);  
   $n += 2;  
   $i++; //把一个中文按两个英文的长度计算  
  } else {  
   $tempstr .= substr($str,$n,1);  
   $n ++;  
  }  
}  
//此处增加strip_tags(),去掉字串中包含 HTML 及 PHP 的标记,返回字符串形式的值,避免输出值中有分段现象造成各种难看  
 $tempstr = strip_tags($tempstr);  
return $tempstr.'...';  
}  
 
$feed = new SimplePie();  
$feed->set_feed_url(array('http://feed.feedsky.com/synyan2')); //可以添加多个站点feed地址 
$feed->enable_order_by_date(false);  
$feed->set_cache_location($_SERVER['DOCUMENT_ROOT'] . '/cache');//缓存文件夹  
$feed->init();  
$feed->handle_content_type();  
?>  
<ul>  
<?php foreach ($feed->get_items(0,10) as$item)://10是文章篇数 ?>  
<li>  
<a href="<?php echo $item->get_permalink()?>" rel="bookmark" title="阅读> <?php echo $item->get_title()?>"><?php echo$item->get_title()?></a><!-- 文章标题 -->  
<br/><div style="margin-left: 20px; "><?php echo cut_strr($item->get_description(),360);?>  
<a href="<?php echo $item->get_permalink()?>" rel="bookmark" title="阅读">继续阅读</a><!-- 文章内容 --></div>  
<?php endforeach; ?>  
</li>  
</ul>  
 
            </div>  
        </div>  
        <!-- end: entry -->  
        <div class="clear"></div>  
 
        <?php comments_template(); ?>  
 
        <i class="lt"></i>  
        <i class="rt"></i>  
    </div>  
    <div class="entry_sb">  
        <i class="lb"></i>  
        <i class="rb"></i>  
    </div>  
    <?php endwhile; ?>  
    <?php endif; ?>  
</div>  
<!-- end: content -->  
<?php get_sidebar(); ?>  
<?php get_footer(); ?>

2012年4月8日

补记:

有个方法比这个好,请见《单篇文章嵌入不同的RSS或Atom feed地址》。

Chrome Reader 一键式订阅

如果你是Google Reader的用户,是不是像我一样厌烦了每次看到一个网站想要订阅它的种子的时候都要去找它的RSS种子地址,拷贝,然后跑到http://www.google.com/reader,点上那个见鬼的 然后再粘贴,再点“添加”确认呢? 那么作为Ch...

阅读更多

1 2