controlling quantity shown in 'recent blog posts' and 'recent comments'?

chromatic - January 15, 2005 - 07:06

Can the sidebar blocks that show recent items be altered to show more or less posts ala what can be done for nodes on the main page? I find that 'recent comments' takes up a lot of space considering they have the dates attached.

If the dates and comment teasers had their own classes specified I could turn them via display: none in css, but that would be a stopgap solution. Anyway, I'm unable to find anything on drupal via the search engine or google, sorry if this has been asked before and I missed it.

...using 4.5.

This has been bugging me

carlmcdade - January 15, 2005 - 17:43

This has been bugging me also.

I can't find anyway of editing the block contents of blocks created by Drupal. I had thought I had seen a confuguration that lets you choose the number of entries but it was on the news aggregator. The others have no settings that I can see.
---------------------------
proof that Drupal will work on PHP5
www.hivemindz.com
www.fireorb.org
__________________________
Carl McDade
Information Technology Consult
Team Macromedia

ah. That's right. That

chromatic - January 15, 2005 - 18:02

ah. That's right. That explains a little of why I've been pulling my hair out (um if it weren't shaved) trying to find it. I know about the aggregator controls though. The aggregator and thinking that it was there in the RC a while back created a 'ghost' in my mind - i've spent probably hours looking around the admin areas and tabs looking for controls that weren't there!

I can't imagine it would be hard take the control from the aggregator out and replace it with a more generic version in the block admin area (in theory, cos i don' t know how), right?

||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Erik Mallinson
coacalina.org music art geekery
The AIR LOC library of congress community.
[][][][][][][][][][][][][][][][][][][][][][][][][][][][]

I found the comment_block

carlmcdade - January 15, 2005 - 19:07

I found the comment_block hook in comment.module and hard coded (changed the SQL limit to 5) it to a lesser amount. This should have been something added to the core functions when the block lists were created. It does not apply to all blocks like the login. But it would still be nice to be able to adjust even those.

<?php
/**
* Implementation of hook_block().
*
* Generates a block with the most recent comments.
*/
function comment_block($op = 'list', $delta = 0) {
  if (
$op == 'list') {
   
$blocks[0]['info'] = t('Recent comments');
    return
$blocks;
  }
  else if (
user_access('access comments')) {
   
$result = db_query_range('SELECT * FROM {comments} WHERE status = 0 ORDER BY timestamp DESC', 0, 5);
   
$items = array();
    while (
$comment = db_fetch_object($result)) {
     
$items[] = l($comment->subject, 'node/'. $comment->nid, NULL, NULL, 'comment-'. $comment->cid) .'<br />'. t('%time ago', array('%time' => format_interval(time() - $comment->timestamp)));
    }

   
$block['subject'] = t('Recent comments');
   
$block['content'] = theme('item_list', $items);
    return
$block;
  }
}
?>

---------------------------
proof that Drupal will work on PHP5
www.hivemindz.com
www.fireorb.org
__________________________
Carl McDade
Information Technology Consult
Team Macromedia

Feature request?

yelvington - February 28, 2005 - 16:57

Adjustable recent blog posts|comments limits in the admin->settings would be a very good thing. Especially for those of us who have been looking there and not finding them. :-)

Has this been entered as a feature request?

Total agreement! A option

Cryssli@www.cry... - May 17, 2005 - 17:45

Total agreement! A option would be superb!
I also spend hours of searching by myself.

Didn't work

shoe - June 8, 2005 - 17:34

I tried to change the default 10 to 5 and the site died had to change it back I did try 5 and 05 made no difference.

you changed the wrong code....

oc - August 9, 2005 - 20:50

The code you modified took care of comment blocks, but to change blog blocks you need to instead modify the call to db_query_range that appears in blog.module. The name of the function is:

blog_block

/**
* Implementation of hook_block().
*
* Displays the most recent 10 blog titles.
*/
function blog_block($op = 'list', $delta = 0) {
  global $user;
  if ($op == 'list') {
    $block[0]['info'] = t('Recent blog posts');
    return $block;
  }
  else if ($op == 'view') {
    if (user_access('access content')) {
      $block['content'] = node_title_list(db_query_range(db_rewrite_sql("SELECT n.nid, n.title, n.created FROM {no\
de} n WHERE n.type = 'blog' AND n.status = 1 ORDER BY n.created DESC"), 0, 5));
      $block['content'] .= '<div class="more-link">'. l(t('more'), 'blog', array('title' => t('Read the latest blo\
g entries.'))) .'</div>';
      $block['subject'] = t('Recent blog posts');
    }
    return $block;
  }
}

