【问题标题】:How can I display a 'random' feed item using this jQuery zRSS plugin code?如何使用此 jQuery zRSS 插件代码显示“随机”提要项?
【发布时间】:2010-10-12 14:33:16
【问题描述】:

我正在运行并使用 zRSSFeed jQuery 插件 (http://www.zazar.net/developers/zrssfeed/) 从我的 WordPress 博客中提取提要项目并在其中显示单个提要项目一个单独的 XHTML 文件(在 WordPres 博客之外)。它可以完美地显示指定提要中的最新项目。

我希望它显示来自提要的 RANDOM 项目,而不仅仅是最新或最新的项目。

是否可以修改代码来做到这一点,如果可以,怎么做?

/**
 * Plugin: jquery.zRSSFeed
 * 
 * Version: 1.0.1
 * (c) Copyright 2010, Zazar Ltd
 * 
 * Description: jQuery plugin for display of RSS feeds via Google Feed API
 *              (Based on original plugin jGFeed by jQuery HowTo)
 * 
 *
 **/

(function($){

var current = null; 

$.fn.rssfeed = function(url, options) { 

    // Set pluign defaults
    var defaults = {
        limit: 10,
        header: false,
        titletag: 'h6',
        date: false,
        content: true,
        snippet: false,
        showerror: true,
        errormsg: 'View our customer testimonials <a href="http://renownestates.com/blog/category/testimonials/">here</a>',
        key: null
    };  
    var options = $.extend(defaults, options); 

    // Functions
    return this.each(function(i, e) {
        var $e = $(e);

        // Add feed class to user div
        if (!$e.hasClass('rssFeed')) $e.addClass('rssFeed');

        // Check for valid url
        if(url == null) return false;

        // Create Google Feed API address
        var api = "http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&callback=?&q=" + url;
        if (options.limit != null) api += "&num=" + options.limit;
        if (options.key != null) api += "&key=" + options.key;

        // Send request
        $.getJSON(api, function(data){

            // Check for error
            if (data.responseStatus == 200) {

                // Process the feeds
                _callback(e, data.responseData.feed, options);
            } else {

                // Handle error if required
                if (options.showerror)
                    if (options.errormsg != '') {
                        var msg = options.errormsg;
                    } else {
                        var msg = data.responseDetails;
                    };
                    $(e).html('<div class="rssError"><p>'+ msg +'</p></div>');
            };
        });             
    });
};

// Callback function to create HTML result
var _callback = function(e, feeds, options) {
    if (!feeds) {
        return false;
    }
    var html = '';  
    var row = 'odd';    

    // Add header if required
    if (options.header)
        html += '<div class="rssHeader">' +
            '<a href="'+feeds.link+'" title="'+ feeds.description +'">'+ feeds.title +'</a>' +
            '</div>';

    // Add body
    html += '<div class="rssBody">' +
        '<ul>';

    // Add feeds
    for (var i=0; i<feeds.entries.length; i++) {

        // Get individual feed
        var entry = feeds.entries[i];

        // Format published date
        var entryDate = new Date(entry.publishedDate);
        var pubDate = entryDate.toLocaleDateString() + ' ' + entryDate.toLocaleTimeString();

        // Add feed row
        html += '<li class="rssRow '+row+'">' + 
            '<'+ options.titletag +'><a href="'+ entry.link +'" title="View this feed at '+ feeds.title +'">'+ entry.title +'</a></'+ options.titletag +'>'
        if (options.date) html += '<div>'+ pubDate +'</div>'
        if (options.content) {

            // Use feed snippet if available and optioned
            if (options.snippet && entry.contentSnippet != '') {
                var content = entry.contentSnippet;
            } else {
                var content = entry.content;
            }

            html += '<p>'+ content +'</p>'
        }

        html += '</li>';

        // Alternate row classes
        if (row == 'odd') {
            row = 'even';
        } else {
            row = 'odd';
        }           
    }

    html += '</ul>' +
        '</div>'

    $(e).html(html);
};
})(jQuery);

【问题讨论】:

    标签: jquery rss random feed


    【解决方案1】:

    基本上,取出循环并使用 Math.random() 选择一个条目

    http://jsfiddle.net/Vdyb5/

    【讨论】:

    • 感谢您的回复戴夫!我已将 jquery 修改为您在上面发布的内容,但现在什么也没有显示。您能否发布整个脚本并实施您的更改?只是为了确保我没有做错任何事情或错过任何事情。
    • 让我弄清楚了,因为我一直将“限制”改回“1”,以为我只想显示一个,但后来意识到这是其中一个的“池”会被选中。 :) 再次感谢您!
    猜你喜欢
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    • 2016-04-06
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    • 1970-01-01
    相关资源
    最近更新 更多