Go Back   vb.org Archive > vBulletin Article Depository > Read An Article > vBulletin 4 Articles
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools
Using your User Profile Fields in your postbit templates (w/ all plugin method)
Lynne's Avatar
Lynne
Join Date: Sep 2004
Posts: 41,180

 

California/Idaho
Show Printable Version Email this Page Subscription
Lynne Lynne is offline 09-12-2010, 10:00 PM

This article is written with the assumption that you have already created your own User Profile Fields in the User Profile Field Manager. If you need help with this, you may read about it in the manual here - http://www.vbulletin.com/docs/html/profile

For the Purposes of this article, I will be referring to "fieldx" as the name of your profile field. Your real name will be found in the User Profile Manager in the "Name" column - field1, field2, etc.

Adding the Profile Field to your postbit (or postbit_legacy) template

For Single-Line Text Box, Multiple-Line Text Box, Single-Selection Radio Buttons, and Single-Selection Menu

Method 1
- Modifying the Template
Open the postbit or postbit_legacy template and find the area you want to add it to. For instance, to add it right after the user post count, find this:
Code:
<dt>{vb:rawphrase 'posts'}</dt> <dd>{vb:raw post.posts}</dd>
And then, add this underneath:
Code:
<vb:if condition="$post['fieldx']"><dt>My FieldX</dt> <dd>{vb:raw post.fieldx}</dd></vb:if>
Change "fieldx" to your actual field name and the green field to whatever you want. Notice the html I used is similar to the html used for the text above me new field.
Method 2 - Using a template_hook
I have always found it easier to just use the existing $template_hooks in the template and write a plugin to add these. In this case, there is a $template_hook right where we want it, after the user post count:
Code:
{vb:raw template_hook.postbit_userinfo_right_after_posts}
So, we would create a plugin with these specifications:
? hook location - postbit_display_complete
? Title - Add User Profile Fields to Postbit Templates
? Plugin is Active - Yes
? Plugin PHP Code -
Code:
if ($post['fieldx'])
{
    $template_hook['postbit_userinfo_right_after_posts'] .= '<dt>My FieldX</dt> <dd>' .$post[fieldx]. '</dd>';
}
Change "fieldx" to your actual field name and the green field to whatever you want. Again, notice the html I used is similar to the html used for the text above me new field. Whichever template_hook you use, you should look at the template to see what sort of html is being used around the hook so that you may use similar, proper html also.
For Multiple-Selection Menu and Multiple-Selection Checkbox

It is a bit more complicated for these two types of selections since the options selected are stored as a binary number. If you just display the field using the method above, you will get a number, not a list of options selected. So, in order to use these types of fields, you will have to use the method below. Here is a thead that will explain the binary scheme - http://www.vbulletin.com/forum/showt...To-The-Postbit

Method 1
- Modifying the Template
Open the template and find the area you want to add it to. For instance, to add it right after the user post count, find this:
Code:
<dt>{vb:rawphrase 'posts'}</dt> <dd>{vb:raw  post.posts}</dd>
And then add this underneath (this is assuming the field has 5 options):
Code:
<vb:if condition="$post['fieldx']"><dt>My FieldX</dt><dd>
<vb:if condition="$post['fieldx'] & 1">Your 1rst option</vb:if>
<vb:if condition="$post['fieldx'] & 2">Your 2nd option</vb:if>
<vb:if condition="$post['fieldx'] & 4">Your 3rd option</vb:if>
<vb:if condition="$post['fieldx'] & 8">Your 4th option</vb:if>
<vb:if condition="$post['fieldx'] & 16">Your 5th option</vb:if>
</dd>
</vb:if>
Change "fieldx" to your actual field name and the green field to whatever you want. Notice the html I used is similar to the html used for the text above me new field.
Method 2 - Using a template_hook
Find the template_hook you want to use. In this case, there is a $template_hook right where we want it, after the user post count:
Code:
{vb:raw template_hook.postbit_userinfo_right_after_posts}
So, we would create a plugin with these specifications:
? hook location - postbit_display_complete
? Title - Add User Profile Fields to Postbit Templates
? Plugin is Active - Yes
? Plugin PHP Code -
Code:
if ($post['fieldx'])
{
    $template_hook['postbit_userinfo_right_after_posts'] .= '<dt>My FieldX</dt> <dd>';
    
    if ($post['fieldx'] & 1)  $template_hook['postbit_userinfo_right_after_posts'] .= 'Your 1rst option';
    if ($post['fieldx'] & 2)  $template_hook['postbit_userinfo_right_after_posts'] .= 'Your 2nd option';
    if ($post['fieldx'] & 4)  $template_hook['postbit_userinfo_right_after_posts'] .= 'Your 3rd option';
    if ($post['fieldx'] & 8)  $template_hook['postbit_userinfo_right_after_posts'] .= 'Your 4th option';
    if ($post['fieldx'] & 16)  $template_hook['postbit_userinfo_right_after_posts'] .= 'Your 5th option';
    
    $template_hook['postbit_userinfo_right_after_posts'] .= '</dd>';
}
Change "fieldx" to your actual field name and the green field to whatever you want. Again, notice the html I used is similar to the html used for the text above me new field. Whichever template_hook you use, you should look at the template to see what sort of html is being used around the hook so that you may use similar, proper html also.
More Advanced

