Go Back   vb.org Archive > vBulletin Article Depository > Read An Article > vBulletin 3 Articles

Reply
 
Thread Tools
[How-To] Product Managament (vBulletin 3.5 RC 1 and up)
Andreas's Avatar
Andreas
Join Date: Jan 2004
Posts: 6,863

 

Germany
Show Printable Version Email this Page Subscription
Andreas Andreas is offline 07-25-2005, 10:00 PM

This How-To is mainly meant for Hack-Developers, if you are only planning to use Hacks just read the End-User section.

Developers
vBulletin 3.5.0 RC1 introduces a new concept for customizing/modifying vBulletin: Products.
With Products, you can manage Plugins, Phrases, Settings and Templates in just one XML File.
Furthermore it supports Install/Uninstall Codes (for running queries, etc.), it also covers updating existing Hacks as you can add Codes for different Versions.

To start, you first have to turn on debug mode:
Put
PHP Code:
$config['Misc']['debug'] = true
in config.php.

Then go to ACP / Plugin System / Manage Products.
Click Add/Import Product.
In the second Form (Add New Product) fill in the Details for your Hack:
  • Product ID should be a unique ID for you Hack; it must not start with vb and should be lowercase only, not contain spaces or other special characters.
    Attention: The Product ID must not be longer then 15 characters.
  • Title should be the Title for your Hack
  • Version should be the Version.
    The Format shoud be Mainversion Subversion Subrelease
    Example: Myhack 1.0.0 Beta 1
  • Description should be a short description for you Hack, eg. what it does.

Afterwards, create all the Plugins, Phrases, Templates and Settings your Hack requires and make sure you select the Product you just created.
Important: Templates must be placed in the MASTER Style, Phrases in the MASTER Language

When you are finished, go to ACP / Plugin System / Manage Products and select Edit from the Dropdown next to your Product.

In the Form (Add New Install/Uninstall Code) add all Code necessary to install/uninstall your Hack (eg, Queries, etc.).
If you are updating an existing Hack, add new Install/Uninstall Codes for the new Version that just make the changes necessary to upgrade the previous Version; Product Management will make sure that all necessary Codes will be run.

If your Hack includes Usergroup Permissions/Bitfields, add the following Code to Install and Uninstall to rebuild the Bitfield cache:

