[support] create block of recent blog posts by one user?

will hall will at theicarusproject.net
Mon Jan 29 03:31:04 UTC 2007


hi, i used the views module and checked 'provide as a block'

Kitt Hodsden wrote:
> I recognize this problem has been solved for the poster of the original 
> question, but I want to strongly suggest that this option not be used for others 
> who may be considering it.
> 
> My reasons include:
> 
> The SELECT query here ignores any unpublished nodes (needs a "AND published = 
> 1").
> 
> The SELECT query will show the first 10 posts, not the last 10 (needs a DESC 
> after the "ordered by created").
> 
> The query also assumes the tables have no prefixes, but I'll assume anyone who 
> uses it can adjust that value.
> 
> Similary, the query might assume MySQL with the limit, depends on whether or not 
> you use an offset.  It isn't cross DB safe (db_query_limit might have been 
> better).
> 
> The block also cannot be later edited by any user who doesn't have the PHP input 
> filter permission (any saved edits will revert to a filter HTML by default).
> 
> But the real, most important reason I think it's questionable is because it 
> doesn't include any way to check the user reading the post has permissions to 
> read the content the title will link to.  Even if the title is all the user 
> without permissions can see, showing a link without access to the main content 
> is bad practice.  Some permission checking modules (og, node_privacy_by_role 
> (for < Drupal 5)) need the db_rewrite_sql hook calls to limit what nodes are 
> being displayed based on role, node type or other permission limits.
> 
> Yes, it is possible to construct a query that handles all of these issues.  
> Instead of such a query, I highly recommend using the views module, as others 
> have suggested, to minimize the need to worry about them, or any other issues 
> that might arise (like the PHP filter requirement).
> 
> Kitt.
>  
> 
>> Create a custom block with input format "PHP" with PHP code in it that
>> looks something like this:
>>
>> <?php
>> $result = db_query("SELECT nid, title, uid, '' FROM node WHERE uid =
>> ## AND type = 'blog' ORDER BY created LIMIT 10");
>>
>> $content = node_title_list($result, "Joe Bob's Blog");
>> echo $content;
>> ?>
>>
>> You'll need to change ## to the numeric user id of the user's blog you
>> want.
> 
> 


More information about the support mailing list