If you like everything to be 'automatic' - meaning you don't have to supply any text at all, just use everything already stored in the database - then you can use a few of plugins to do the work for you.

Plugin 1
- This plugin is used to get the phrasegroup "cprofilefield" added for use in the page so that you may use $vbphrase[fieldx_title] to get the Profile Field Title you entered in the User Profile Field Manager.
? hook location - init_startup
? Title - Add User Profile Fields to Postbit Templates - 1
? Plugin is Active - Yes
? Plugin PHP Code -
Code:
if (THIS_SCRIPT == 'showthread') $GLOBALS['phrasegroups'][] = 'cprofilefield';
Plugin 2 - This plugin is used to get the fields you defined for the profile in the User Profile Field Manager.
? hook location - showthread_postbit_create
? Title - Add User Profile Fields to Postbit Templates - 2
? Plugin is Active - Yes
? Plugin PHP Code -
Code:
if (THIS_SCRIPT == 'showthread') {
    $profilefieldx =  $vbulletin->db->query_first("SELECT profilefieldid, data, type  FROM " . TABLE_PREFIX . "profilefield WHERE profilefieldid = x");
    $post['profilefieldx'] = $profilefieldx;
}
Plugin 3 - This plugin simply spits the data out into the postbit using the template_hook and using the phrase for the Title and the Options are all spit out with commas between them (if needed) into the postbit.
? hook location - postbit_display_complete
? Title - Add User Profile Fields to Postbit Templates - 3
? Plugin is Active - Yes
? Plugin PHP Code -
Code:
// for single-line fields - using fieldy
if ($post['fieldy']) {
     $template_hook['postbit_userinfo_right_after_posts'] .= '<dt>' .$vbphrase[fieldy_title]. '</dt> <dd>' .$post[fieldy]. '</dd>';
 }

// for multiple-selection fields - using filedx
if ($post['fieldx'])
{
    $fieldarrayx = $post['profilefieldx'];
    fetch_profilefield_display($fieldarrayx, $post['fieldx']);
    $template_hook['postbit_userinfo_right_after_posts'] .= '<dt>' .$vbphrase[fieldx_title]. '</dt> <dd>' .$fieldarrayx['value']. '</dd>'; 
}
Change "fieldx" to your actual field name and the orange, purple, and brown fields should 'match-up' and have the same names.
Reply With Quote
  #82  
Old 04-30-2014, 08:57 PM
DreadsUK's Avatar
DreadsUK DreadsUK is offline
 
Join Date: Jan 2014
Posts: 355
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

oh man im so shit at this lol

ok, so vB4.2.2 and editing in postbit template

The field i've created is gender with 2 options male or female.



Here is the code i've got in there. Its not working and i bet one of you guys will take 1 look and it will be so obvious lol

Reply With Quote
  #83  
Old 05-01-2014, 05:05 PM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

It's "field7", not "Field7".
Reply With Quote
  #84  
Old 05-02-2014, 06:05 PM
DreadsUK's Avatar
DreadsUK DreadsUK is offline
 
Join Date: Jan 2014
Posts: 355
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

<vb:if condition="$post['field7']"><dt>Gender</dt> <dd>{vb:raw post.field7}</dd></vb:if>

Not working
Reply With Quote
  #85  
Old 05-02-2014, 06:22 PM
Mark.B Mark.B is offline
Senior Member
 
Join Date: Feb 2004
Posts: 1,354
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Take off the conditionals so you just have this:
Code:
<dt>Gender</dt> <dd>{vb:raw post.field7}</dd>
Does anything show up now?

This is really a test that you are editing the correct template in the correct style, since now, even if your field id was wrong you should at least see "Gender" in the postbit.
Reply With Quote
  #86  
Old 05-02-2014, 06:27 PM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Are you sure the poster has even set the gender in their profile?
Reply With Quote
  #87  
Old 05-02-2014, 06:34 PM
DreadsUK's Avatar
DreadsUK DreadsUK is offline
 
