Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 Programming Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 07-18-2009, 12:42 PM
markuswarren markuswarren is offline
 
Join Date: May 2009
Posts: 26
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Help with obtaining the forumid in a plugin

Good morning all,
Following on from this thread, I abused the js code linked to as I didn't want to just work on images, I thought replacing the contents of a div would be better, as some of the banners I would be using would be flash, and thus not a simple img src reference, plus most are img tags within hrefs to allow them to be clickable.

The overall idea is the ability to have per forum rotating banners. I currently use vBSponsors, which allows a single per forum banner to be displayed (small one on the main forum listing, larger one when you view the list of threads in that forum). The disadvantage here is that it only allows a single banner per forum, and I wanted to be able to display multiple banners per forum.

Using the aforementioned, modified js code I do have a solution that is working, but it isn't that elegant, and it means creating a lot of plugins, at least two per forum, which I think is unacceptable, and this is where I come seeking help.

Where to start? I think with my edits to the forumhome_forumbit_level2_post template.

After:
Code:
<a href="forumdisplay.php?$session[sessionurl]f=$forum[forumid]"><strong>$forum[title]</strong></a>
			<if condition="$show['browsers']"><span class="smallfont">(<phrase 1="$forum[browsers]">$vbphrase[x_viewing]</phrase>)</span></if>
I have inserted the following:

Code:
<!-- START - mrwrb -->
<if condition="$forum[mrwrb_forumhome_banners_enabled] == 1 AND $vboptions[mrwrb_global_enable_banners] == 1">

<div id="mynicebanner$forum[forumid]" style="float:$stylevar[right]; padding-left:10px; height: 80px;">
</div>
	
	<if condition="$forum[forumid] == 39">
	$GLOBALS[mrwrb_forum_39_small]
	<SCRIPT LANGUAGE="JavaScript">
	mycurrentlocation = 'mynicebanner' + $forum[forumid];
	rotateImage_forum39(mycurrentlocation)
	</SCRIPT>
	</if>
	
	<if condition="$forum[forumid] == 48">
	$GLOBALS[mrwrb_forum_48_small]
	<SCRIPT LANGUAGE="JavaScript">
	mycurrentlocation = 'mynicebanner' + $forum[forumid];
	rotateImage_forum48(mycurrentlocation)
	</SCRIPT>
	</if>

</if>

<!-- END - mrwrb -->

The above checks to see if my banner system is globally enabled and if I've also enabled banner display for what I've named forumhome, which actually equates to the forumhome_forumbit_level2_post template. It then checks the forumid and if it matches a specific value, it will do something.

This is part of the reason I'm seeking help. The $GLOBALS[mrwrb_forum_39_small] relates to this plugin:

product: vBulletin
Hook Location: global_start
Title: mrwrb_forum_39_small
Execution Order: 5
Plugin PHP Code:
PHP Code:
$mrwrb_forum_39_small implode(''file('mrwrb/forum39/small.html')); 
This is loading code from a specific html file. This code is the actual javascript code that handles the rotating banners.

Here is where my first question comes into play. As you can see from my template edit, I'm having to create a conditional check for each forum, and at present I have at least 50 forums, thus 50 conditional checks. The key point here is no so much the conditionals it's the plugin code. With my current setup I would need 50 plugins, each reading a different file.
I think is is, every so slightly overkill. If I had a single plugin for things then I could remove the conditional checking for the forumid which would be much better.

Is it possible for me to create a plugin such as this:

PHP Code:
$theforumid $forum[forumid];
$mrw_forum_small =  implode(''file('mrwrb/forum$theforumid/small.html')); 
In other words, I want to have single name for the hook (I think that is the term) that I put into the template, and can I get the forumid within a plugin and then use it as part of the file specification? I know the answer to the former is "yes", but if I cannot do the latter then a single name for the hook isn't much use as the file path would not change depending on the forumid, which is what I need.

Any suggestions or advice is greatly recommended.
Reply With Quote
  #2  
Old 07-21-2009, 01:14 AM
markuswarren markuswarren is offline
 
Join Date: May 2009
Posts: 26
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

An update from myself.

Further to posting the above here, I was provided with some information which, after some experimentation produced the desired results.

It is indeed possible to have a single plugin to handle the forumhome_forumbit_level2_post implementation.

The plugin code was as follows:

product: vBulletin
Hook Location: forumbit_display
Title: mrwb_forum_small
Execution Order: 5
Plugin PHP Code:
PHP Code:
if (file_exists('mrwrb/forum'.$forumid.'/small.html'))
{
$mrwrb_forum_small implode(''file('mrwrb/forum'.$forumid.'/small.html')); 
I also changed my template edit to the following:

Code:
<!-- START - mrwrb -->
<if condition="$forum[mrwrb_forumhome_banners_enabled] == 1 AND $vboptions[mrwrb_global_enable_banners] == 1">

<div id="mynicebanner$forum[forumid]" style="float:$stylevar[right]; padding-left:10px; height: 70px;">
</div>
	
	$mrwrb_forum_small
	<SCRIPT LANGUAGE="JavaScript">
	mycurrentlocation = 'mynicebanner' + $forum[forumid];
	myfuncname = 'rotateImage_forum' + $forum[forumid];
        window[myfuncname](mycurrentlocation);
	</SCRIPT>

</if>

<!-- END - mrwrb -->
The changes to the template enable me to do away with the conditional checking based on forumid, and the dynamic creation of the javascript function name also helps in this respect.

I've tested this on a few forums and it does appear to work. I've also modifed the SHOWTHREAD and FORUMDISPLAY templates to allow rotating banners to be displayed there as well. My final edit was to have an "All Forums" banner, which is displayed on every section, and I have done this by creating a new template and inserting the banner code into it.

Thanks to Lawrence at vbcodex for his help on this. I thought I'd post my findings here as it may help others
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 02:31 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.03449 seconds
  • Memory Usage 2,180KB
  • 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
  • (3)bbcode_code
  • (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)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