I'm cooked...Please Help

mwoodwar - September 5, 2005 - 21:22

Well, I've been trying most of the day to get a good 'recent comments' section going.

I tried the code above, and got an error messge:
Fatal error: Cannot redeclare comment_block() (previously declared in /home/watertow/public_html/modules/comment.module:161) in /home/watertow/public_html/includes/common.inc(1841) : eval()'d code on line 7

Now I can't get into my site at all...??? Can I correct this somehow without wiping everything out?

Mark

I've submitted a patch

guusbosman - March 3, 2007 - 02:58

I've submitted a patch against 5.1 that allows the site administrator to configure the amount of recent comments shown in the recent comments block: http://drupal.org/node/81931

Agreed

jakeg - July 18, 2005 - 11:17

This should be a feature. In block settings you should be able to change the number of comments.

Or if you have to dig into

patrickharris - July 18, 2005 - 12:13

Or if you have to dig into the code to do it, it should be described in the handbook. I wish we had documentation as good as WordPress.

Managed to change number/count and remove timestamp

likoma - September 24, 2005 - 20:50

In comment.module (v. 4.6.2, lines 167-170), I found the following:

    $result = db_query_range(db_rewrite_sql('SELECT c.nid, c.* FROM {comments} c WHERE c.status = 0 ORDER BY c.timestamp DESC', 'c'), 0, 10);
    $items = array();
    while ($comment = db_fetch_object($result)) {
      $items[] = l($comment->subject, 'node/'. $comment->nid, NULL, NULL, 'comment-'. $comment->cid) .'<br />'. t('%time ago', array('%time' => format_interval(time() - $comment->timestamp)));

I changed the 10 to a 5 and also took out the timestamp part so it now just lists the past 5 comments and no date/time.

    $result = db_query_range(db_rewrite_sql('SELECT c.nid, c.* FROM {comments} c WHERE c.status = 0 ORDER BY c.timestamp DESC', 'c'), 0, 5);
    $items = array();
    while ($comment = db_fetch_object($result)) {
      $items[] = l($comment->subject, 'node/'. $comment->nid, NULL, NULL, 'comment-'. $comment->cid);
    }

excellent, just what I was

jazzylee77 - November 15, 2005 - 01:31

excellent, just what I was looking for!

ok, looks like I picked up an extra } doing a quick replace. This works fine otherwise.

A better way

ideaoforder - February 28, 2006 - 15:51

I couldn't tell you why the developers didn't do this in the first place... but if you replace the code for the last function in blog.module with the following two, you can adjust the settings yourself (and your users/moderators/admins can too if you happen to be the site webmaster):

/**
* Implementation of hook_block().
*
* Displays the most recent 10 blog titles.
*/
function blog_block($op = 'list', $delta = 0) {
  global $user;

// Get the max number of posts to display
  $limitnum = variable_get("blog_maxdisp", 10);

  if ($op == 'list') {
    $block[0]['info'] = t('Recent blog posts');
    return $block;
  }
  else if ($op == 'view') {
    if (user_access('access content')) {
      $block['content'] = node_title_list(db_query_range(db_rewrite_sql("SELECT n.nid, n.title, n.created FROM {node} n WHERE n.type = 'blog' AND n.status = 1 ORDER BY n.created DESC"), 0, $limitnum));
      $block['content'] .= '<div class="more-link">'. l(t('more'), 'blog', array('title' => t('Read the latest blog entries.'))) .'</div>';
      $block['subject'] = t('Recent blog posts');
    }
    return $block;
  }
}

function blog_settings() {
  // only administrators can access this function
  if (!user_access('access administration pages')) {
    return message_access();
  }
  $output .= form_textfield(t("Maximum number of posts"), "blog_maxdisp",
             variable_get("blog_maxdisp", "10"), 2, 2,
             t("The maximum number of posts to display in the block."));
return $output;
}

I added the code but...

rosshj - April 14, 2006 - 19:08

what do I do next? How do you adjust the settings?

-
Graphic / Web Designer
Donat Group Enterprises
Project Opus

Yes, Where Is the Admin Control?

klhowells - July 7, 2006 - 05:42