Join Date: Jan 2014
Posts: 355
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Lynne View Post
Are you sure the poster has even set the gender in their profile?
Yea, the poster is me hehe. good question tho

--------------- Added [DATE]1399059505[/DATE] at [TIME]1399059505[/TIME] ---------------

AHHHH, i was editing

'postbit' not 'postbit_legacy'
Reply With Quote
  #88  
Old 05-02-2014, 07:13 PM
Mark.B Mark.B is offline
Senior Member
 
Join Date: Feb 2004
Posts: 1,354
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Mark.B View Post
This is really a test that you are editing the correct template
Quote:
Originally Posted by DreadsUK View Post
AHHHH, i was editing

'postbit' not 'postbit_legacy'
The old ones are the best.
Reply With Quote
  #89  
Old 06-23-2015, 11:13 AM
jagtpf jagtpf is offline
 
Join Date: Mar 2015
Location: Scotland
Posts: 176
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Have been trying to use method 2 ...

This works >>>>

if ($post[field40])
{
$ImagePath = vB_Template_Runtime::fetchStyleVar('imgdir_misc'). '/critique/nocritique.png';
$template_hook['postbit_userinfo_right_after_posts'] .=
'<br /><dt>Critique Level</dt><br /> <dd><img src="' . $ImagePath . '"/></dd>';
}

Yielding both Critique Level: and an image.

Adding conditional doesn't, if there is just one conditional I get Critique Level: and a broken image link; the only difference is the "& 4" - If I use with three conditionals I get 3 * Critique Level: s and 3 broken image links .... It also seems as though it is ignoring the "if" statement because it shows on every profile.>>>>

if ($post[field40])
{
if ($post[field40] & 4)
$ImagePath = vB_Template_Runtime::fetchStyleVar('imgdir_misc'). '/critique/nocritique.png';
$template_hook['postbit_userinfo_right_after_posts'] .=
'<br /><dt>Critique Level</dt><br /> <dd><img src="' . $ImagePath . '"/></dd>';
}

I can hazard a guess that using three conditionals there could be a confusion over $ImagePath, but surely it should work with just the one condition ?

I'm missing something rather simple I think ?!
Reply With Quote
  #90  
Old 06-23-2015, 04:52 PM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

You need some parenthesis after your second condition (why are you using a second one anyway?).

Code:
if ($post[field40])
{
	if ($post[field40] & 4)
	{
	$ImagePath = vB_Template_Runtime::fetchStyleVar('imgdir_misc').'/critique/nocritique.png';
	$template_hook['postbit_userinfo_right_after_posts'] .=
'<br /><dt>Critique Level</dt><br /> <dd><img src="' . $ImagePath . '"/></dd>';
	}
}
Reply With Quote
  #91  
Old 06-25-2015, 07:08 AM
jagtpf jagtpf is offline
 
Join Date: Mar 2015
Location: Scotland
Posts: 176
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Not too sure what you mean by "why am I using a second condition...."

I'm following your method 2 :

Quote:
if ($post['fieldx'])
{
$template_hook['postbit_userinfo_right_after_posts'] .= '<dt>My FieldX</dt> <dd>';

if ($post['fieldx'] & 1) $template_hook['postbit_userinfo_right_after_posts'] .= 'Your 1rst option';
if ($post['fieldx'] & 2) $template_hook['postbit_userinfo_right_after_posts'] .= 'Your 2nd option';
if ($post['fieldx'] & 4) $template_hook['postbit_userinfo_right_after_posts'] .= 'Your 3rd option';
if ($post['fieldx'] & 8) $template_hook['postbit_userinfo_right_after_posts'] .= 'Your 4th option';
if ($post['fieldx'] & 16) $template_hook['postbit_userinfo_right_after_posts'] .= 'Your 5th option';

$template_hook['postbit_userinfo_right_after_posts'] .= '</dd>';
}
but for 3 conditions. But even ignoring the conditional, I can't get a true result from conditional statement for any of ; ($post[field40] & 1), ($post[field40] & 2) or ($post[field40] & 4), whilst I can from ($post[field]).

[field40] contains 3 radio buttons.

Looks like I need to keep hammering at it ....
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 01:58 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.05815 seconds
  • Memory Usage 2,353KB
  • 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
  • (13)bbcode_code
  • (4)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
  • (7)post_thanks_box_bit
  • (11)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit
  • (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
  • fetch_musername
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • post_thanks_function_fetch_thanks_bit_start
  • post_thanks_function_show_thanks_date_start
  • post_thanks_function_show_thanks_date_end
  • post_thanks_function_fetch_thanks_bit_end
  • post_thanks_function_fetch_post_thanks_template_start
  • post_thanks_function_fetch_post_thanks_template_end
  • 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