The Arcive of Official vBulletin Modifications Site.It is not a VB3 engine, just a parsed copy! |
|
#1
|
|||
|
|||
Adding a Miscellaneous Option on new thread post
Hi,
I am looking to add an option to the Miscellaneous Options part of a new thread post. I have set up my forum so that members can claim authorship via their google plus profile of any threads they create. I want to add an option to the Miscellaneous Options saying "Claim google authorship of this thread." And all it needs to do if it is checked, is add a rel="author" tag to the username link on the first post of the thread. Would i do this with a plugin or what? Thanks so much in advance |
#2
|
|||
|
|||
ok so this is my first time working with any of this so here is what ive done so far, ive managed to add the checkbox to the additional options by adding this code to the newthread template...
PHP Code:
I have then added this to the postbitlegacy template... PHP Code:
Anyway, is there anything else i need to do for this to work? Its probably so far off the mark but i just kinda copied some code from the other options nearby and modified them to try and do what i want it to do... Any help would be greatly appreciated. Thanks --------------- Added [DATE]1360074380[/DATE] at [TIME]1360074380[/TIME] --------------- I take it im not assigning the variable right. So i need to add some sort of... if authorship is checked, then set $show[authorship] =true? Someething along those lines? anyone? im struggling hehe cheers --------------- Added [DATE]1360079458[/DATE] at [TIME]1360079458[/TIME] --------------- So im guessing i need to add a plugin with the code that will find out if cb_authorship was checked, if so, set $show[authorship] to true. What would the code be for this, and what hook location should i add it to? thanks in advance --------------- Added [DATE]1360079705[/DATE] at [TIME]1360079705[/TIME] --------------- Also i am running vb3.8 |
#3
|
|||
|
|||
Probably what you need to do is add a column to the thread table of the database to save the value of your "authorship" option. Then I think you can get the thread data manager to save that value for you, but you need a couple of plugins, one to tell the datamanager about that field, and another to call the datamanager "set()" function with your value when the thread is created.
If you look at file includes/class_threadpost.php, search for "class vB_DataManager_Thread_FirstPost" and then scroll down, you'll see an array $validfields which specifies the fields that can be set in this datamanager. If you scroll down more to "function vB_DataManager_Thread_FirstPost", you can see there's a hook when one of those objects is created (which is done when a thread needs to be created or modified). So if you create a plugin using that hook location, you can add your field to the array, like maybe: Code:
$validfields['authorship'] = array(TYPE_UINT, REQ_NO); then I think it will be set up to save your value for you, and it then it will also automatically be read in as thread info later. (remember, you still need to create the column in the database yourself). But you still need your value to be set in the datamanager. I think if you look at includes/functions_newpost.php and search for function build_new_post(), there's probably a hook location there you can use to do that (that funciton is called for both new threads and replies, so you'd probably want to check for $type == 'thread' so you're only setting it for threads). Anyway, I hope that helps enough for you to make progress. |
#4
|
|||
|
|||
I really appreciate your help, ive tried to follow your guide but im totally lost. i think its just way over my head, ive never done any php stuff before so i think i'll need to hand it over to an expert to get it finished.
Really appreciate you taking the time to reply though --------------- Added [DATE]1360082766[/DATE] at [TIME]1360082766[/TIME] --------------- do you know where the cb_signature variable gets handled and i could check that out? ---- its cool forget it, im totally lost lol |
#5
|
|||
|
|||
OK, sorry about that. I know that's hard to follow if this is your first mod.. If I get a chance, I'll try to put together the plugin parts so you can just make the template changes you talked about (unless you decide to go a different way, then let me know).
|
#6
|
|||
|
|||
I think i've made the right changes to the class_dm_threadpost.php file so that it should be able to handle a 'authorship' variable, but didnt know wha tot do from there.
I dont know if im over complicating it, and maybe theres an easier way, not sure. |
#7
|
|||
|
|||
OK, well, to answer your question about how the signature option gets handled: if you look at script newthread.php and look for this section (around line 97):
Code:
// ############################### start post thread ############################### if ($_POST['do'] == 'postthread') { you can see below that there's a call to $vbulletin->input->clean_array_gpc), that gets the values from the form that was submitted and puts them in the $vbulletin->GPC[] array. So you'd want to add your authorship field to that list. Then if you look below that, what's happening in general is that the form values from $vbulletin->GPC[] are being transfered to the $newpost array, so you'd want to take your authorship value and do that (probably it would just be $newpost['authorship'] = $vbulletin->GPC['authorship']). Now if you go back to looking at build_new_post() in functions_newpost.php, you can see the values from the $post parameter (which is just the $newpost from before) are being transfered to the datamanager. So you'd want to add something like: Code:
if ($type == 'thread' AND isset($post['authorship'])) { $dataman->set('authorship', $post['authorship']); } I think that should do it. If you do all that then I think you should be able to check $threadinfo['authorship'] in an <if> tag in the template. BTW, I don't think you're making it complicated - it's quite a bit to figure out from scratch. (And it's not the only way to do it, obviously). Also I'm assuming you're not trying to use plugins but are changing the files? That's OK, using plugins does sometimes make it harder to figure out how to get things done, and since vb3 isn't being updated any more (or at least rarely), it doesn't make much difference. |
#8
|
|||
|
|||
when i add... $newpost['authorship'] = $vbulletin->GPC['authorship']
to newthread.php, i get this error when tryingto submit a new thread Parse error: syntax error, unexpected T_VARIABLE in /home/buckyuk/public_html/moneymakingexperts.org/newthread.php on line 195 --------------- Added [DATE]1360087598[/DATE] at [TIME]1360087598[/TIME] --------------- am i adding it to the wrong section of newthread.php... line 192? |
#9
|
|||
|
|||
That looks like a good place. You might just need a semicolon at the end of that line.
|
#10
|
|||
|
|||
ok now im getting this error when i hit submit new thread.
Fatal error: Call to a member function set() on a non-object in /home/buckyuk/public_html/moneymakingexperts.org/includes/functions_newpost.php on line 321 I added the code you gave from line 319 to 322 Code:
if ($type == 'thread' AND isset($post['authorship'])) { $dataman->set('authorship', $post['authorship']); } |
|
|
X vBulletin 3.8.12 by vBS Debug Information | |
---|---|
|
|
More Information | |
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|