Changed the code in the blog module, but couldn't find the setting on any of the admin pages.

I changed the '10' on this line:

$limitnum = variable_get("blog_maxdisp", 10);

to '5' and that worked just fine.

I think i found it

Dubber Dan - July 13, 2006 - 09:06

Once you've altered the code you will then have a new setting available at administer > settings > blog where you can select the number of posts

This works in drupal 6

mlaw - March 27, 2009 - 17:59

This works in drupal 6 blog.module. Although I couldn't find the location in the Administer section to change the setting, I just opened up a text editor and changed the value in there.

// Get the max number of posts to display
$limitnum = variable_get("blog_maxdisp", 10);

Change the value 10 to something else.

Remember to copy and paste blog.module to make a back up of it first (in case you're scared of messing something up).

Just change 10 to 5 in function blog_block in blog.module file

lashari - October 24, 2007 - 05:34

Its very easy to change recent post in blog block from 10 to 5.
There is db queury range code line in function blog_block function. Which is available in blog.module file. Just you need to change 10 to 5 value in the following line of function.
$result = db_query_range(db_rewrite_sql("SELECT n.nid, n.title, n.created FROM {node} n WHERE n.type = 'blog' AND n.status = 1 ORDER BY n.created DESC"), 0, 10);
This is working fine for me.
Enjoy!

what about recent comments

BassPlaya - December 27, 2007 - 07:26

what about recent comments for nodes, instead of using the blog module?
I'm struggling to set all the requirements for that? Should it be done better with views?

I changed it this way

voqk - July 11, 2008 - 16:34

worked perfectly. Thanks

Thanks

Mark C - January 30, 2009 - 08:59

Thanks for this option. I just went to my file manager, scrolled down to the end of the page, changed "10" to "5" and hey presto, it works. Simple.

Good luck to the rest of you.

Mark
www.markconroy.net/blog

Thanks a lot, and does it work with Drupal 6 ?

wwwoliondorcom - March 7, 2009 - 20:54

Thanks a lot, and does it work with Drupal 6 ?

For the comment block

jchild - January 18, 2008 - 00:13

here is the code i changed to make the comment block only display 5 instead of ten

edit the comment.module and look for the following

* Find a number of recent comments. This is done in two steps.
*   1. Find the n (specified by $number) nodes that have the most recent
*      comments.  This is done by querying node_comment_statistics which has
*      an index on last_comment_timestamp, and is thus a fast query.
*   2. Loading the information from the comments table based on the nids found
*      in step 1.
*
* @param $number (optional) The maximum number of comments to find.
* @return $comments An array of comment objects each containing a nid,
*   subject, cid, and timstamp, or an empty array if there are no recent
*   comments visible to the current user.
*/
function comment_get_recent($number = 10) {

and change 10 to 5 or whatever number you want

this worked !!

BassPlaya - January 18, 2008 - 14:34

Hey, this works!! Thanx a lot.
I forgot that I created a view for this block too.. it confused me initially :-))

Do you happen to know how to set the amount of characters showing up in those links in the block?

Hi all, I've changed the

Biggynuff - April 15, 2008 - 06:15

Hi all,

I've changed the line

function comment_get_recent($number = 10) {

in comment.module to 5, but I'm still seeing up to 10 comments on the page in my block. Any suggestions? Are there any patches to work with D5.7?

Not a major oncern, but would be nice to be able to change this?

btw I'm only bothered about recent comments, not blogs etc

Thanks

Biggy

so do I

zoia - March 29, 2009 - 17:08

another one that spend a night in the administration page-:) thanks for the solution

No need to hard code anything

m13 - May 5, 2009 - 09:21

you can simply use views and display anything you like.

view type: node

Filters:
node published: yes
node type: blog entry

short criteria
post date: desc

fields:
(whatever you like)
node title: (link this field to its node)
user: picture (suppose we want to also display the picture of the user who posted a blog entry)

basic settings:
items to display: 10 (or 100 or 0 for unlimited)

add block display

save and you are done.

I don't get it. Why make it a "future request" for the blog module and not use views to achieve what you want. No need to write any code, plus you can choose any fields you wish the block to display.

hope this helped

Are you talking about content

MarieHuynh - July 20, 2009 - 20:49

Are you talking about content management/content types? I'm not seeing the things you're talking about. What version are you using?

 
 

Drupal is a registered trademark of Dries Buytaert.