vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vBulletin 3 Articles (https://vborg.vbsupport.ru/forumdisplay.php?f=187)
-   -   [How-to] Add more tabs to the vB 3.7 profile pages (https://vborg.vbsupport.ru/showthread.php?t=165554)

Lynne 01-25-2009 04:19 PM

Make $vbulletin global in the plugin.

Cledus James 02-03-2009 01:53 PM

Ok, this might have been answered before, but it seems I'm doing something wrong. I'm trying to add a new tab and display a custom profile field (field24) in it. Here's my plugin code:

Code:

$blocklist = array_merge($blocklist, array(
        'mymodification' => array(
                'class' => 'MyModification',
                'title' => 'My Modification',
                'hook_location' => 'profile_left_last'
        )
));

class vB_ProfileBlock_MyModification extends vB_ProfileBlock
{
        var $template_name = 'memberinfo_block_mymodification';

        function confirm_empty_wrap()
        {
                return false;
        }

        function confirm_display()
        {
                return ($this->block_data['mymodification'] != '');
        }

        function prepare_output($id = '', $options = array())
    {
 
        $this->block_data['mymodification'] = $this->profile->userinfo['field24'] : "Stuff: $this->profile->userinfo['field24']" ? "Nothing to see here";
    }
}
}

But when I add this I get an error on the website page:

Quote:

Parse error: parse error, unexpected ':' in /home/url/forums/member.php(464) : eval()'d code on line 26

Fatal error: Cannot instantiate non-existent class: vb_profileblock_myawards in /home/url/forums/includes/class_profileblock.php on line 64
When I ad just the original plugin code I don't get the error, but as soon as I try and replace the $this code it gives me the error. Wondering if anyone could be of any help. I'm a vBulletin newb. What am I doing wrong? Thanks.

Dinatius 02-05-2009 07:32 PM

Cledus: The ?: is in the wrong order. It should be:
Code:

$this->block_data['mymodification'] = $this->profile->userinfo['field24'] ? "Stuff: $this->profile->userinfo['field24']" : "Nothing to see here";

On another topic, for anyone interested, and to get some feedback on whether this is done properly:

I wanted to get mysql data on my new tab, and $db and $vbulletin->db didn't work - they aren't around when this code gets called. In the class_profileblock.php file, when it's building the static blocks such as user statistics and buddy list, it uses this:
Code:

$this->registry->db
It gets me the info, so it works, but is there a preferable way to do it?

Edit: $this->registry seems to be the same as $vbulletin elsewhere...

Cledus James 02-06-2009 01:21 PM

Quote:

Originally Posted by Dinatius (Post 1735484)
Cledus: The ?: is in the wrong order. It should be:
Code:

$this->block_data['mymodification'] = $this->profile->userinfo['field24'] ? "Stuff: $this->profile->userinfo['field24']" : "Nothing to see here";


Ok, I updated it and it did fix the error, but it still didn't display the field. It displayed:

Quote:

Stuff: Object->userinfo['field24']
in the profile tab. What should I do to display the content of the my custom profile field 24.

So here's my plugin right now:

Code:

$blocklist = array_merge($blocklist, array(
        'mymodification' => array(
                'class' => 'MyModification',
                'title' => 'My Modification',
                'hook_location' => 'profile_left_last'
        )
));

class vB_ProfileBlock_MyModification extends vB_ProfileBlock
{
        var $template_name = 'memberinfo_block_mymodification';

        function confirm_empty_wrap()
        {
                return false;
        }

        function confirm_display()
        {
                return ($this->block_data['mymodification'] != '');
        }

        function prepare_output($id = '', $options = array())
    {
 
        $this->block_data['mymodification'] = $this->profile->userinfo['field24'] ? "Stuff: $this->profile->userinfo['field24']" : "Nothing to see here";
    }
}

By the way, thanks for the reply.

Lynne 02-06-2009 02:01 PM

Have you tried to see if your plugin is even working by doing something simple like:

PHP Code:

$this->block_data['mymodification'] = 'This is a test'

OR, see if the profile field is even available there:
PHP Code:

$this->block_data['mymodification'] = '$this->profile->userinfo['field24']'


Dinatius 02-06-2009 04:19 PM

Oops, wasn't looking at the rest of the code. Array values need to be appended, can't be parsed inside quotes like a normal $variable:
Code:

$this->block_data['mymodification'] = $this->profile->userinfo['field24'] ? "Stuff: ".$this->profile->userinfo['field24'] : "Nothing to see here";
Alternately, you can put that array value in a variable and put that in quotes, although I'm not sure what that would do to the ?: selector. If it works, it makes things easier to read... Example:
Code:

$field24=$this->profile->userinfo['field24'];
$this->block_data['mymodification'] = $field24 ? "Stuff: $field24" : "Nothing to see here";

I'm only intermediate at PHP, too, so I'm not sure how that would affect performance (also depends how heavily the page is used)

(p.s. If people prefer I don't answer questions here, I'll move to PM)

Cledus James 02-09-2009 04:13 PM

Sent you a PM. :)

