Go Back   vb.org Archive > vBulletin 4 Discussion > vB4 Programming Discussions
Prev Previous Post   Next Post Next
  #9  
Old 01-31-2014, 01:01 AM
Dead Eddie's Avatar
Dead Eddie Dead Eddie is offline
 
Join Date: Apr 2004
Location: at Home...
Posts: 196
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by SilverBoy View Post

So please help me in this tow things:
1- disable the cache for this widget.
2- make the right condition using the plugin or any better way to can control when I want to show the widget and when I want to hide it.
0. You already have access to the content's properties. $this->content->getUsername(); $this->content->isSection(); etc. Look at the public functions of vBCms_Item_Content & vBCms_Item_Content_Article for the methods you can call.

You really don't need to directly query the database again for on-page content.

1. Caching is done in vBCms_Widget_ExecPhp::getPageView() between lines 174 & 175. For testing, I added the NodeId to the hash to make the cache unique to the current node...you can just comment out the reading of the cache on 175 if you want to.

This was my code in line 174 for testing:
PHP Code:
$hash $this->getHash($this->widget->getId() . $this->content->getNodeId()); 
But, no hooks. You have to modify the code.

2. Again, you'll have to directly modify the widget's code. Around line 173, add the following line:

PHP Code:
$view->issection $this->content->IsSection()?1:0
Then your conditional should work.

My sample widget code:

PHP Code:
$output 'Username: ' $this->content->getUsername() . '<br/>';
$output.='Content Type Id: ' .  $this->content->getContentTypeId() . '<br />';
$output.= 'Is Section: ' .  $this->content->IsSection() . '<br />'
My edited widget class code:

PHP Code:
$view = new vBCms_View_Widget($config['template_name']);
        
$view->class $this->widget->getClass();
        
$view->title $view->widget_title $this->widget->getTitle();
        
$view->description $this->widget->getDescription();
        
$view->issection $this->content->IsSection()?1:0;

        
$hash $this->getHash($this->widget->getId() . $this->content->getNodeId());
        
$view->output vB_Cache::instance()->read($hashtruetrue); 
Edit: In lieu of editing core code, you could also subclass the PHP widget and implement a new getPageView method. You'd have to install a new version of the widget...but it would make your changes less global.
Reply With Quote
 

Thread Tools
Display Modes

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 04:39 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.08379 seconds
  • Memory Usage 2,765KB
  • Queries Executed 12 (?)
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)bbcode_html
  • (6)bbcode_php
  • (6)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (16)post_thanks_box
  • (16)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (16)post_thanks_postbit_info
  • (16)postbit
  • (16)postbit_onlinestatus
  • (16)postbit_wrapper
  • (1)showthread_list
  • (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_threadedmode.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • 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_threaded
  • showthread_threaded_construct_link
  • 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