Go Back   vb.org Archive > vBulletin 4 Discussion > vB4 Programming Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 06-16-2011, 10:28 PM
Sarteck's Avatar
Sarteck Sarteck is offline
 
Join Date: Mar 2008
Posts: 304
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Trying to add a little extra to profile.php?do=editprofile ...

Right, so you know where we've got our Custom Profile Fields that users can alter? Someone has asked me to make a simple change to it. Or, I thought it was going to be simple, anyways...



Note the top Profile field there, "Username Color?" He wants me to put that "Gold Membership Extras" bit up above it, as shown in that image.

So I looked in the editprofile branch of the profile.php code, and I find out that the HTML is coming from a $customfields variable.

I see that $customfields gets its value from a function called fetch_profilefields(), and that function gets the individual HTML for each Profile Field from another function called fetch_profilefield().

Finally, I see that inside of fetch_profilefield() is a handy hook that I can use, profile_fetch_profilefields.



This is great, everything's falling into place.



Or so I thought it was.


fetch_profilefield() returns some HTML that gets assigned to the $tempcustom variable inside of fetch_profilefields(), as far as I can tell. However, when I try to return a value from fetch_profilefield(), it just doesn't "take" for some reason.



Here's what I got on that profile_fetch_profilefields hook:

PHP Code:
    if ($profilefield['profilefieldid'] == '16')
    {
        
$startbox '<div style="border:1px solid #000000; margin:1px;padding:1px;"><h2>Gold Membership Extras</h2><br />';
        
$endbox '</div>';


        
$data unserialize($profilefield['data']);
        
$selectbits '';
        
$foundselect 0;
        foreach (
$data AS $key => $val)
        {
            
$key++;
            
$selected '';
            if (
$vbulletin->userinfo["$profilefieldname"])
            {
                if (
trim($val) == $vbulletin->userinfo["$profilefieldname"])
                {
                    
$selected 'selected="selected"';
                    
$foundselect 1;
                }
            }
            else if (
$profilefield['def'] AND $key == 1)
            {
                
$selected 'selected="selected"';
                
$foundselect 1;
            }
            
$templater vB_Template::create('userfield_select_option');
                
$templater->register('key'$key);
                
$templater->register('selected'$selected);
                
$templater->register('val'$val);
            
$selectbits .= $templater->render();
        }
        if (
$profilefield['optional'])
        {
            if (!
$foundselect AND (!empty($vbulletin->userinfo["$profilefieldname"]) OR $vbulletin->userinfo["$profilefieldname"] === '0'))
            {
                
$optional $vbulletin->userinfo["$profilefieldname"];
            }
            
$templater vB_Template::create('userfield_optional_input');
                
$templater->register('optional'$optional);
                
$templater->register('optionalname'$optionalname);
                
$templater->register('profilefield'$profilefield);
                
$templater->register('tabindex'$tabindex);
            
$optionalfield $templater->render();
        }
        if (!
$foundselect)
        {
            
$selected 'selected="selected"';
        }
        else
        {
            
$selected '';
        }
        
$show['noemptyoption'] = iif($profilefield['def'] != 2truefalse);
        
$templater vB_Template::create('userfield_select');
            
$templater->register('optionalfield'$optionalfield);
            
$templater->register('profilefield'$profilefield);
            
$templater->register('profilefieldname'$profilefieldname);
            
$templater->register('selectbits'$selectbits);
            
$templater->register('selected'$selected);
        
$custom_field_holder $templater->render();

        
$templater vB_Template::create($wrapper_template);
            
$templater->register('custom_field_holder'$custom_field_holder);
            
$templater->register('profilefield'$profilefield);
        
$returnval $startbox.$templater->render().$endbox;
//if ($vbulletin->userinfo['userid'] == 533) {die($returnval.'<!-- test -->');}
        
return $returnval;
    } 

Now, when I uncomment //if ($vbulletin->userinfo['userid'] == 533) {die($returnval.'<!-- test -->');}, I get the expected output--the field is wrapped in between my "$startbox" and "$endbox" values. However, left commented, there is nothing that gets changed.

However, I -do- know that it's going through this function; 1), the uncommented "die()" executes, and 2) if I manually add some kind of test to $custom_field_holder, THAT value actually takes!

Could someone maybe point out a mistake I might be making? It's not terribly important to me--it's not even my own forum I'm doing this for--but it's bugging the hell out of me! XD

Also, I think similar plugins would help me organize my own forum's Profile Fields page.

Thanks in advance.
Reply With Quote
  #2  
Old 06-17-2011, 10:50 PM
Sarteck's Avatar
Sarteck Sarteck is offline
 
Join Date: Mar 2008
Posts: 304
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I'm still not sure why this wouldn't work.... However, I found an alternate method that works better, anyways.

On the hook profile_fetch_profilefields, I still put my conditional. However, I just change the value of the $userfield_wrapper so that it calls a custom template. (I guess this is the way it was MEANT to be done, because honestly, it makes a lot more sense.)

PHP Code:
if ($profilefield['profilefieldid'] == $myfieldid) {$wrapper_template 'userfield_test_wrapper';} 
Then just make the new template:
HTML Code:
<div class="blockrow"><div style="border:1px solid #000000; margin:1px;padding:1px;"><h2>Gold Membership Extras</h2><br />
	<label>{vb:raw profilefield.title}:</label>
	<div class="rightcol">
		{vb:raw custom_field_holder}
	</div>
</div></div>
(Style it a lot better than I did there, heh.)
Reply With Quote
  #3  
Old 12-01-2011, 12:55 AM
AK Houston's Avatar
AK Houston AK Houston is offline
 
Join Date: Jan 2011
Location: Texas
Posts: 35
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

it has a little problem in the post bit. if you read my PM
Reply With Quote
  #4  
Old 12-15-2011, 11:49 PM
radiofranky radiofranky is offline
 
Join Date: Jun 2011
Posts: 149
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

this is great! I would like to do the same put with BB code embedded.

I would like to add three fields for user to enter stock tickers, and after rendering it will display those stocks current price versus the enter dates price.

Something like this

INTC 18/20 10% again

thanks for the help
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 04:29 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.05058 seconds
  • Memory Usage 2,229KB
  • Queries Executed 11 (?)
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
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (1)bbcode_html
  • (2)bbcode_php
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (4)post_thanks_box
  • (4)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (4)post_thanks_postbit_info
  • (4)postbit
  • (4)postbit_onlinestatus
  • (4)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
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete