PDA

View Full Version : how to use custom field at the member area


LuisMontemayor
03-21-2010, 02:46 AM
Hi, Im doing the new layout of my site and I want to show some custom fields ($post['field5']) in the member area, I used these for the thread area (postbit_legacy):

<vb:if condition="$post['field5']"><h1>{vb:raw post.field5}</h1></vb:if> <!--Country-->
<vb:if condition="$post['field2']"><p>{vb:raw post.field2}</p></vb:if> <!--City-->
<vb:if condition="$post['field7']"><h1>{vb:raw post.field7}</h1></vb:if> <!--Main Software-->but it won't work inside MEMBERINFO, is there a way for me to checkout what I should use for each template? or will I need to make a plugin just for this? Thanks in advance.

--------------- Added 1269199465 at 1269199465 ---------------

Solved, hope this will help to anyone.

I made a plugin with this info (inside the member_start hook):

$otheruid = $vbulletin->GPC['userid'];

$customfields = $db->query_first_slave("SELECT field1 as minibio, field2 as city, field3 as interest, field4 as occupation, field5 as country, field6 as realname, field7 as mainsoftware, field8 as othersoftware FROM vbforum.userfield where userid = $otheruid");

$real_name = $customfields['realname'];
$occupation = $customfields['occupation'];
$mini_bio = $customfields['minibio'];
$mainsoftware = $customfields['mainsoftware'];



$df_member = array(
'real_name' => $real_name,
'occupation' => $occupation,
'mini_bio' => $mini_bio,
'mainsoftware' => $mainsoftware,
);


vB_Template::preRegister('MEMBERINFO',array('df_me mber' => $df_member));and in the template MEMBERINFO I added this:

<h1>{vb:raw df_member.real_name}</h1>
<h4>{vb:raw df_member.occupation}</h4>
<h4>{vb:raw df_member.mini_bio}</h4>
<h4>{vb:raw df_member.mainsoftware}</h4>

--------------- Added 1269200282 at 1269200282 ---------------

I optimized the code to this:

$otheruid = $vbulletin->GPC['userid'];
$df_member = $db->query_first_slave("SELECT field1 as mini_bio, field2 as city, field3 as interest, field4 as occupation, field5 as country, field6 as real_name, field7 as mainsoftware, field8 as othersoftware FROM vbforum.userfield where userid = $otheruid");
vB_Template::preRegister('MEMBERINFO',array('df_me mber' => $df_member));

LuisMontemayor
03-22-2010, 07:13 PM
I updated the code for multiple selection custom fields, hope you can understands it.

$otheruid = $vbulletin->GPC['userid'];
$df_member = $db->query_first_slave("SELECT field1 as mini_bio, field2 as city, field3 as interest, field4 as occupation, field5 as country, field6 as real_name, field7 as mainsoftware, field8 as othersoftware FROM vbforum.userfield where userid = $otheruid");
vB_Template::preRegister('MEMBERINFO',array('df_me mber' => $df_member));


/* ###CUSTOM FIELD WITH ARRAY#### */
$customfield = 8; // Define the numer of the custom field
$userselection = $df_member[othersoftware];
$output = $db->query_first_slave("SELECT data FROM profilefield where profilefieldid=$customfield"); //Search for the data of the custom field
$output = unserialize($output[data]); // Put the data back into an array
$totalarray = count($output); // Counts the number of options from the custom field
$count = 1;
for ($i = 0; $i <= $totalarray; $i++) { // Creates the array in the following way: 1,2,4,8,16,32,64, etc..
$values[] = $count;
$count = $count * 2;
}

$contador = -1;
foreach ($values as $value) { // The teory of how this work is here: http://www.vbulletin.com/forum/showthread.php?108785-How-To-Add-A-Profile-Field-To-The-Postbit
$contador ++;
if ($value & $userselection){
$seleccion .= $output[$contador] . ", "; //Adds the name of the custom field and then adds a coma and a space
} else {
}
}
$seleccion = substr_replace($seleccion,"",-2); // removes the coma and the last space
vB_Template::preRegister('MEMBERINFO',array('df_me mber_othersoftware' => $seleccion));

Sarcoth
03-24-2010, 02:56 PM
From my experience with the memberinfo stuff, you are going to need to use $userinfo instead of $post.

Also, I don't see you registering any of your variables so I'm not sure you'll get anywhere with that. I recommend reading over the Rending Templates article again and looking over the preregister part of it. I haven't done it before though, so I'm not exactly sure what to do on that.