Skip to content

Custom badges

Solved Customisation
103 4 48.9k 2
  • @crazycells I expect the quickest way to do this will be using groups. I do something similar - I have a “verified” group, and once a new member starts engaging, they are added here so I know they are actually who they say they are.

    In terms of CSS, I use

    .group-label {
        margin-right: -12px;
        margin-top: 1px;
        width: 22px;
        height: 22px;
        border-radius: 11px;
        line-height: 21px;
        display: inline-block;
        vertical-align: middle;
        text-align: center;
        overflow: hidden;
    }
    small.label.group-label.inline-block i {
        margin-top: 1px;
        margin-left: 0px;
        vertical-align: middle;
        display: flex;
        justify-content: center;
    }
    

    It wouldn’t take much effort to get these to look like the blue Twitter check mark.

    As a point of interest (and convenience), Font Awesome has something extremely close

    59db89f5-2c7a-4052-8106-31264d7fa05f-image.png

    Sadly, it’s part of the PRO set, so unless you have a license, it’s not within reach

    1b9bde0a-1b83-41e5-a0ba-5b1131a68332-image.png

    However, I have a license, and could easily make a PNG out of this without too much effort for those who don’t (not cheap AT USD 99.00 per year).

    If you’d rather not use groups, you can use native CSS, but you are limited in terms of targets. For example, the author badge is easy because you can simply target the [itemprop="author"] class. However, posts from other users will not have this, and that’s where the groups come to the rescue.

    If any interest, I can put some code together to show you how this would work.

    @phenomlab how can I target one specific group with CSS codes?
    With this CSS, other group badges turn into rounds as well.

  • @phenomlab how can I target one specific group with CSS codes?
    With this CSS, other group badges turn into rounds as well.

    Screen Shot 2022-11-17 at 13.28.34.png

    actually, it looks very good (quite acceptable for our case 🙂 ), thanks for the CSS codes; however CSS codes affect other group badges too…

    group name: verified

    how can I restrict CSS codes to this group? I checked the inspector, I can only see group links, but not specific names…

  • @crazycells I expect the quickest way to do this will be using groups. I do something similar - I have a “verified” group, and once a new member starts engaging, they are added here so I know they are actually who they say they are.

    In terms of CSS, I use

    .group-label {
        margin-right: -12px;
        margin-top: 1px;
        width: 22px;
        height: 22px;
        border-radius: 11px;
        line-height: 21px;
        display: inline-block;
        vertical-align: middle;
        text-align: center;
        overflow: hidden;
    }
    small.label.group-label.inline-block i {
        margin-top: 1px;
        margin-left: 0px;
        vertical-align: middle;
        display: flex;
        justify-content: center;
    }
    

    It wouldn’t take much effort to get these to look like the blue Twitter check mark.

    As a point of interest (and convenience), Font Awesome has something extremely close

    59db89f5-2c7a-4052-8106-31264d7fa05f-image.png

    Sadly, it’s part of the PRO set, so unless you have a license, it’s not within reach

    1b9bde0a-1b83-41e5-a0ba-5b1131a68332-image.png

    However, I have a license, and could easily make a PNG out of this without too much effort for those who don’t (not cheap AT USD 99.00 per year).

    If you’d rather not use groups, you can use native CSS, but you are limited in terms of targets. For example, the author badge is easy because you can simply target the [itemprop="author"] class. However, posts from other users will not have this, and that’s where the groups come to the rescue.

    If any interest, I can put some code together to show you how this would work.

    @phenomlab

    Thank you very much for the code.

    In my case, I would like to display the group labels after the user level label because as it is it’s not very nice

    Same for Author Badge

    6e43f17a-ed43-451c-b68f-4f3a5bc71078-image.png

  • @phenomlab

    Thank you very much for the code.

    In my case, I would like to display the group labels after the user level label because as it is it’s not very nice

    Same for Author Badge

    6e43f17a-ed43-451c-b68f-4f3a5bc71078-image.png

    @DownPW and @crazycells could you let me have URL’s where I can see examples of what you’ve posted?

  • @DownPW and @crazycells could you let me have URL’s where I can see examples of what you’ve posted?

    @phenomlab Prod server

  • @DownPW Something like this?

    879aa7c9-5e97-4c5f-bb82-014524653254-image.png

    CSS modifications

    .topic-owner-post [itemprop="author"] {
        float: left;
    }
    // Add these to (or edit) the existing classes you have
    .user-level-topic {
        float: none;
    }
    .group-label {
        margin-top: -1px;
    }
    .topic-owner-post [itemprop="author"]:after {
        margin-top: 1px;
        height: 18px;
    }
    
  • @DownPW Something like this?

    879aa7c9-5e97-4c5f-bb82-014524653254-image.png

    CSS modifications

    .topic-owner-post [itemprop="author"] {
        float: left;
    }
    // Add these to (or edit) the existing classes you have
    .user-level-topic {
        float: none;
    }
    .group-label {
        margin-top: -1px;
    }
    .topic-owner-post [itemprop="author"]:after {
        margin-top: 1px;
        height: 18px;
    }
    

    @phenomlab

    yep but I have not the same result as you with this code :

    24bc3b0a-29a3-45f7-8e6b-bc72f6248bda-image.png

    The username is after the userlevel badge 😒

  • @phenomlab

    yep but I have not the same result as you with this code :

    24bc3b0a-29a3-45f7-8e6b-bc72f6248bda-image.png

    The username is after the userlevel badge 😒

    @DownPW Can you put the code back to what I provided? I see you are making changes

  • @DownPW Can you put the code back to what I provided? I see you are making changes

  • @DownPW Thanks. Seems I forgot this

    [itemprop="author"] {
        float: left;
    }
    

    And this which will fix the overlap on the reply label

    .topic [component="post/parent"] {
        margin-left: 15px;
    }
    
  • @DownPW Thanks. Seems I forgot this

    [itemprop="author"] {
        float: left;
    }
    

    And this which will fix the overlap on the reply label

    .topic [component="post/parent"] {
        margin-left: 15px;
    }
    

    @phenomlab Ha yes very good thanks dude 😉 You’re the best always 😉

  • Screen Shot 2022-11-17 at 13.28.34.png

    actually, it looks very good (quite acceptable for our case 🙂 ), thanks for the CSS codes; however CSS codes affect other group badges too…

    group name: verified

    how can I restrict CSS codes to this group? I checked the inspector, I can only see group links, but not specific names…

    @crazycells Let’s try this

    In /forum/admin/manage/groups/verified, remove the highlighted section

    1c9e1406-d641-4e6c-8a03-e452c9462768-image.png

    We are then left with no text, but a clearer looking icon

    149c24c4-c95c-4a6e-8dc4-52340e4d0bed-image.png

    Now remove the previous CSS blocks I provided here

    Add replacement CSS

    .post-header a[href*="/forum/groups/verified"] {
        margin-right: 3px;
        margin-top: 1px;
        border-radius: 50%;
        line-height: 20px;
        display: inline-block;
        vertical-align: middle;
        text-align: center;
        overflow: hidden;
    }
    small.label.group-label.inline-block i {
        margin-top: 1px;
        margin-left: 0px;
        vertical-align: middle;
        justify-content: center;
        display: flex;
    }
    .post-header a[href*="/forum/groups/verified"] .group-label {
        min-width: 20px;
        display: flex;
        justify-content: center;
    }
    .group-label {
        vertical-align: -6px;
    }
    
    

    You should land up with something like this

    16a50d49-f765-46c9-a480-344a592baf13-image.png

    As you can see, this forces the stars out of alignment, but I don’t think this is too much of a sacrifice, and could be remediated with additional targeted CSS if need be.

    Essentially, because NodeBB doesn’t provide an id field (which would be a lot easier), we have to use wildcard CSS such as .post-header a[href*="/forum/groups/verified"] but make it targeted in the sense that it will only fire if it is part of the post stream, hence .post-header at the beginning.

    We then use .post-header a[href*="/forum/groups/verified"] .group-label to target the actual label (but only when we have a wildcard match in the CSS) meaning we can set a minimum width so that the circle doesn’t look quashed (we need to validate this on Firefox though as additional CSS might be required due to how the webkit engine will render this in contrast to mozilla).

    Finally, we use .group-label to force alignment in terms of height to prevent it wandering out of the inline-block.

    This is already active on your forum, so nothing for you to do but (hopefully) admire 🙂

    Let me know.

  • phenomlabundefined phenomlab referenced this topic on
  • @crazycells Let’s try this

    In /forum/admin/manage/groups/verified, remove the highlighted section

    1c9e1406-d641-4e6c-8a03-e452c9462768-image.png

    We are then left with no text, but a clearer looking icon

    149c24c4-c95c-4a6e-8dc4-52340e4d0bed-image.png

    Now remove the previous CSS blocks I provided here

    Add replacement CSS

    .post-header a[href*="/forum/groups/verified"] {
        margin-right: 3px;
        margin-top: 1px;
        border-radius: 50%;
        line-height: 20px;
        display: inline-block;
        vertical-align: middle;
        text-align: center;
        overflow: hidden;
    }
    small.label.group-label.inline-block i {
        margin-top: 1px;
        margin-left: 0px;
        vertical-align: middle;
        justify-content: center;
        display: flex;
    }
    .post-header a[href*="/forum/groups/verified"] .group-label {
        min-width: 20px;
        display: flex;
        justify-content: center;
    }
    .group-label {
        vertical-align: -6px;
    }
    
    

    You should land up with something like this

    16a50d49-f765-46c9-a480-344a592baf13-image.png

    As you can see, this forces the stars out of alignment, but I don’t think this is too much of a sacrifice, and could be remediated with additional targeted CSS if need be.

    Essentially, because NodeBB doesn’t provide an id field (which would be a lot easier), we have to use wildcard CSS such as .post-header a[href*="/forum/groups/verified"] but make it targeted in the sense that it will only fire if it is part of the post stream, hence .post-header at the beginning.

    We then use .post-header a[href*="/forum/groups/verified"] .group-label to target the actual label (but only when we have a wildcard match in the CSS) meaning we can set a minimum width so that the circle doesn’t look quashed (we need to validate this on Firefox though as additional CSS might be required due to how the webkit engine will render this in contrast to mozilla).

    Finally, we use .group-label to force alignment in terms of height to prevent it wandering out of the inline-block.

    This is already active on your forum, so nothing for you to do but (hopefully) admire 🙂

    Let me know.

    @phenomlab

    Just one things my friend.

    I search a css class for display groupname on group icons mouse over but don’t find it.
    if you have that in your hat I’m a taker 😉

  • @phenomlab

    Just one things my friend.

    I search a css class for display groupname on group icons mouse over but don’t find it.
    if you have that in your hat I’m a taker 😉

    @DownPW Mmmmm, yes, the fastest way to do that would be to use the title attribute. Bootstrap has native support for that

    8e9af7a4-b69c-4573-93cb-72dce2d8bcf3-image.png

    If you added this attribute then hovered over the element, you’d see this

    4cd5440b-649f-4817-be85-08ff54a8859b-image.png

    It’s possible to write jQuery to handle this - aside from that, you’d need to hack into the post template which I wouldn’t recommend. There isn’t any native CSS that will do this for you sadly, so the title="" attribute is the best way forward but won’t do anything without custom JS.

    EDIT - I actually have a requirement for this myself, so will probably write some code to do it over the coming days/weeks (really depending on how much free time I have).

  • @crazycells Let’s try this

    In /forum/admin/manage/groups/verified, remove the highlighted section

    1c9e1406-d641-4e6c-8a03-e452c9462768-image.png

    We are then left with no text, but a clearer looking icon

    149c24c4-c95c-4a6e-8dc4-52340e4d0bed-image.png

    Now remove the previous CSS blocks I provided here

    Add replacement CSS

    .post-header a[href*="/forum/groups/verified"] {
        margin-right: 3px;
        margin-top: 1px;
        border-radius: 50%;
        line-height: 20px;
        display: inline-block;
        vertical-align: middle;
        text-align: center;
        overflow: hidden;
    }
    small.label.group-label.inline-block i {
        margin-top: 1px;
        margin-left: 0px;
        vertical-align: middle;
        justify-content: center;
        display: flex;
    }
    .post-header a[href*="/forum/groups/verified"] .group-label {
        min-width: 20px;
        display: flex;
        justify-content: center;
    }
    .group-label {
        vertical-align: -6px;
    }
    
    

    You should land up with something like this

    16a50d49-f765-46c9-a480-344a592baf13-image.png

    As you can see, this forces the stars out of alignment, but I don’t think this is too much of a sacrifice, and could be remediated with additional targeted CSS if need be.

    Essentially, because NodeBB doesn’t provide an id field (which would be a lot easier), we have to use wildcard CSS such as .post-header a[href*="/forum/groups/verified"] but make it targeted in the sense that it will only fire if it is part of the post stream, hence .post-header at the beginning.

    We then use .post-header a[href*="/forum/groups/verified"] .group-label to target the actual label (but only when we have a wildcard match in the CSS) meaning we can set a minimum width so that the circle doesn’t look quashed (we need to validate this on Firefox though as additional CSS might be required due to how the webkit engine will render this in contrast to mozilla).

    Finally, we use .group-label to force alignment in terms of height to prevent it wandering out of the inline-block.

    This is already active on your forum, so nothing for you to do but (hopefully) admire 🙂

    Let me know.

    @phenomlab thank you very much 🙂 it looks great!

  • crazycellsundefined crazycells has marked this topic as solved on
  • @DownPW Mmmmm, yes, the fastest way to do that would be to use the title attribute. Bootstrap has native support for that

    8e9af7a4-b69c-4573-93cb-72dce2d8bcf3-image.png

    If you added this attribute then hovered over the element, you’d see this

    4cd5440b-649f-4817-be85-08ff54a8859b-image.png

    It’s possible to write jQuery to handle this - aside from that, you’d need to hack into the post template which I wouldn’t recommend. There isn’t any native CSS that will do this for you sadly, so the title="" attribute is the best way forward but won’t do anything without custom JS.

    EDIT - I actually have a requirement for this myself, so will probably write some code to do it over the coming days/weeks (really depending on how much free time I have).

    @phenomlab said in Custom badges:

    It’s possible to write jQuery to handle this - aside from that, you’d need to hack into the post template which I wouldn’t recommend. There isn’t any native CSS that will do this for you sadly, so the title=“” attribute is the best way forward but won’t do anything without custom JS.
    EDIT - I actually have a requirement for this myself, so will probably write some code to do it over the coming days/weeks (really depending on how much free time I have).

    very clever the addition of this “Title=” attribute, I would not have thought of it myself !! Cheer !!

    This is exactly the result I’m looking for !
    I don’t even know why, I’m not amazed at your prowess anymore 🙂

    Excellent 😉

  • @phenomlab thank you very much 🙂 it looks great!

    @phenomlab lol verified badge changed here as well 🙂

    is there an easy CSS code to make it look more like a flower, rather than perfectly round? (just like the Twitter one)

  • @phenomlab lol verified badge changed here as well 🙂

    is there an easy CSS code to make it look more like a flower, rather than perfectly round? (just like the Twitter one)

    @crazycells it’s possible, but would be very complex. Much less hassle to use either a direct image (which probably won’t look very good on scale) or use this SVG from Font Awesome which appears to be free 👍

    https://fontawesomeicons.com/svg/icons/twitter-verified-badge

  • @crazycells it’s possible, but would be very complex. Much less hassle to use either a direct image (which probably won’t look very good on scale) or use this SVG from Font Awesome which appears to be free 👍

    https://fontawesomeicons.com/svg/icons/twitter-verified-badge

    @phenomlab thanks.

  • @crazycells it’s possible, but would be very complex. Much less hassle to use either a direct image (which probably won’t look very good on scale) or use this SVG from Font Awesome which appears to be free 👍

    https://fontawesomeicons.com/svg/icons/twitter-verified-badge

    @phenomlab since both admin and global moderator badges are close to purple/maroon color, you can change one to green (which I believe was the verified badge color)


