vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB4 General Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=251)
-   -   VB Most Viewed Article Widget (https://vborg.vbsupport.ru/showthread.php?t=254399)

subojac 11-29-2010 10:32 AM

VB Most Viewed Article Widget
 
Hey, I need to create a Widget that will display the most view CMS articles in the sidebar. I've tried to use the code here https://vborg.vbsupport.ru/showthread.php?t=240904

PHP Code:

ob_start();

// Current Week Most Viewed
$starttime time() - (3600*24*7);
$mostpopularweek_get vB::$db->query_read("
SELECT DISTINCT
ca.contentid,
cn.publishdate,
cn.nodeid,
cni.title,
cni.viewcount
FROM
"
.TABLE_PREFIX."cms_nodecategory cnc
JOIN
"
.TABLE_PREFIX."cms_node cn
ON
cnc.nodeid = cn.nodeid
JOIN
"
.TABLE_PREFIX."cms_article ca
ON
cn.contentid = ca.contentid
JOIN
"
.TABLE_PREFIX."cms_nodeinfo cni
ON
cn.nodeid = cni.nodeid
WHERE
cn.setpublish = 1
AND
cn.publishdate>'"
.$starttime."'
ORDER BY
cni.viewcount desc LIMIT 5
"
);

$output_bits '';
while(
$article vB::$db->fetch_array($mostpopularweek_get))
{

$output_bits .='<div class = "cms_widget_post_bit"><h4 class = "cms_widget_post_header">
<a href="content.php?r='
.$article[nodeid].'">'.$article[title].'</a></h4></div>';

}
$output $output_bits;
ob_end_clean(); 

, but it won't work, don't know if it's because I'm in 4.0.8 and that code also only allows you to show the most popular articles of the week, I need to show the Most Popular Articles of all time from the CMS.

Does anyone have some code for me, not a programmer at all, so I need something I can just cut and paste.

Please help.:confused:

Lynne 11-29-2010 02:05 PM

If that one is for a week, and you want for all time, you need to remove the part that queries based on the time:
PHP Code:

AND 
cn.publishdate>'".$starttime."' 


subojac 11-29-2010 06:41 PM

Quote:

Originally Posted by Lynne (Post 2127157)
If that one is for a week, and you want for all time, you need to remove the part that queries based on the time:
PHP Code:

AND 
cn.publishdate>'".$starttime."' 


Thanks, but no luck.

Okay, so I've removed the
PHP Code:

AND 
cn.publishdate>'".$starttime."' 

but the widget still comes out blank:confused:, my code now reads like this:
PHP Code:

ob_start();

// Current Week Most Viewed
$starttime time() - (3600*24*7);
$mostpopularweek_get vB::$db->query_read("
SELECT DISTINCT
ca.contentid,
cn.publishdate,
cn.nodeid,
cni.title,
cni.viewcount
FROM
"
.TABLE_PREFIX."cms_nodecategory cnc
JOIN
"
.TABLE_PREFIX."cms_node cn
ON
cnc.nodeid = cn.nodeid
JOIN
"
.TABLE_PREFIX."cms_article ca
ON
cn.contentid = ca.contentid
JOIN
"
.TABLE_PREFIX."cms_nodeinfo cni
ON
cn.nodeid = cni.nodeid
WHERE
cn.setpublish = 1
ORDER BY
cni.viewcount desc LIMIT 5
"
); 

I've put the widget on left of http://rekjoubek.com/content/section/11-design.html
to test it.

Could someone please tell me why it still shows nothing. Any help is extremely welcome.

Lynne 11-29-2010 11:34 PM

Is that all that you put into the widget? If so, you are right - it's not going to work. All you've done is a select statement. You've done nothing with the results at all. You should go download some other widgets from here that query the database and see how they then take the results and spit them out into the widget. (And you should not need to do any ob_start or ob_end type statements.)

edit: Oh, I see you posted all of it in the first post. Still, no ob_stuff needed. Also, the format for class is class="something" No spaces around the equal sign.

subojac 11-30-2010 08:17 AM

Quote:

Originally Posted by Lynne (Post 2127378)
Is that all that you put into the widget? If so, you are right - it's not going to work. All you've done is a select statement. You've done nothing with the results at all. You should go download some other widgets from here that query the database and see how they then take the results and spit them out into the widget. (And you should not need to do any ob_start or ob_end type statements.)

edit: Oh, I see you posted all of it in the first post. Still, no ob_stuff needed. Also, the format for class is class="something" No spaces around the equal sign.

Okay, so added

PHP Code:

$output '';
  while(
$article vB::$db->fetch_array($mostpopularweek_get))
  {
            
$output .='<div class = "cms_widget_post_bit"><h4 class="cms_widget_post_header"><a href="content.php?r='.$article[nodeid].'">'.$article[title].'</a> </h4></div>';
  } 

So the code now reads:

PHP Code:

$starttime time() - (3600*24*7);
$mostpopularweek_get vB::$db->query_read("
SELECT DISTINCT
ca.contentid,
cn.publishdate,
cn.nodeid,
cni.title,
cni.viewcount
FROM
"
.TABLE_PREFIX."cms_nodecategory cnc
JOIN
"
.TABLE_PREFIX."cms_node cn
ON
cnc.nodeid = cn.nodeid
JOIN
"
.TABLE_PREFIX."cms_article ca
ON
cn.contentid = ca.contentid
JOIN
"
.TABLE_PREFIX."cms_nodeinfo cni
ON
cn.nodeid = cni.nodeid
WHERE
cn.setpublish = 1
ORDER BY
cni.viewcount desc LIMIT 5
"
);
$output '';
  while(
$article vB::$db->fetch_array($mostpopularweek_get))
  {
            
$output .='<div class = "cms_widget_post_bit"><h4 class="cms_widget_post_header"><a rel="nofollow" href="content.php?r='.$article[nodeid].'">'.$article[title].'</a> </h4></div>';
  } 

But I'm still getting nothing in the widget.

Where do I add
PHP Code:

class="something" 

and will that make it work. I have no coding experiance, so I'm totally in the dark.

--------------- Added [DATE]1291114050[/DATE] at [TIME]1291114050[/TIME] ---------------

Okay, rewrote, finally fixed it.

For anyone that wants to show the articles with the highest views of all time in a widget, here's the code.

PHP Code:

ob_start();
  
// Current Week Most Viewed
  
$mostpopularweekget vB::$db->query_read("
select "
.TABLE_PREFIX."cms_node.nodeid as nodeid, ".TABLE_PREFIX."cms_nodeinfo.title as title FROM ".TABLE_PREFIX."cms_node, ".TABLE_PREFIX."cms_nodeinfo where ".TABLE_PREFIX."cms_node.nodeid = ".TABLE_PREFIX."cms_nodeinfo.nodeid AND ".TABLE_PREFIX."cms_node.setpublish = 1 AND ".TABLE_PREFIX."cms_node.publishdate >'".$starttime."' ORDER BY ".TABLE_PREFIX."cms_nodeinfo.viewcount desc LIMIT 10;
     "
);
  
$outputbits '';
  while(
$article vB::$db->fetch_array($mostpopularweekget))
  {

           
$outputbits .='<div class = "cms_widget_post_bit"><h4 class = "cms_widget_post_header">
                           <a rel="nofollow" href="content.php?r='
.$article[nodeid].'">'.$article[title].'</a> </h4>                      </div>';
  }
  
$output $outputbits;
  
ob_end_clean(); 

Works like a dream, the limit for the amount of articles you want to show, and add a startime at the top if you want it daily, weekly or monthly.

jGas 10-04-2011 02:07 PM

It's working great for me too!

Do you guys know a way to show the articles only of a few sections?

Many thanks!

Lynne 10-04-2011 03:49 PM

Quote:

Originally Posted by jGas (Post 2253133)
It's working great for me too!

Do you guys know a way to show the articles only of a few sections?

Many thanks!

You would need to add to the WHERE clause in the query something like AND cms_node.nodeid = x where x is that section. Or AND cms_node.nodeid IN (x,y,z)

jGas 10-05-2011 06:14 AM

Thanks Lynne. But I know nothing about php so I can't do it. Could you help me?

mircea1st 11-30-2011 10:07 AM

This works perfect , Thanks subojac !!
Can you please tell me i i can add a separator line for titles and a bullet ?

Cheers !


All times are GMT. The time now is 05:37 PM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01206 seconds
  • Memory Usage 1,777KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (9)bbcode_php_printable
  • (3)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (9)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete