Go Back   vb.org Archive > vBulletin 4 Discussion > vB4 General Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 11-29-2010, 10:32 AM
subojac subojac is offline
 
Join Date: Sep 2010
Posts: 5
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default 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.
Reply With Quote
  #2  
Old 11-29-2010, 02:05 PM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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."' 
Reply With Quote
  #3  
Old 11-29-2010, 06:41 PM
subojac subojac is offline
 
Join Date: Sep 2010
Posts: 5
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Lynne View Post
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, 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.
Reply With Quote
  #4  
Old 11-29-2010, 11:34 PM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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.
Reply With Quote
  #5  
Old 11-30-2010, 08:17 AM
subojac subojac is offline
 
Join Date: Sep 2010
Posts: 5
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Lynne View Post
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.
Reply With Quote
  #6  
Old 10-04-2011, 02:07 PM
jGas jGas is offline
 
Join Date: May 2007
Posts: 172
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

It's working great for me too!

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

Many thanks!
Reply With Quote
  #7  
Old 10-04-2011, 03:49 PM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by jGas View Post
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)
Reply With Quote
  #8  
Old 10-05-2011, 06:14 AM
jGas jGas is offline
 
Join Date: May 2007
Posts: 172
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks Lynne. But I know nothing about php so I can't do it. Could you help me?
Reply With Quote
  #9  
Old 11-30-2011, 10:07 AM
mircea1st mircea1st is offline
 
Join Date: Mar 2011
Posts: 2
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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

Cheers !
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 01:36 AM.


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.11266 seconds
  • Memory Usage 2,280KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (9)bbcode_php
  • (3)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (9)post_thanks_box
  • (9)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (9)post_thanks_postbit_info
  • (9)postbit
  • (9)postbit_onlinestatus
  • (9)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.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/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.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
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete