Use Custom Profile Fields in Conversation Userinfo Template

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Trevor Hannant
    vBulletin Support
    • Aug 2002
    • 24325
    • 5.7.X

    Use Custom Profile Fields in Conversation Userinfo Template

    This post 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. and will be using the Hook system rather than Template Edits to achieve this

    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 ONLY

    Firstly, go to:

    AdminCP > Styles & Themes > Style Manager

    ...and using the dropdown next to your chosen Style, select 'Add New Template'. Name this template 'conversation_profilefields' and add the following to the template code:

    PHP Code:
    {vb:data userInfouserfetchProfileInfo, {vb:raw conversation.userid}}

    <
    vb:if condition="$userInfo['fieldx']"><li class="b-userinfo__additional-info"><label>{vb:phrase fieldx_title}:</label> <span>{vb:raw userInfo.customFields.default.fieldx_title.val}</span></li></vb:if> 
    Change the three instances of "fieldx" to your actual field name then save this template. For multiple fields, repeat the <vb:if> </vb:if> line changing the "fieldx" to the appropriate field ID.

    Next, go to:

    AdminCP > Products & Hooks > Manage Hooks

    ...and click on the 'Add New Hook' link. Create a new hook with these specifications:
    • Product: vBulletin
    • Hook is Active: Yes
    • Hook Location: conversation_userstats
    • Title: Add User Profile Fields to Conversation Userinfo Template
    • Template Name: conversation_profilefields

    Save this Hook. Now, provided you have text in the relevant Profile Field, these will show up underneath the number of posts a user has when the relevant profile field is completed by the user.

    Instructions for Multiple-Selection Menu and Multiple-Selection Checkbox fields will follow later...
    Last edited by Trevor Hannant; Wed 21 Oct '15, 5:44am.
    Vote for:

    - Admin Settable Paid Subscription Reminder Timeframe (vB6)
    - Add Admin ability to auto-subscribe users to specific channel(s) (vB6)
  • glennrocksvb
    Former vBulletin Developer
    • Mar 2011
    • 4011
    • 5.7.X

    #2
    For styling purposes and to make it consistent with other items in the postbit, the <li> tag should have b-userinfo__additional-info class.

    Flag Icon Postbit Insert GIPHY Impersonate User BETTER INITIALS AVATAR Better Name Card Quote Selected Text Bookmark Posts Post Footer Translate Stop Links in Posts +MORE!

    Comment

    • Trevor Hannant
      vBulletin Support
      • Aug 2002
      • 24325
      • 5.7.X

      #3
      Don't know why I missed that... Thanks Glenn!
      Vote for:

      - Admin Settable Paid Subscription Reminder Timeframe (vB6)
      - Add Admin ability to auto-subscribe users to specific channel(s) (vB6)

      Comment

      • coshotgun
        New Member
        • Aug 2010
        • 21
        • 4.0.x

        #4
        Well this put MY location under everyone, it did not show each individual users location. Ideas???

        Comment

        • glennrocksvb
          Former vBulletin Developer
          • Mar 2011
          • 4011
          • 5.7.X

          #5
          Try this:

          1. Edit the hook you created and in the Hook Arguments field, specify the following:

          Code:
          userInfo=userInfo
          2. Edit the template you created and replace this:

          Code:
          {vb:data userInfo, user, fetchProfileInfo, {vb:raw [COLOR=#FF0000]conversation[/COLOR].userid}}
          with:

          Code:
          {vb:data userInfo, user, fetchProfileInfo, {vb:raw [COLOR=#0000FF]userInfo[/COLOR].userid}}

          Flag Icon Postbit Insert GIPHY Impersonate User BETTER INITIALS AVATAR Better Name Card Quote Selected Text Bookmark Posts Post Footer Translate Stop Links in Posts +MORE!

          Comment

          • glennrocksvb
            Former vBulletin Developer
            • Mar 2011
            • 4011
            • 5.7.X

            #6
            Originally posted by Trevor Hannant
            For multiple fields, repeat the <vb:if> </vb:if> line changing the "fieldx" to the appropriate field ID.
            This is how I would do it.

            PHP Code:
            {vb:rawdata userInfouserfetchProfileInfo, {vb:raw userInfo.userid}}

            <
            vb:comment>Specify the custom field IDsYou can re-arrange the order as desired</vb:comment>
            {
            vb:set fields, {vb:php array, field5field6field7field8field9field10}}

            <
            vb:each from="fields" value="field">
                {
            vb:set label, {vb:raw field}}
                {
            vb:strcat label'_title'}
                {
            vb:set fieldVal, {vb:raw userInfo[$field]}}
                <
            vb:if condition="!empty($fieldVal)">
                    <
            li class="b-userinfo__additional-info"><label>{vb:phrase {vb:raw label}}:</label> <span>{vb:var fieldVal}</span></li>
                </
            vb:if>
            </
            vb:each>

            <
            vb:comment>Bonus! if you want to add a Send PM link</vb:comment>
            <
            li class="b-userinfo__additional-info"><a href="{vb:raw baseurl}/privatemessage/new/{vb:raw userInfo.userid}">Send PM</a></li
            I would still use it even if only one profile field is needed because this will only require adding fieldX once instead of 3 instances.
            Last edited by glennrocksvb; Wed 21 Oct '15, 1:08pm.

            Flag Icon Postbit Insert GIPHY Impersonate User BETTER INITIALS AVATAR Better Name Card Quote Selected Text Bookmark Posts Post Footer Translate Stop Links in Posts +MORE!

            Comment

            • coshotgun
              New Member
              • Aug 2010
              • 21
              • 4.0.x

              #7
              Originally posted by Glenn Vergara
              Try this:

              1. Edit the hook you created and in the Hook Arguments field, specify the following:

              Code:
              userInfo=userInfo
              2. Edit the template you created and replace this:

              Code:
              {vb:data userInfo, user, fetchProfileInfo, {vb:raw [COLOR=#FF0000]conversation[/COLOR].userid}}
              with:

              Code:
              {vb:data userInfo, user, fetchProfileInfo, {vb:raw [COLOR=#0000FF]userInfo[/COLOR].userid}}

              Worked, THANK YOU!!

              Comment

              • sdynak
                New Member
                • Oct 2015
                • 3
                • 5.1.x

                #8
                Thanks guys.. worked for me also with hook & template edit.. I too had it show up for all users.. Maybe Trevor can update the original post?

                Best,
                Stan

                Comment

                • glennrocksvb
                  Former vBulletin Developer
                  • Mar 2011
                  • 4011
                  • 5.7.X

                  #9
                  Originally posted by Glenn Vergara
                  This is how I would do it.

                  PHP Code:
                  {vb:rawdata userInfouserfetchProfileInfo, {vb:raw userInfo.userid}}

                  <
                  vb:comment>Specify the custom field IDsYou can re-arrange the order as desired</vb:comment>
                  {
                  vb:set fields, {vb:php array, field5field6field7field8field9field10}}

                  <
                  vb:each from="fields" value="field">
                  {
                  vb:set label, {vb:raw field}}
                  {
                  vb:strcat label'_title'}
                  {
                  vb:set fieldVal, {vb:raw userInfo[$field]}}
                  <
                  vb:if condition="!empty($fieldVal)">
                  <
                  li class="b-userinfo__additional-info"><label>{vb:phrase {vb:raw label}}:</label> <span>{vb:var fieldVal}</span></li>
                  </
                  vb:if>
                  </
                  vb:each>

                  <
                  vb:comment>Bonus! if you want to add a Send PM link</vb:comment>
                  <
                  li class="b-userinfo__additional-info"><a href="{vb:raw baseurl}/privatemessage/new/{vb:raw userInfo.userid}">Send PM</a></li
                  I would still use it even if only one profile field is needed because this will only require adding fieldX once instead of 3 instances.
                  Just updating this thread that I made this solution of mine as a real mod for easy installation and maintenance.

                  By default, vBulletin 5 only displays the Join Date and Post count in the postbit area (avatar and username section) in the thread view of a topic. There may be other tutorials out there to add custom fields in postbit but some require you to edit the existing postbit template. Editing existing templates is not good for

                  Flag Icon Postbit Insert GIPHY Impersonate User BETTER INITIALS AVATAR Better Name Card Quote Selected Text Bookmark Posts Post Footer Translate Stop Links in Posts +MORE!

                  Comment

                  • patriaquemera
                    New Member
                    • Dec 2011
                    • 10
                    • 4.1.x

                    #10
                    Originally posted by Trevor Hannant
                    This post 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. and will be using the Hook system rather than Template Edits to achieve this

                    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 ONLY

                    Firstly, go to:

                    AdminCP > Styles & Themes > Style Manager

                    ...and using the dropdown next to your chosen Style, select 'Add New Template'. Name this template 'conversation_profilefields' and add the following to the template code:

                    PHP Code:
                    {vb:data userInfouserfetchProfileInfo, {vb:raw conversation.userid}}

                    <
                    vb:if condition="$userInfo['fieldx']"><li class="b-userinfo__additional-info"><label>{vb:phrase fieldx_title}:</label> <span>{vb:raw userInfo.customFields.default.fieldx_title.val}</span></li></vb:if> 
                    Change the three instances of "fieldx" to your actual field name then save this template. For multiple fields, repeat the <vb:if> </vb:if> line changing the "fieldx" to the appropriate field ID.

                    Next, go to:

                    AdminCP > Products & Hooks > Manage Hooks

                    ...and click on the 'Add New Hook' link. Create a new hook with these specifications:
                    • Product: vBulletin
                    • Hook is Active: Yes
                    • Hook Location: conversation_userstats
                    • Title: Add User Profile Fields to Conversation Userinfo Template
                    • Template Name: conversation_profilefields

                    Save this Hook. Now, provided you have text in the relevant Profile Field, these will show up underneath the number of posts a user has when the relevant profile field is completed by the user.

                    Instructions for Multiple-Selection Menu and Multiple-Selection Checkbox fields will follow later...
                    Hello Trevor

                    With the original field works fine, but with my custom field only appear the name of field.

                    Example:
                    • Fecha de ingreso:
                    • Mensajes: 819
                    • Name:
                    • Genre:
                    In field "Name:" not appear any name and in field "Genre:" same not appear any info.

                    It is worth clarifying that I was edited the field fieldx in the 3 instances.

                    My code:

                    PHP Code:
                    {vb:data userInfouserfetchProfileInfo, {vb:raw conversation.userid}}

                    <
                    vb:if condition="$userInfo['field7']"><li class="b-userinfo__additional-info"><label>{vb:phrase field7_title}:</label> <span>{vb:raw userInfo.customFields.default.field7_title.val}</span></li></vb:if>

                    <
                    vb:if condition="$userInfo['field5']"><li class="b-userinfo__additional-info"><label>{vb:phrase field5_title}:</label> <span>{vb:raw userInfo.customFields.default.field5_title.val}</span></li></vb:if> 
                    Thanks for your help

                    Comment

                    • patriaquemera
                      New Member
                      • Dec 2011
                      • 10
                      • 4.1.x

                      #11
                      Resolved with the following code:

                      PHP Code:
                      <vb:if condition="$userInfo['field7']"><li><label>{vb:phrase field7_title}:</label> <span>{vb:raw userInfo.customFields.category1_title.field7_title.val}</span}</li></vb:if> 
                      Thanks anyway

                      Comment

                      widgetinstance 262 (Related Topics) skipped due to lack of content & hide_module_if_empty option.
                      Working...