Cledus James 02-14-2009 04:57 AM

Ok, can someone help me just a bit more. Probably just an easy fix.

Now I added the last code posted to my plugin and it worked. It displayed the data from my custom profile field 18. In my above thread I said it was userfield24 but I had it wrong, it's userfield18. Now here's my plugin code:


Code:

$blocklist = array_merge($blocklist, array(
        'mymodification' => array(
                'class' => 'MyModification',
                'title' => 'My Modification',
                'hook_location' => 'profile_left_last'
        )
));

class vB_ProfileBlock_MyModification extends vB_ProfileBlock
{
        var $template_name = 'memberinfo_block_mymodification';

        function confirm_empty_wrap()
        {
                return false;
        }

        function confirm_display()
        {
                return ($this->block_data['mymodification'] != '');
        }

        function prepare_output($id = '', $options = array())
    {
 
        $this->block_data['mymodification'] = $this->profile->userinfo['field18'] ? "Stuff: ".$this->profile->userinfo['field18'] : "Nothing to see here";
    }
}

Like I said works fine with one small problem. Now the data I have stored in userfield18 is a list of information, like:

1. List Item 1
2. List Item 2
3. List Item 3
4. List Item 4
etc.

Now when its displayed in the new tab it all comes out on the same line like:

1. List Item 1 2. List Item 2 3. List Item 3 4. List Item 4

My question is, is there any way I can get it to be displayed in a list format? Like creating a new line for every list object? I tried adding a BR command in the field input itself without any luck. Anyone know how I can get it displayed like the way I input it into the field?

Thank you for any help anyone may offer.

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

Can anyone help?

Lynne 02-14-2009 04:21 PM

I'm not sure, but I would take a look at exactly what is in that field and see what separates the items and perhaps do a search/replace on the separator with a <br />

Cledus James 02-15-2009 01:10 AM

Quote:

Originally Posted by Lynne (Post 1743990)
I'm not sure, but I would take a look at exactly what is in that field and see what separates the items and perhaps do a search/replace on the separator with a <br />

Basically its just a list of info that is manually entered by admins into a custom field via admin cp. We have a ranking system of 1-22 on the website. The list just basically lets the users know how that got to what rank and what they've gotten credit for towards rank.

Anyway here's the url of my site profiles:

My Profile - Now what I'm trying to do is display that information in the Rank Information module on the right side under the Mini Stats into a new profile tab. I made the plugin active again so you can see the output under the My Modification tab. Basically want the rank info from the module inside the new tab in a list format. I'll rename the new tab and remove the info from th emodule when I get it working properly.

If for some reason you can not see the info I'm talking about on my site here's an example of some information (as listed in the custom field in the admin cp) thats in my custom field that I want displayed in list format.

Quote:

1. Website Owner
2. 6 month Member
3. 1 year Member
4. 100 Website Posts
5. 250 Website Posts
6. 500 Website Posts
7. 1000 Website Posts
8. Website staff
9. Clan Recruiting
10. Gears of War Roster
11. Rainbow Six Vegas Roster
12. Battlefield: Bad Company Roster
13. Call of Duty 4 Roster
14. Ghost Recon 2 Roster
15. Grand Theft Auto 4 Roster
16. Rainbow Six Vegas 2 Roster
17. Rock Band 2 Roster
18. Gears of War 2 Roster
19. Call of Duty 5 Roster
20. 3 Month Member
21. 50 Website Posts
22. 750 Website Posts
Again it comes out as:

Quote:

Stuff: 1. Website Owner 2. 6 month Member 3. 1 year Member 4. 100 Website Posts 5. 250 Website Posts 6. 500 Website Posts 7. 1000 Website Posts 8. Website staff 9. Clan Recruiting 10. Gears of War Roster 11. Rainbow Six Vegas Roster 12. Battlefield: Bad Company Roster 13. Call of Duty 4 Roster 14. Ghost Recon 2 Roster 15. Grand Theft Auto 4 Roster 16. Rainbow Six Vegas 2 Roster 17. Rock Band 2 Roster 18. Gears of War 2 Roster 19. Call of Duty 5 Roster 20. 3 Month Member 21. 50 Website Posts 22. 750 Website Posts
in the new profile tab.


Hope this helps you help me, lol. Thanks for your time.


All times are GMT. The time now is 01:34 AM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01561 seconds
  • Memory Usage 1,770KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (8)bbcode_code_printable
  • (2)bbcode_php_printable
  • (6)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (4)pagenav_pagelink
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (10)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.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/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.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
  • printthread_start
  • pagenav_page
  • pagenav_complete
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete