Skip to content

Custom badges

Solved Customisation
103 4 34.4k 2
  • @crazycells hmm, I’m not seeing that. Can you provide a screenshot?

    @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

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

    @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

  • cagatayundefined 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

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

    @phenomlab which one i should remove?

  • @phenomlab which one i should remove?

    @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;
    }
    

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

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

    @cagatay what isn’t working?

  • @cagatay what isn’t working?

    @phenomlab there is no changes after deleted css code;

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

  • @cagatay what isn’t working?

    @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

  • phenomlabundefined phenomlab referenced this topic on
  • @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 🙂

    @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;
    

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

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

    @crazycells said in Custom badges:

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

    Good point. Thanks

  • @crazycells said in Custom badges:

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

    Good point. Thanks

    @phenomlab i have problem with my badges for ios and android users.

    i can secret all of from mobile users?

  • @phenomlab i have problem with my badges for ios and android users.

    i can secret all of from mobile users?

    @cagatay Are they showing on mobile ? Can you send a screenshot ?

  • @cagatay Are they showing on mobile ? Can you send a screenshot ?

    @phenomlab sure,

    58aec53e-de00-4dee-a113-37f74ccbf338-image.png

  • @cagatay Do you want the icon to show? Because of the size of the screen estate, I think it makes more sense to hide it?


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
  • What’s going on with NodeBB?

    Performance nodebb script die
    20
    8 Votes
    20 Posts
    2k Views
    @cagatay The most reliable way to upgrade Node.js on Ubuntu depends on how you originally installed it. Method 1: Using NVM (Recommended) If you already use Node Version Manager (NVM), upgrading is simple. NVM allows you to keep both versions and switch between them if needed. Install Node 22: nvm install 22 Switch to Node 22: nvm use 22 Set it as your default: nvm alias default 22 Verify the change: node -v Method 2: Using NodeSource (PPA) If you installed Node.js via apt using the NodeSource repository, you need to update the repository script to point to the new version. Remove the old NodeSource list (optional but cleaner): sudo rm /etc/apt/sources.list.d/nodesource.list Download and run the NodeSource setup script for Node 22: curl -fsSL [https://deb.nodesource.com/setup_22.x](https://deb.nodesource.com/setup_22.x) | sudo -E bash - Install/Upgrade Node.js: sudo apt-get install -y nodejs Verify the installation: node -v Method 3: Using the ‘n’ Package If you have npm installed, you can use the n interactive manager. Clear the npm cache: sudo npm cache clean -f Install the ‘n’ helper: sudo npm install -g n Install Node 22: sudo n 22 Update your shell: hash -r Troubleshooting Permission Denied: If you see permission errors using Method 2 or 3, ensure you are using sudo. Path Issues: If node -v still shows version 20 after upgrading via NVM, restart your terminal or run source ~/.bashrc. Conflicts: Avoid mixing these methods. If you switch from apt to nvm, it is best to sudo apt remove nodejs first to avoid path conflicts.
  • Please help me, I can't install nodebb

    Locked Solved Customisation nodebb
    7
    5 Votes
    7 Posts
    1k Views
    Installation completed, verified, and tested. Correct installation methodology is below https://docs.nodebb.org/installing/os/ubuntu/
  • how to hide "moved" badge with CSS?

    Solved Customisation nodebb
    12
    1
    3 Votes
    12 Posts
    3k Views
    @crazycells ah, I see. That makes sense.
  • nodebb-plugin-custom-pages

    Solved Customisation plugin custom-pages
    5
    2
    3 Votes
    5 Posts
    4k Views
    @DownPW it’s possible, yes, but you may inadvertently end up targeting other elements using the same class which of course isn’t desired. Can you provide a link in DM for me to review?
  • 1 Votes
    1 Posts
    929 Views
    No one has replied
  • Recent Cards plugin customization

    Solved Customisation nodebb
    21
    1
    13 Votes
    21 Posts
    8k 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); }); }); });
  • Dark Theme Upper Padding

    Solved Customisation nodebb
    7
    1
    6 Votes
    7 Posts
    2k Views
    @DownPW great! thanks a lot… this code solves my problem.
  • [NodeBB] custom Gravatar image not showing

    Solved Customisation
    6
    1 Votes
    6 Posts
    2k Views
    @jac said in [NodeBB] custom Gravatar image not showing: @phenomlab said in [NodeBB] custom Gravatar image not showing: @jac are you using Custom ? Sure am mate Confirmed Fixed