Did this solution help you?
Did you find the suggested solution useful? Support 💗 Sudonix with a coffee
If your organisation needs deeper expertise around infrastructure, security, or technology leadership, learn more about Phenomlab Ltd. Many of the deeper technical guides behind Sudonix are published there.

Related Topics
  • Spam spam spam

    Solved Configure nodebb
    6
    2 Votes
    6 Posts
    2k Views
    @Panda said in Spam spam spam: ok, yes Ive seen the queue, it shows IP, but doesnt have a field for comments from registrant. It’s not designed for that. It merely serves as a gateway between posts appearing on your form or not. @Panda said in Spam spam spam: It would be better if nodebb had this plugin included in ACP list, as not only then do you know its approved and should work, but many people cant or dont want to use CLI on the server That’s a question for the NodeBB devs but in all honesty you can’t not use the CLI when installing nodebb so to be this isn’t a big deal.
  • 3 Votes
    6 Posts
    3k Views
    @kadir-ay-0 marking as resolved based on https://community.nodebb.org/topic/17109/manual-build-a-night-mode-for-harmony/5 Please do not raise requests in two places - here and the NodeBB forums. All this does is create unnecessary load for both parties.
  • restarting nodebb on boot

    Unsolved Configure nodebb
    3
    1 Votes
    3 Posts
    2k Views
    @eeeee said in restarting nodebb on boot: can I just run nodebb under nodemon for auto restarts? It’s a better method. Nodemon just looks for file system changes and would effectively die if the server was rebooted meaning you’d have to start it again anyway. Systemd is the defacto standard which is how the operating system interacts in terms of services, scheduled tasks etc.
  • Recent Cards plugin customization

    Solved Customisation nodebb
    21
    1
    13 Votes
    21 Posts
    10k Views
    @pobojmoks that’s easily done by modifying the code provided here so that it targets background rather than border In essence, the below should work $(document).ready(function() { $(window).on('action:ajaxify.end', function(data) { $('.recent-card-container').each(function(i) { var dataId = $(this).attr("data-cid"); var color = $('[role="presentation"]', this).css("background-color"); console.log("data-cid " + dataId + " is " + color); $('[data-cid="' + dataId + '"] .recent-card').attr("style", "background-color: " + color); }); }); });
  • [NODEBB] Help for my custom CSS

    Solved Customisation nodebb css bugfix
    257
    49 Votes
    257 Posts
    143k Views
    @cagatay sorry for late response. This looks too be one of the widgets, and I’m wondering if you have custom code that targets this. Had this recently happened after an upgrade or other changes?
  • [NodeBB] First post customization

    Solved Customisation nodebb
    5
    4 Votes
    5 Posts
    2k Views
    @phenomlab thanks
  • NodeBB vs Discourse

    Chitchat nodebb discourse board
    25
    6 Votes
    25 Posts
    12k Views
    @phenomlab said in NodeBB vs Discourse: Hetzner eh ? I use them also. In fact, Sudonix is hosted in Nuremberg yes i’m also at hetzner, i have been a customer there for years with a reseller account for domains. My VPS that I host there are also in Nuremberg
  • Display tweets in widget [NodeBB]

    Solved Customisation
    29
    4 Votes
    29 Posts
    11k Views
    @phenomlab brilliant, many thanks Mark