Skip to content

Custom badges

Solved Customisation
103 4 60.2k 2
  • @crazycells ha! Yes, I see your point. I guess it’s down to taste, and thanks to the absolute positioning, you can easily customise to suit taste.

    It’s also worth noting that on here at least, this will only trigger on larger monitors - it would look awful on mobile devices in my view.

    wrote on last edited by
    #32

    @phenomlab oh, I think I got it. that is a general property for all group badges?

    I do not see any of them on mobile…

  • @phenomlab oh, I think I got it. that is a general property for all group badges?

    I do not see any of them on mobile…

    wrote on last edited by
    #33

    @crazycells yes, the badges by default do not display on less than 1200px I believe (I might be wrong)

  • @crazycells yes, the badges by default do not display on less than 1200px I believe (I might be wrong)

    wrote on last edited by phenomlab
    #34

    hi @phenomlab , in this topic where the solution is chosen:

    https://sudonix.org/topic/388/the-best-css-to-customize-our-logo

    verified badge and online status are overlapping. I guess it is not intended?

  • hi @phenomlab , in this topic where the solution is chosen:

    https://sudonix.org/topic/388/the-best-css-to-customize-our-logo

    verified badge and online status are overlapping. I guess it is not intended?

    wrote on last edited by
    #35

    @crazycells hmm, I’m not seeing that. Can you provide a screenshot?

  • @crazycells hmm, I’m not seeing that. Can you provide a screenshot?

    wrote on last edited by
    #36

    @phenomlab sure, here is how I see it:

    Screen Shot 2022-11-21 at 15.49.47.png

  • @phenomlab sure, here is how I see it:

    Screen Shot 2022-11-21 at 15.49.47.png

    wrote on last edited by
    #37

    @crazycells ah, yes, I know why. There’s a class I haven’t committed.

    Thanks. I’ll sort that out tomorrow.

  • @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.

    wrote on last edited by cagatay
    #38

    @phenomlab said in Custom badges:

    @crazycells @DownPW something of a “fresher” approach. Have a look at the below

    5602e864-6de6-4a09-9dd1-eb33b2807774-image.png

    Using the messenger type view I created, it then becomes possible to place the “verified” group according to the style from the same view.

    This does mean some new CSS

    .self-post a[href*="/groups/verified"] .group-label {
        position: absolute !important;
        right: 51px;
        top: 44px;
    }
    .topic-response-post a[href*="/groups/verified"] .group-label {
        position: absolute !important;
        left: 20px;
        top: 44px;
    }
    .topic-response-post i[component="user/status"] {
        position: absolute;
        left: -1px;
    }
    

    And, more importantly, I found a more efficient way of adding classes in the messenger view js. The revised code is below

    // Target those elements already loaded in the DOM
    $(document).ready(function() {
        $(window).on('action:ajaxify.end', function(data) {
            $('li[component="post"]').each(function(i, obj) {
                if (!$(this).hasClass('self-post') || (!$(this).hasClass('self-post'))) {
                    console.log("Adding required classes for messenger type view");
                    $(this).addClass('topic-response-post');
                }
    
            });
        });
    });
    // Target elements dynamically added to the DOM on post load
    $(document).ready(function() {
        $(window).on('action:ajaxify.loaded', function(data) {
            $('li[component="post"]').each(function(i, obj) {
                if (!$(this).hasClass('self-post') || (!$(this).hasClass('self-post'))) {
                    console.log("Adding required classes for messenger type view");
                    $(this).addClass('topic-response-post');
                }
    
            });
        });
    });
    

    My style looks like it with those codes. There isjust seems some blue color of my checked icon 🙂

    ab44fb86-a985-4bbb-b6ab-284c80831859-image.png

  • cagatay cagatay referenced this topic on
  • @phenomlab said in Custom badges:

    @crazycells @DownPW something of a “fresher” approach. Have a look at the below

    5602e864-6de6-4a09-9dd1-eb33b2807774-image.png

    Using the messenger type view I created, it then becomes possible to place the “verified” group according to the style from the same view.

    This does mean some new CSS

    .self-post a[href*="/groups/verified"] .group-label {
        position: absolute !important;
        right: 51px;
        top: 44px;
    }
    .topic-response-post a[href*="/groups/verified"] .group-label {
        position: absolute !important;
        left: 20px;
        top: 44px;
    }
    .topic-response-post i[component="user/status"] {
        position: absolute;
        left: -1px;
    }
    

    And, more importantly, I found a more efficient way of adding classes in the messenger view js. The revised code is below

    // Target those elements already loaded in the DOM
    $(document).ready(function() {
        $(window).on('action:ajaxify.end', function(data) {
            $('li[component="post"]').each(function(i, obj) {
                if (!$(this).hasClass('self-post') || (!$(this).hasClass('self-post'))) {
                    console.log("Adding required classes for messenger type view");
                    $(this).addClass('topic-response-post');
                }
    
            });
        });
    });
    // Target elements dynamically added to the DOM on post load
    $(document).ready(function() {
        $(window).on('action:ajaxify.loaded', function(data) {
            $('li[component="post"]').each(function(i, obj) {
                if (!$(this).hasClass('self-post') || (!$(this).hasClass('self-post'))) {
                    console.log("Adding required classes for messenger type view");
                    $(this).addClass('topic-response-post');
                }
    
            });
        });
    });
    

    My style looks like it with those codes. There isjust seems some blue color of my checked icon 🙂

    ab44fb86-a985-4bbb-b6ab-284c80831859-image.png

    wrote on last edited by
    #39

    @cagatay you should remove those two CSS blocks your referenced as that’s what’s causing the odd looking blue circles over the avatar.

  • @cagatay you should remove those two CSS blocks your referenced as that’s what’s causing the odd looking blue circles over the avatar.

    wrote on last edited by
    #40

    @phenomlab which one i should remove?

  • @phenomlab which one i should remove?

    wrote on last edited by
    #41

    @cagatay These

    .self-post a[href*="/groups/verified"] .group-label {
        position: absolute !important;
        right: 51px;
        top: 44px;
    }
    .topic-response-post a[href*="/groups/verified"] .group-label {
        position: absolute !important;
        left: 20px;
        top: 44px;
    }
    .topic-response-post i[component="user/status"] {
        position: absolute;
        left: -1px;
    }
    
  • @cagatay These

    .self-post a[href*="/groups/verified"] .group-label {
        position: absolute !important;
        right: 51px;
        top: 44px;
    }
    .topic-response-post a[href*="/groups/verified"] .group-label {
        position: absolute !important;
        left: 20px;
        top: 44px;
    }
    .topic-response-post i[component="user/status"] {
        position: absolute;
        left: -1px;
    }
    
    wrote on last edited by
    #42

    @phenomlab its not work, nothing changed when i deleted those css.

  • @phenomlab its not work, nothing changed when i deleted those css.

    wrote on last edited by
    #43

    @cagatay what isn’t working?

  • @cagatay what isn’t working?

    wrote on last edited by
    #44

    @phenomlab there is no changes after deleted css code;

    60f4bfa0-cc9e-4815-8044-9c38fb58769b-image.png

  • @cagatay what isn’t working?

    wrote on last edited by
    #45

    @phenomlab how can i set blue tick like sudonix to my own? coz codes which you are shared, it not look like yours;

    06a99cc4-2894-4284-84c5-cca50d0119cc-image.png

  • @phenomlab how can i set blue tick like sudonix to my own? coz codes which you are shared, it not look like yours;

    06a99cc4-2894-4284-84c5-cca50d0119cc-image.png

    wrote on last edited by
    #46
  • phenomlab phenomlab referenced this topic on
  • wrote on last edited by
    #47

    @phenomlab i read it and did it what you wrote. but result as below;

    42761f89-4153-4945-967a-10afddf478fc-image.png

    blue icon not seen, it hide by avatar 🙂

  • @phenomlab i read it and did it what you wrote. but result as below;

    42761f89-4153-4945-967a-10afddf478fc-image.png

    blue icon not seen, it hide by avatar 🙂

    wrote on last edited by phenomlab
    #48

    @cagatay Yes, having checked, I see what you mean. I’ve fixed this on your site.

    This is the new applied code

    .post-header a[href*="/groups/onaylı-üyeler"] {
        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*="/groups/onaylı-üyeler"] .group-label {
        min-width: 20px;
        display: flex;
        justify-content: center;
    }
    .self-post a[href*="/groups/onaylı-üyeler"] .group-label {
        position: absolute !important;
        right: 51px;
        top: 44px;
        z-index: 2;
    }
    .topic-response-post a[href*="/groups/onaylı-üyeler"] .group-label {
        position: absolute !important;
        left: 20px;
        top: 44px;
        z-index: 2;
    }
    .topic-response-post i[component="user/status"] {
        position: absolute;
        left: -1px;
    }
    .group-label {
        vertical-align: -6px;
    }
    

    However, there were some errors on your part. You were correct in renaming the actual group in CSS (good call) because of the language not being English, but the path was incorrect. You used the below, which was customized for @crazycells install 🙂

    /forum/groups/onaylı-üyeler
    

    It should be

    /groups/onaylı-üyeler
    

    You also have some overriding CSS somewhere that defines a lower z-index value which forces the “verified” icon behind the avatar, so I’ve added an adjustment for that

    z-index: 2;
    
  • @cagatay Yes, having checked, I see what you mean. I’ve fixed this on your site.

    This is the new applied code

    .post-header a[href*="/groups/onaylı-üyeler"] {
        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*="/groups/onaylı-üyeler"] .group-label {
        min-width: 20px;
        display: flex;
        justify-content: center;
    }
    .self-post a[href*="/groups/onaylı-üyeler"] .group-label {
        position: absolute !important;
        right: 51px;
        top: 44px;
        z-index: 2;
    }
    .topic-response-post a[href*="/groups/onaylı-üyeler"] .group-label {
        position: absolute !important;
        left: 20px;
        top: 44px;
        z-index: 2;
    }
    .topic-response-post i[component="user/status"] {
        position: absolute;
        left: -1px;
    }
    .group-label {
        vertical-align: -6px;
    }
    

    However, there were some errors on your part. You were correct in renaming the actual group in CSS (good call) because of the language not being English, but the path was incorrect. You used the below, which was customized for @crazycells install 🙂

    /forum/groups/onaylı-üyeler
    

    It should be

    /groups/onaylı-üyeler
    

    You also have some overriding CSS somewhere that defines a lower z-index value which forces the “verified” icon behind the avatar, so I’ve added an adjustment for that

    z-index: 2;
    
    wrote on last edited by
    #49

    @phenomlab ah okey Mark 🙂 you as always better then me so there is no word in my side for the explaniton 🙂

    thank you again.

  • @phenomlab ah okey Mark 🙂 you as always better then me so there is no word in my side for the explaniton 🙂

    thank you again.

    wrote on last edited by
    #50

    @cagatay said in Custom badges:

    @phenomlab ah okey Mark 🙂 you as always better then me so there is no word in my side for the explaniton 🙂

    thank you again.

    hi @cagatay , as a first step you have to create a group called “verified” , then everything is as it is written on this thread… but since your group name was different, it gave an error…

    I am writing this explicitly so that others can be aware.

  • @cagatay said in Custom badges:

    @phenomlab ah okey Mark 🙂 you as always better then me so there is no word in my side for the explaniton 🙂

    thank you again.

    hi @cagatay , as a first step you have to create a group called “verified” , then everything is as it is written on this thread… but since your group name was different, it gave an error…

    I am writing this explicitly so that others can be aware.

    wrote on last edited by
    #51

    @crazycells said in Custom badges:

    I am writing this explicitly so that others can be aware.

    Good point. Thanks


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
  • 1 Votes
    1 Posts
    2k Views
    No one has replied
  • Further Widgets question

    Solved Configure nodebb
    4
    1
    1 Votes
    4 Posts
    2k Views
    phenomlab
    @Panda category is for a category in its own, so for example, “fruit” whereas categories is the page that contains all categories as a list.
  • NodeBB: The global Search option

    Solved Configure search nodebb
    5
    0 Votes
    5 Posts
    1k Views
    phenomlab
    @mventures Yes, exactly. The other icon will restart NodeBB whilst the first icon I referenced will rebuild (recompile) it. The huge strength of NodeBB over Flarum (for example) is that the code is precompiled, and called once at boot. PHP’s code has to repeatedly reload code from source making it much slower.
  • Top Ranked Forums

    Chitchat nodebb top ranked
    9
    1
    3 Votes
    9 Posts
    3k Views
    phenomlab
    The real issue here is that most people consider forums to be “dead” in the sense that nobody uses them anymore, and social media groups have taken their place. Their once dominant stance in the 90’s and early 00’s will never be experienced again, but having said that, there are a number of forums that did in fact survive the social media onslaught, and still enjoy a large user base. Forums tend to be niche. One that immediately sticks out is Reddit - despite looking like it was designed in the 80s, it still has an enormous user base. Another is Stack Overflow, which needs no introduction. The key to any forum is the content it offers, and the more people whom contribute in terms of posting , the more popular and widely respected it becomes as a reliable source of information. Forums are still intensely popular with gamers, alongside those that offer tips on hacking etc.
  • Recent Cards plugin customization

    Solved Customisation nodebb
    21
    1
    13 Votes
    21 Posts
    12k Views
    phenomlab
    @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); }); }); });
  • Detect if user is admin

    General nodebb javascript code
    2
    0 Votes
    2 Posts
    2k Views
    phenomlab
    @pwsincd I think you can use userData.isAdmin = isAdmin; if I’m not mistaken - see https://community.nodebb.org/topic/15128/how-to-hide-whitelist-user-field-only-to-owner-or-admin?_=1648802303112 for an example
  • [NODEBB] Help for my custom CSS

    Solved Customisation nodebb css bugfix
    258
    49 Votes
    258 Posts
    168k Views
    cagatay
    mark hi, Refused to apply style from ‘https://efelsefe.com/assets/customfonts/FontAwesome-6-Pro/pro/css/v4-font-face.css’ because its MIME type (‘text/plain’) is not a supported stylesheet MIME type, and strict MIME checking is enabled. I keep getting this error.
  • [NodeBB] Import custom Font

    Solved Customisation custom fonts nodebb css
    12
    3 Votes
    12 Posts
    5k Views
    phenomlab
    @cagatay you’ll need to define this in the body tag (or another element if you want greater or more granular targets) - for example body { font-family: "Poppins"; font-size: 16px; } Essentially, you use the font-size CSS directive.