Subject: Top Ten Commented Stories

Posted on: 15/10/02 08:01pm
By: MLimburg

Next in the series .. how to get Top Ten Stories (by number of Comments). Again, this has been pulled from the stats page.Open lib-custom.php and insert the following:

PHP Code

function phpblock_toptenstoriesbycomments()
{
    global $_CONF, $_TABLES, $LANG10;

    $result = DB_query( "SELECT sid,title,comments from {$_TABLES['stories']} WHERE draft_flag = 0 AND uid > 1 and comments > 0 ORDER BY comments desc LIMIT 10" );
    $nrows = DB_numRows( $result );

    $stat_templates = new Template( $_CONF['path_layout'] . 'stats' );
    $stat_templates->set_file( array(
        'itemstats'=>'itemstatistics.thtml',
        'statrow'=>'singlestat.thtml'
        ));
	
    if( $nrows > 0 ) 
    {
        $stat_templates->set_var( 'item_label', $LANG10[8] );
        $stat_templates->set_var( 'stat_name', $LANG10[12] );

        for( $i = 0; $i < $nrows; $i++ ) 
        {
            $A = DB_fetchArray( $result );

            $stat_templates->set_var( 'item_url', 'article.php?story=' . $A['sid'] );
            $stat_templates->set_var( 'item_text', stripslashes( str_replace( '$','$',$A['title'] )));
            $stat_templates->set_var( 'item_stat', $A['comments'] );

            $stat_templates->parse( 'stat_row', 'statrow', true ); 
    	}
	    $stat_templates->parse('output','itemstats');

        $retval = $stat_templates->finish( $stat_templates->get_var( 'output' ));
    }     else 
    {
        $retval = $LANG10[13];
    }

    return $retval;
}

This will allow you to call phpblock_toptenstoriesbycomments as a block. In addition (and indeed, the reason it was written in the first place), you can code a template placemarker to get this info. Something like ...

    $tpl->set_var( 'storiesbycomments', phpblock_toptenstoriesbyview() );

... will give you the ability to place that info pretty much anywhere!

Happy Hacking.


Geeklog - Forum
https://www.geeklog.net/forum/viewtopic.php?showtopic=20840