Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 General Discussions
Prev Previous Post   Next Post Next
  #1  
Old 03-22-2009, 07:39 PM
Mutt's Avatar
Mutt Mutt is offline
 
Join Date: Nov 2001
Posts: 331
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Need Feedback on a mod. I'm modifying fetch_template & need advice

I like the builtin ad template system. It's nice how you can use conditionals to limit which forums or usergroups receive the ads. problem is there isn't a nice way to rotate banners. I made a small edit to handle this but I'd lile to ask you guys if you feel this edit would casue issues.

my plan is simple. just make a new template the same nice as any of the existing ad templates & add a number or other identifier to the end of it. example we already have ad_footer_end so you could make ad_footer_end2, ad_footer_end3, & ad_footer_end4 all with different banner codes.

my edit to function fetch_template looks for templates that begin with "ad_". if it does, it grabs a random template that contains the requested template name so in my example above it would grab and 1 of those 4 versions of ad_footer_end.

for it to work, I have it skip addeing the ad_ templates to the cache. this is why I'm talking to you all. will this cause a problem? My board is very large (20 million page views per month) so I certainly don't want to do something that slows down something as vital as fetch_template.

here's the edit. if you guys think it's OK, I'll certainly release it. been awhile since I released anything but I've been doing my long overdo 3.8 upgrade now & I'm sure I'll be releasing several mods.


in includes/functions.php under function fetch_template I'm changing this
PHP Code:
    if (isset($vbulletin->templatecache["$templatename"]))
    {
        
$template $vbulletin->templatecache["$templatename"];
    }
    else
    {
        
DEVDEBUG("Uncached template: $templatename");
        
$GLOBALS['_TEMPLATEQUERIES']["$templatename"] = true;

        
$fetch_tid intval($templateassoc["$templatename"]);
        if (!
$fetch_tid)
        {
            
$gettemp = array('template' => '');
        }
        else
        {
            
$gettemp $vbulletin->db->query_first_slave("
                SELECT template
                FROM " 
TABLE_PREFIX "template
                WHERE templateid = 
$fetch_tid
            "
);
        }
        
$template $gettemp['template'];
        
$vbulletin->templatecache["$templatename"] = $template;
    } 
to this

PHP Code:
// Mutt rotating banners
if (substr($templatename03)=="ad_") {
        
// get random ad template & skip template cache
        
$gettemp $vbulletin->db->query_first_slave("
            SELECT template
            FROM " 
TABLE_PREFIX "template
            WHERE title LIKE '
$templatename%'
            ORDER BY Rand() LIMIT 1
        "
);
        
$template $gettemp['template'];
} else {
// Mutt rotating banners
    
if (isset($vbulletin->templatecache["$templatename"]))
    {
        
$template $vbulletin->templatecache["$templatename"];
    }
    else
    {
        
DEVDEBUG("Uncached template: $templatename");
        
$GLOBALS['_TEMPLATEQUERIES']["$templatename"] = true;

        
$fetch_tid intval($templateassoc["$templatename"]);
        if (!
$fetch_tid)
        {
            
$gettemp = array('template' => '');
        }
        else
        {
            
$gettemp $vbulletin->db->query_first_slave("
                SELECT template
                FROM " 
TABLE_PREFIX "template
                WHERE templateid = 
$fetch_tid
            "
);
        }
        
$template $gettemp['template'];
        
$vbulletin->templatecache["$templatename"] = $template;
    }
// Mutt rotating banners
}
// Mutt rotating banners 
it only changes how templates are handled if the template name begins with "ad_" but it does run substr every time any template is called.

I considered moving my if inside the existing else right before
PHP Code:
$gettemp $vbulletin->db->query_first_slave 
so it's only run if the template isn't already cached. with that I wouldn't be worried about how it effect performance but I was worried that the damn templates would somehow get cached and then they wouldn't rotate anymore.

anyway, can I get some feedback? thanks
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 08:00 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.04589 seconds
  • Memory Usage 2,320KB
  • 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
  • (3)bbcode_php
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (2)post_thanks_box
  • (2)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (2)post_thanks_postbit_info
  • (2)postbit
  • (2)postbit_onlinestatus
  • (2)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