View Full Version : [SOLVED]Pulling threadid in templates
Dr.CustUmz
11-24-2020, 07:45 PM
This is a first time my doing this with vb4 and I need some help. This seems easy but I'm struggling with it bad.
I have added a sample product showing the 2 ways I am trying to add buttons within a post. thanks to shka I have the custom template one working, the parse_template one is not fetching the threadid though.
I have tried pulling the threadid from postbit, and showthread within plugins.
example:parse templat (in a showthread condition) i am just using new thread button in posts as a base, I want to add a button that will be grabbing the threadid not the forum id.
$sessionurl = $session['sessionurl'];
$threadidid = '{vb:raw threadid}';
$post_phrase = 'Refresh this Listing';
$new_thread_link = '<div><a href="refresh.php?'.$sessionurl.'do=newthread&f='.$threa did.'" rel="nofollow" class="newcontent_textcontrol" id="newthreadlink_top" style="margin-left:10px;"><span>+</span> '.$post_phrase.'</a></div>';
$find = '<div id="pagination_top"';
$replace = $new_thread_link.$find;
$vbulletin->templatecache['SHOWTHREAD'] = str_replace($find, $replace, $vbulletin->templatecache['SHOWTHREAD']);
I have tried directly replacing the variable, replacing with other variables IE $threadinfo['threadid']
but I am not having any luck.
I first wanted to do this in postbit, but was having the same issue. Using post thanks button placement as my base, I could not get the threadid to input:
<template name="post_thanks_button" templatetype="template" date="1477136504" username="Abe1" version="7.88"><![CDATA[
<vb:if condition="$post['userid'] != 0">
<a href="postings.php?t={vb:raw threadid}" class="post_thanks_button">Refresh</a>
</vb:if>]]></template>
which is placed into the template through this plugin:
<plugin active="1" executionorder="5">
<title>Post Thank You Hack</title>
<hookname>postbit_display_complete</hookname>
<phpcode><![CDATA[if ($this->post[postid] == $this->thread[firstpostid]){
$display_thanks_image = '';
$templater = vB_Template::create('post_thanks_button');
$templater->register('post', $post);
$templater->register('display_thanks_image', $display_thanks_image);
$template_hook['postbit_controls'] .= $templater->render();
}
]]></phpcode>
</plugin>
how can I pull the threadid in either of these locations?
yilmaz
11-25-2020, 10:05 AM
Forum ID seems to be missing
$threadidid = '{vb:raw threadid}';
$sessionurl = $session['sessionurl'];
$forumid = $foruminfo['forumid'];
$post_phrase = 'Refresh this Listing';
$new_thread_link = '<div><a href="refresh.php?'.$sessionurl.'do=newthread&f='.$forum id.'" rel="nofollow" class="newcontent_textcontrol" id="newthreadlink_top" style="margin-left:10px;"><span>+</span> '.$post_phrase.'</a></div>';
$find = '<div id="pagination_top"';
$replace = $new_thread_link.$find;
$vbulletin->templatecache['SHOWTHREAD'] = str_replace($find, $replace, $vbulletin->templatecache['SHOWTHREAD']);
Dr.CustUmz
11-25-2020, 10:37 AM
Forum ID seems to be missing
$threadidid = '{vb:raw threadid}';
$sessionurl = $session['sessionurl'];
$forumid = $foruminfo['forumid'];
$post_phrase = 'Refresh this Listing';
$new_thread_link = '<div><a href="refresh.php?'.$sessionurl.'do=newthread&f='.$forum id.'" rel="nofollow" class="newcontent_textcontrol" id="newthreadlink_top" style="margin-left:10px;"><span>+</span> '.$post_phrase.'</a></div>';
$find = '<div id="pagination_top"';
$replace = $new_thread_link.$find;
$vbulletin->templatecache['SHOWTHREAD'] = str_replace($find, $replace, $vbulletin->templatecache['SHOWTHREAD']);
forumid was just in the sample code, I am using another product as a starting point, the threadid var is not working here.
this is what I have, no other plugin: (parse templates)
if (THIS_SCRIPT == 'showthread'){
$sessionurl = $session['sessionurl'];
$threadidid = '{vb:raw threadid}';
$post_phrase = 'Refresh this Listing';
$refresh_link = '<div><a href="refresh.php?'.$sessionurl.'do=something&t='.$threa didid.'" rel="nofollow" class="newcontent_textcontrol" id="newthreadlink_top" style="margin-left:10px;"><span>+</span> '.$post_phrase.'</a></div>';
$find = '<div id="pagination_top"';
$replace = $refresh_link.$find;
$vbulletin->templatecache['SHOWTHREAD'] = str_replace($find, $replace, $vbulletin->templatecache['SHOWTHREAD']);
in the template the button produces "refresh.php?do=something&t={vb:raw%20threadid}"
I have also tried:
<plugin active="1" executionorder="5">
<title>new postbit button</title>
<hookname>cache_templates</hookname>
<phpcode><![CDATA[if (THIS_SCRIPT === showthread)
{
$cache[] = 'my_template';
}]]></phpcode>
</plugin>
<plugin active="1" executionorder="5">
<title>new postbit button</title>
<hookname>postbit_display_complete</hookname>
<phpcode><![CDATA[if ($this->post[postid] == $this->thread[firstpostid]){
$display_refresh_image = '';
$templater = vB_Template::create('my_template');
$templater->register('post', $post);
$templater->register('display_refresh_image', $display_refresh_image);
$template_hook['postbit_controls'] .= $templater->render();
}
]]></phpcode>
</plugin>
with the thread id vars in "my_template" but it only spits out the code, not the threadid.
Which template?
In postbit_legacy or post_thanks_button
{vb:raw post.threadid}
Dr.CustUmz
11-25-2020, 10:54 AM
Which template?
In postbit_legacy or post_thanks_button
{vb:raw post.threadid}
post_thanks_button
I have updated my code above your post to show ways I have tried. I thought the post thanks hack would be a good reference point because it had the button where i wanted but I cant seem to get threadid within the template.
I read this post from kh99:
In your plugin code you can use $threadinfo['threadid']. If you want to use it in the SHOWTHHEAD template it's already registered, and you can use {threadinfo.threadid}. You would only need to register it if you're rendering a custom template, in which case you'd use register() (not preRegister). If you really do want to preRegister to one of the other existing vb templates (e.g. header, headinclude, footer), then you might want to use hook parse_templates (but it really depends on exactly what you're trying to do).
so how would I go about doing that the vb4 way? I just want to go back to vb3! :( lol
Either my English is too bad and I don't understand you.
Or you didn't read my post / code.
Dr.CustUmz
11-25-2020, 11:12 AM
I am providing my button test, this plugin simply adds a button to the postbit, and to the showthread.
both added buttons I can not get the threadid. see code.
Dr.CustUmz
11-25-2020, 11:14 AM
{vb:raw post.threadid} WORKED FOR THE POSTBIT ONE! THANK YOU! but how can I get the showthread one to show threadid?
{vb:raw threadinfo.threadid}
Like in your quotation of kh99 post.In your plugin code you can use $threadinfo['threadid']. ...
threadinfo.threadid and $threadinfo['threadid'] is the same variable, you have to use different notations for conditions and direct var access
https://www.vbulletin.com/docs/html?manualversion=40205500
Styles & Templates / vBulletin Style Reference / Templates / Template Syntax
Read Variable Access (and the other stuff) ;)
Dr.CustUmz
11-25-2020, 12:02 PM
using parse_templates on the showthread template
using $threadinfo[threadid]
my link spits out
refresh.php?do=newthread&t=$threadinfo[threadid]
using '.$threadinfo['threadid'].'
my link spits out:
rrefresh.php?do=newthread&t=
one post above
{vb:raw threadinfo.threadid}
Dr.CustUmz
11-25-2020, 12:43 PM
Makes the link
refresh.php?do=newthread&t={vb:raw%20threadinfo.threadid}
and if used as a variable displays nothing... did you see the way Im trying to add it in the product?
--------------- Added 1606315573 at 1606315573 ---------------
$new_thread_link = '<div><a href="refresh.php?'.$sessionurl.'do=newthread&t='.{vb:ra w threadinfo.threadid}.'" rel="nofollow" class="newcontent_textcontrol" id="newthreadlink_top" style="margin-left:10px;"><span>+</span> '.$post_phrase.'</a></div>';
$find = '<div id="pagination_top"';
$replace = $new_thread_link.$find;
$vbulletin->templatecache['SHOWTHREAD'] = str_replace($find, $replace, $vbulletin->templatecache['SHOWTHREAD']);
One option - you build your link on plugin level. Than you have to choose a hook, when $threadinfo already exists. Example with "showthread_complete"
<plugin active="1" executionorder="5">
<title>Button Plus</title>
<hookname>showthread_complete</hookname>
<phpcode><![CDATA[if (THIS_SCRIPT == 'showthread'){
$threadidid = $threadinfo['threadid'];
$new_thread_link = '<div><a href="refresh.php?'.$sessionurl.'do=newthread&t='.$threa didid.'" rel="nofollow" class="newcontent_textcontrol" id="newthreadlink_top" style="margin-left:10px;"><span>+</span> '.$post_phrase.'</a></div>';
$find = '<div id="pagination_top"';
$replace = $new_thread_link.$find;
$vbulletin->templatecache['SHOWTHREAD'] = str_replace($find, $replace, $vbulletin->templatecache['SHOWTHREAD']);
}]]></phpcode>
</plugin>
Dr.CustUmz
11-25-2020, 03:25 PM
Thank you for all your help. I need to learn this vb4 crap (its about 10 years too late lol) vb3 is so much easier.
vBulletin® v3.8.12 by vBS, Copyright ©2000-2025, vBulletin Solutions Inc.