WordPress.org

Ready to get started?Download WordPress

Forums

WP RSS Aggregator
[resolved] Adding a thumbnail? (23 posts)

  1. jennybeaumont
    Member
    Posted 2 years ago #

    This is looking like just the plugin I need...ideas on how to add an image?
    thnx!
    -jennyb

    http://wordpress.org/extend/plugins/wp-rss-aggregator/

  2. jennybeaumont
    Member
    Posted 2 years ago #

    ok, worked it out:

    using the now infamous add thumbnail code to functions.php, to get the featured image into the content of the feed

    function insertThumbnailRSS($content) {
    global $post;
    if ( has_post_thumbnail( $post->ID ) ){
    $content = '' . get_the_post_thumbnail( $post->ID, 'big-thumb' ) . '' . $content;
    }
    return $content;
    }
    
    add_filter('the_excerpt_rss', 'insertThumbnailRSS');
    add_filter('the_content_feed', 'insertThumbnailRSS');

    then, adding this bit in wp-rss-aggregator.php with the foreach statement:

    preg_match_all('/<img([^>]*)>/i', $item->get_content(), $matches);
    // Get all of the image tags

    and finally adding the variable $all_images[0] within the echo where I want the image to appear.

    voilĂ  :)
    $all_images = $matches[0];

  3. stuartirene
    Member
    Posted 2 years ago #

    hi there,

    As I'm not good in coding, could anyone guide me on the specific location in the php files to place the codes as suggested above? Many thanks.

  4. jennybeaumont
    Member
    Posted 2 years ago #

    Hi stuartirene,

    Look for the for/each statement that creates the loop for the feed, it's toward the bottom if memory serves...I'm traveling this week and don't have the files with me right now...let me know if you figure it out, otherwise I'll post the line numbers when I'm home next week!

    Best,
    -jennyb

  5. stuartirene
    Member
    Posted 2 years ago #

    Hi Jennybeaumont,

    Thanks for your reply. Still haven't got a clue yet but I was thinking of slotting your code:

    preg_match_all('/<img([^>]*)>/i', $item->get_content(), $matches);
    // Get all of the image tags

    into:

    foreach ( $items as $item ):
    $item_date = $item->get_date('l jS F (Y-m-d)');
    if ( $item_date == date('l jS F (Y-m-d)', strtotime('today') ) ) {
    $items_today[] = $item;
    }
    else if ( $item_date == date('l jS F (Y-m-d)', strtotime('yesterday') ) ) {
    $items_yesterday[] = $item;
    }
    else if ( $item_date == date('l jS F (Y-m-d)', strtotime('-2 days') ) ) {
    $items_two_days_ago[] = $item;
    }
    else {
    $items_older[] = $item;
    }

    HERE!

    endforeach;

    Not so sure if it's correct. However for the final step, $all_images[0], I'm lost :(

    Anyway, hope to hear from you once you're back from traveling. See you and many thanks.

  6. jennybeaumont
    Member
    Posted 2 years ago #

    Hya,

    I think I put mine at the top, after the foreach ($items as $ item):, but then I actually deleted all the if statements because I wasn't interested in displaying my feed broken down by date in that way. Give it a try and see what happens! And I'll be happy to help when I'm back if it doesn't work for you...

    Best,
    -jennyb

  7. stuartirene
    Member
    Posted 2 years ago #

    Hi,

    Thanks. Will try it. How about the final step, which is adding the variable "$all_images[0]" and "$all_images = $matches[0];". Do you know where shall I shot it? Thanks.

  8. jennybeaumont
    Member
    Posted 1 year ago #

    Heya - so, did you work it out? In case not, here's what I did:

    In the plugin folder, I modified wp-rss-aggregator.php, adding preg_match_all('/<img([^>]*)>/i', $item->get_content(), $matches); at line 328 just inside the foreach ` foreach ( $items as $item ) {
    // Match the image tags in the content`

    Again, I commented out the different date options, preferring to have only one listing. So if you want to keep the multiple listings by date (today, last week, etc), you should add this bit in each foreach statement.

    The function

    function insertThumbnailRSS($content) {
    global $post;
    if ( has_post_thumbnail( $post->ID ) ){
    $content = '' . get_the_post_thumbnail( $post->ID, 'big-thumb' ) . '' . $content;
    }
    return $content;
    }
    
    add_filter('the_excerpt_rss', 'insertThumbnailRSS');
    add_filter('the_content_feed', 'insertThumbnailRSS');

    I added into the functions.php of my theme.

    Here is the full bit of code I'm currently using in wp-rss-aggregator.php to create my custom feed which should help you make more sense of that last bit you were asking about. I haven't had a chance to take this further since I've been back home, so this may evolve as there are still some quirks I'm trying to work out. Hope it helps:

    preg_match_all('/<img([^>]*)>/i', $item->get_content(), $matches);
            // Get all of the image tags
            $all_images = $matches[0];
                    echo '<div class="network_news"><a href="'. $item->get_permalink() .'">'.$all_images[0].'</a><div class="article_texte"><span class="feed-source">'.$item->get_feed()->get_title() . '</span> <br> <span class="date">' . $item->get_date('d M Y').'</span><h2><a class="colorbox" href="' . $item->get_permalink() .'">'.$item->get_title(). '</h2></a><a class="lirelasuite" href="'. $item->get_permalink() .'">Lire la suite</a></div></div>';
  9. Rose Pajaroja
    Member
    Posted 1 year ago #

    Hi jennybeaumont

    I don't know how to put those codes. :(

    I am trying to put them one at the function.php of my theme and one at the plug-in php file. :( I was putting them at the top. Im not doing it correctly, please guide me. :(

    Thanks. ^^

  10. jennybeaumont
    Member
    Posted 1 year ago #

    Hi qtrose,

    So the first step is to activate thumbnails for your RSS feed by placing this code in the functions.php file of your site's theme:

    function insertThumbnailRSS($content) {
    global $post;
    if ( has_post_thumbnail( $post->ID ) ){
    $content = '' . get_the_post_thumbnail( $post->ID, 'big-thumb' ) . '' . $content;
    }
    return $content;
    }
    
    add_filter('the_excerpt_rss', 'insertThumbnailRSS');
    add_filter('the_content_feed', 'insertThumbnailRSS');

    It shouldn't matter where you put it, but go ahead and put it at the bottom before the final ?> to be safe.

    This assumes that thumbnails are also active in your theme, and that you are using the featured image for each article (tho it may work with a simple attached image, i haven't tested that).

    The next step is to modify wp-rss-aggregator.php, the file within the plugin itself. Personally I have removed the foreach statements that break the feed up into parts: Today, Yesterday, 2 days ago, More than 2 days ago. If you are keeping that configuration, the change must be made for each one (so, 4 times).

    The first one starts at around line 299, where it says
    foreach ( $items_today as $item ) {

    Just AFTER that bit, add the following:

    preg_match_all('/<img([^>]*)>/i', $item->get_content(), $matches);
            // Get all of the image tags
            $all_images = $matches[0];

    Then you have to add the image into the content. The original code looks like this:

    echo $link_before . '<a class="colorbox" href="' . $item->get_permalink() .'">'. $item->get_title(). ' '. '</a>';
                    echo '<br><span class="feed-source">Source: '.$item->get_feed()->get_title()/* . ' | ' . $item->get_date('l jS F').''*/ . '</span>';
                    echo $link_after;

    Where you add the image depends on how you want to format it. This is the image code to insert into the above code:
    <a href="'. $item->get_permalink() .'">'.$all_images[0].'</a>

    Note that it includes the link which is not obligatory. You could just add $all_images[0], up to you.

    Also note the these changes must be made for each of the 4 instances (Today, Yesterday, 2 days ago, More than 2 days ago), unless like me you've combined them into one feed.

    My complete code (just for the bit that interests us) modification to the plugin looks like this:

    foreach ( $items as $item ) {
    // Match the image tags in the content
    
    preg_match_all('/<img([^>]*)>/i', $item->get_content(), $matches);
    // Get all of the image tags
    $all_images = $matches[0];
    
    echo '<div class="network_news"><a>get_permalink() .'">'.$all_images[0].'</a><div class="article_texte"><span class="feed-source">'.$item->get_feed()->get_title() . '</span>  <span class="date">' . $item->get_date('d M Y').'</span><h2><a>get_permalink() .'">'.$item->get_title(). '</h2></a><a>get_permalink() .'">Lire la suite</a></div></div>'; 
    
    //  echo $link_after;
                }

    Hope this helps, good luck.
    -jennyb

  11. LaraBoshoff
    Member
    Posted 1 year ago #

    Hi Jenny

    Wow, you explained this all so well, and I am still not getting it totally since I am a Web Designer who is veering far out beyond my limits.

    I'm actually trying to use your code to remove the time instances of 'today', 'more than 2 days ago' etc so that I just have one feed where I can control the maximum amount of items displayed.

    I tried to use your complete code in wp-rss-aggregator.php but I wasn't sure what to block out and what to leave in.

    So disregarding the thumbnail bit, what exactly would I put in wp-rss-aggregator.php if I wanted it to display as I just explained?

    Oh pretty please could you help me!

    Lara
    http://www.thelarkroom.com

  12. jennybeaumont
    Member
    Posted 1 year ago #

    Hi Lara,

    Yes, that's what I did - I combined the code into one solid feed rather than the 4 time instances that the plugin provides for.

    To achieve this, I pretty much just commented out everything after $items = $feed->get_items(); (approx line 282, give or take). And my final code for that end section is what you see above. Of that code, all of the classes and the link text is of course specific to my site and should be replaced with your own. But that won't keep things from working, it may just look funny ;)

    I've pasted my complete modified file here: http://pastebin.com/sD4zBVFE

    As for the thumbnail code you add to your functions.php file, be careful to name the desired thumb size according to your own site. In my above example I use "big-thumb", which is a custom size I've defined. The default sizes are "small", "medium", "full" - take care to use the appropriate one for your needs, or to define your own.

    Hope that helps!
    -jennyb

    Oh, and PS: note that I also add the "limit" function in my file. You can read about that in a separate post here: http://wordpress.org/support/topic/plugin-wp-rss-aggregator-limit-results?replies=22#post-2992902

  13. LaraBoshoff
    Member
    Posted 1 year ago #

    Wow, thank you SO much for the explanation! I'm going to try and implement it now.

  14. LaraBoshoff
    Member
    Posted 1 year ago #

    Great, I did this and it works! Thank you!

    Just 1 thing:

    I'm trying to include the excerpt by calling:

    .$item->excerpt().

    For example:

    echo '<div class="network_news">
                    <div class="netnews_text">
                    <h2><a class="colorbox" href="' . $item->get_permalink() .'">'.$item->get_title(). '</h2></a> <span class="date">' . $item->get_Local_date('%e %B %G').'</span><span class="excerpt-abundant">'.$item->excerpt(). '</span>
                    Source - <a class="lirelasuite" href="'. $item->get_permalink() .'"><span class="site-membre">'.$item->get_feed()->get_title() . '</span></a></div></div>';

    But that doesn't seem to work. Any quick fix you know of?

  15. jennybeaumont
    Member
    Posted 1 year ago #

    Ah, careful, these aren't wordpress hooks, they're simplepie hooks!
    http://simplepie.org/wiki/reference/start

    Unless I'm mistaken, there is no "excerpt" defined in a simplepie RSS feed, only "content". I think the best you can do is to call the content "get_content()", then limit the number of characters that display.

    Here's some discussion I found, might give this a try :
    http://tech.groups.yahoo.com/group/simplepie-support/message/4166

    Let me know if it works!
    -jennyb

  16. LaraBoshoff
    Member
    Posted 1 year ago #

    Ah!

    Okay, so I tried pulling through the basic full content using this:

    ' . $item->get_content() . '

    and it works!!!!

    But now trying to shorten it, using this (which the guy in the thread you linked to, said worked):

    <?php
    
    echo '<div class="newscontent">' . shorten($item->get_content(), 150) . '</div>';

    I run into problems since I'm not sure how to situate that inside the current code.

    preg_match_all('/<img([^>]*)>/i', $item->get_content(), $matches);
            // Get all of the image tags
                    setlocale(LC_TIME, 'fr_FR');
            $all_images = $matches[0];
                    echo '<div class="network_news">
                    <div class="netnews_text">
                    <h2><a class="colorbox" href="' . $item->get_permalink() .'">'.$item->get_title(). '</h2></a> <span class="date">' . $item->get_date('j F Y').'</span>
    
    <span class="excerpt">   
    
    echo '<div class="newscontent">' . shorten($item->get_content(), 150) . '</div>';
    
    </span>                
    
    Source - <a class="lirelasuite" href="'. $item->get_permalink() .'" target="new"><span class="site-membre">'.$item->get_feed()->get_title() . '</span></a></div></div>';
         if($counter >= $feedlimit) break;

    Thanks!
    Lara

  17. jennybeaumont
    Member
    Posted 1 year ago #

    Hey - I haven't tried this yet. What kind of problems are you running into? Does the shorten code work? Or are you talking about formatting issues?

  18. LaraBoshoff
    Member
    Posted 1 year ago #

    No, it's just the shorten code that I can't get to work.

    For example, how to nest this:

    <?php
    
    echo '<div class="newscontent">' . shorten($item->get_content(), 150) . '</div>';

    into your code that you used.

  19. jennybeaumont
    Member
    Posted 1 year ago #

    heya - so i haven't actually tried this, it's just something i found when googling the problem for you. you might check the simplepie site, they have quite a bit of documentation...wish i had time right now, but am afraid i'm a bit slammed at the moment! let me know what you find!
    cheers,
    -jennyb

  20. LaraBoshoff
    Member
    Posted 1 year ago #

    Okay, will do, thanks so much for your help!

  21. dhoffmann
    Member
    Posted 1 year ago #

    Hi Jenny, can we see it (thumbnails) anywhere in action? Daniel

  22. jennybeaumont
    Member
    Posted 1 year ago #

    Hi Daniel,

    Why, yes! Both the thumbnails and limit function can be seen in action here: http://www.yooko.fr

    The site is in French, and although the main site exists in English, the network sites do not yet. Look to the right column under Network, they are the first list of posts under the heading "Les actualités du network".

    best,
    -jennyb

  23. jennybeaumont
    Member
    Posted 1 year ago #

    Oh, and here's the "full page" of posts with a different layout - so flexible, love this plugin!

    http://www.yooko.fr/actualites/

Topic Closed

This topic has been closed to new replies.

About this Plugin

About this Topic