The Arcive of Official vBulletin Modifications Site.It is not a VB3 engine, just a parsed copy! |
|
#1
|
|||
|
|||
Help with setting variables
We just switched our forum over to vbulletin and love it but I'm having trouble understanding the way mods are put together. I'm not finding much for documentation on the new variable system in vb4 (We have suite)
I'm trying to update a very simple mod that was available for 3.6 that isn't available for 4 and I'm not getting the variables for some reason. When I install this (updated by me): HTML Code:
<?xml version="1.0" encoding="ISO-8859-1"?> <product productid="posts_in_last_x_hours" active="1"> <title>Posts In Last X Hours</title> <description>Show the number of posts created in the last X hours.</description> <version>1.0</version> <url></url> <versioncheckurl></versioncheckurl> <dependencies></dependencies> <codes></codes> <templates></templates> <plugins> <plugin active="1" executionorder="5"> <title>Get 24 hours post info</title> <hookname>forumhome_complete</hookname> <phpcode><![CDATA[if ($vbulletin->options['posts_last_x_hours_enabled'] == 1) { $timeframe = $vbulletin->options['posts_last_x_hours_numhours']; $posts_last_x_hours = $db->query_read("SELECT COUNT(postid) from " . TABLE_PREFIX . "post WHERE " . TABLE_PREFIX . "post.dateline >= UNIX_TIMESTAMP(DATE_SUB(NOW(),INTERVAL " . $timeframe . " HOUR));"); $posts_last_x_hours = construct_phrase($vbphrase['posts_in_last_x_hours'], $posts_last_x_hours, $timeframe); $templater->register('posts_last_x_hours', $posts_last_x_hours); }]]></phpcode> </plugin> </plugins> <phrases> <phrasetype name="GLOBAL" fieldname="global"> <phrase name="posts_in_last_x_hours" date="0" username="" version=""><![CDATA[There have been {1} post in the last {2} hours.]]></phrase> </phrasetype> <phrasetype name="vBulletin Settings" fieldname="vbsettings"> <phrase name="setting_posts_last_x_hours_numhours_desc" date="0" username="" version=""><![CDATA[Specify the amount of time in hours you want to count posts.]]></phrase> <phrase name="setting_posts_last_x_hours_numhours_title" date="0" username="" version=""><![CDATA[Number of Hours]]></phrase> <phrase name="setting_posts_last_x_hours_enabled_desc" date="0" username="" version=""><![CDATA[Allows you to enable/disable the hack.]]></phrase> <phrase name="setting_posts_last_x_hours_enabled_title" date="0" username="" version=""><![CDATA[Enabled?]]></phrase> <phrase name="settinggroup_posts_last_x_hours" date="0" username="" version=""><![CDATA[Posts Last X Hours]]></phrase> </phrasetype> </phrases> <options> <settinggroup name="posts_last_x_hours" displayorder="1000"> <setting varname="posts_last_x_hours_enabled" displayorder="10"> <datatype>boolean</datatype> <optioncode>yesno</optioncode> <defaultvalue>1</defaultvalue> </setting> <setting varname="posts_last_x_hours_numhours" displayorder="20"> <datatype>number</datatype> <defaultvalue>24</defaultvalue> </setting> </settinggroup> </options> <helptopics></helptopics> <cronentries></cronentries> <faqentries></faqentries> </product> And place this in my forumhome template: PHP Code:
I get this: Code:
There have been %1$s post in the last %2$s hours If I use vb:raw rather than vb:rawphrase the line is not inserted at all...I also checked my php logs and there are no errors. Sorry if it's obvious but I'm a noob at vbulletin :-) Any help would be appreciated, even a nudge towards some documentation I missed. Charles |
#2
|
|||
|
|||
I think you need to add this line (before or after the other register() call):
Code:
$templater->register('timeframe', $timeframe); and then in the template: Code:
<vb:if condition="$vboptions['posts_last_x_hours_enabled'] == 1"> {vb:rawphrase posts_in_last_x_hours, {vb:raw posts_last_x_hours}, {vb:raw timeframe} } </vb:if> BTW, there's some info in the manual that might be helpful: https://www.vbulletin.com/docs/html/ (search for "template syntax") |
#3
|
|||
|
|||
Thanks for the help kh99, now I understand how to call the phrase with variables.
I have bigger problems though. For some reason it doesn't seem to be cycling through the code at all so I'll have to play with it more. I changed the php cdata to this: Code:
if ($vbulletin->options['posts_last_x_hours_enabled']) { $timeframe = '*'; $posts_last_x_hours = '*'; $posts_last_x_hours = construct_phrase($vbphrase['posts_in_last_x_hours'], $posts_last_x_hours, $timeframe); $templater->register('posts_last_x_hours', $posts_last_x_hours); $templater->register('timeframe', $timeframe); } Code:
There have been post(s) in the last hours. the "*" doesn't show up in my phrase for {1} or {2}, they come up blank within the phrase. I'll have to keep playing with it. |
#4
|
|||
|
|||
Oh...I didn't notice that $templater isn't defined. You need to use preRegister instead, like this:
Code:
vB_Template::preRegister('FORUMHOME', array('posts_last_x_hours' => $posts_last_x_hours, 'timeframe' => $timeframe)); |
#5
|
|||
|
|||
That worked great Thank you so much!
|
|
|
X vBulletin 3.8.12 by vBS Debug Information | |
---|---|
|
|
More Information | |
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|