PHP Code:
if (is_newer_version('3.5.1'$vbulletin->options['templateversion']))
{
    
// Rebuild Bitfields
    // Do this for vBulletin < 3.5.1 *ONLY*; later versions rebuild
    // automatically and calling the builder in install code causes
    // the bitfields NOT to be rebuild correctly
    
require_once(DIR '/includes/class_bitfield_builder.php');
    
vB_Bitfield_Builder::save($db);
    
build_forum_permissions();

When everything is done, go to ACP / Plugin System / Manage Products again and export the Product as XML; this will then include all Plugins, Templates, Phrases, Settings and Install/Uninstall Codes required.

End-Users
Go to ACP / Plugin System / Manage Products.
Click Add/Import Product, select the product XML File for the Hack you want to install.
If you are upgrading an existing Hack, make sure that Allow Overwrite is set to Yes

This How-To is (C) 2005 by KirbyDE and you are not allowed to redistribute it in any way without my explicit consent.
Reply With Quote
  #62  
Old 08-29-2005, 04:26 PM
Boofo's Avatar
Boofo Boofo is offline
 
Join Date: Mar 2002
Location: Des Moines, IA (USA)
Posts: 15,776
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by KirbyDE
@Boofo
It doesn't make sense because you can't "cache Templates in a Product XML"
You know what I mean, Kirby. The code and hook to cache it.
Reply With Quote
  #63  
Old 08-29-2005, 04:33 PM
Andreas's Avatar
Andreas Andreas is offline
 
Join Date: Jan 2004
Location: Germany
Posts: 6,863
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Well, that's possible
Reply With Quote
  #64  
Old 08-29-2005, 05:15 PM
Boofo's Avatar
Boofo Boofo is offline
 
Join Date: Mar 2002
Location: Des Moines, IA (USA)
Posts: 15,776
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

And done!
Reply With Quote
  #65  
Old 09-08-2005, 03:15 PM
Evercraft Evercraft is offline
 
Join Date: Jan 2005
Location: United Kingdom
Posts: 107
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Great how to. answered some questions for me

One thing id like to know, or have more info on (cant find anything using search or browsing here or google), is about the option type (i.e textarea, yesno) and default values.

For example:

I would like to use a yesno box, but i cant seem to get the default to switch to yes. What default values do i use here?
Also id like to use a single line textfield rather than a text area. How do i do that?

I know maybe this should be answered in the questions forum, but I think this info would contribute to the howto as well
Reply With Quote
  #66  
Old 09-08-2005, 04:45 PM
Andreas's Avatar
Andreas Andreas is offline
 
Join Date: Jan 2004
Location: Germany
Posts: 6,863
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Default for Yesno yes = 1
Reply With Quote
  #67  
Old 09-24-2005, 05:46 PM
Albus Albus is offline
 
Join Date: May 2004
Location: USA
Posts: 112
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Kirby, can you clear up some things for me? I have set my test installation of 3.5RC3 to debug mode and I now see the "Add New Setting Group" and "Add New Setting" things, but I see nothing that corresponds to "Add New Phrase Group" or "Add New Template Group". I want to be able to totally segregate my product from the rest of vB. Does that make sense? Thanks in advance for your assistance and speedy reply.
Reply With Quote
  #68  
Old 09-24-2005, 05:51 PM
Andreas's Avatar
Andreas Andreas is offline
 
Join Date: Jan 2004
Location: Germany
Posts: 6,863
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Adding Phrase Groups has to be done manually as there is no GUI for it.
1) Locate the maximum phrasetypeid in table phrasetype that is < 1000
2) Insert a new record into this table that has phrasetypeid=this value+1
3) Add a new colume phrasegroup_fieldname to table language
4) Rebuild languages
Then you can add Phrases to youre Phrasgegroup

Grouping Templates is done with a Plugin on Hook template_groups
PHP Code:
$only['prefix'] = 'Prefix'
Reply With Quote
  #69  
Old 09-24-2005, 06:01 PM
Albus Albus is offline
 
Join Date: May 2004
Location: USA
Posts: 112
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by KirbyDE
Adding Phrase Groups has to be done manually as there is no GUI for it.
1) Locate the maximum phrasetypeid in table phrasetype that is < 1000
2) Insert a new record into this table that has phrasetypeid=this value+1
3) Add a new colume phrasegroup_fieldname to table language
4) Rebuild languages
Then you can add Phrases to youre Phrasgegroup

Grouping Templates is done with a Plugin on Hook template_groups
PHP Code:
$only['prefix'] = 'Prefix'
If I do items 1-4, make the grouping plugin as directed and export the product, will the resulting xml file automatically set these up on a client? In other words, will the client installation show the new template group and phrasegroups as intended?
Reply With Quote
  #70  
Old 09-24-2005, 06:09 PM
Andreas's Avatar
Andreas Andreas is offline
 
Join Date: Jan 2004
Location: Germany
Posts: 6,863
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Yes it will.
Reply With Quote
  #71  
Old 09-24-2005, 06:18 PM
Albus Albus is offline
 
Join Date: May 2004
Location: USA
Posts: 112
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by KirbyDE
Yes it will.
Thanks, I have on last question then regarding the grouping plugin. Given the following statement, the named templates are still not grouped. Am I missing something?

$only['prefix'] = 'test_product_';

test_product_header
test_product_footer

This should wrap up my queries for a bit. Thanks for your assistance Kirby.
Reply With Quote
Reply

Thread Tools

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:36 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.04570 seconds
  • Memory Usage 2,328KB
  • Queries Executed 26 (?)
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
  • (4)bbcode_php
  • (3)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_article
  • (1)navbar
  • (4)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (4)pagenav_pagelink
  • (11)post_thanks_box
  • (11)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (11)post_thanks_postbit_info
  • (10)postbit
  • (11)postbit_onlinestatus
  • (11)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
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete