Skip to content

Recent Cards plugin customization

Solved Customisation
21 3 6.7k 1
  • Although it is not used in this forum, I have a question about this plugin:

    https://github.com/NodeBB-Community/nodebb-plugin-recent-cards

    It basically creates a set of cards for each recent post.

    Screen Shot 2022-04-04 at 8.37.12 PM.png

    I wonder if there is an easy way to create a several px width border in each box(card) representing its own category color. Previously plugin was showing category-specific color as the background color; however, this is removed in the latest versions. I have got some tips from baris here: https://community.nodebb.org/topic/16249/recent-cards-does-not-slide-by-finger/8

    and I made some changes in the forked version here: https://github.com/YesilkartForum/nodebb-plugin-recent-cards-yesilkartforum/commit/844ab9ef890e5cb3e4d0a71e1a5f9b627c257ce8

    however, unfortunately, it did not work. Any help or tip is appreciated.

  • Although it is not used in this forum, I have a question about this plugin:

    https://github.com/NodeBB-Community/nodebb-plugin-recent-cards

    It basically creates a set of cards for each recent post.

    Screen Shot 2022-04-04 at 8.37.12 PM.png

    I wonder if there is an easy way to create a several px width border in each box(card) representing its own category color. Previously plugin was showing category-specific color as the background color; however, this is removed in the latest versions. I have got some tips from baris here: https://community.nodebb.org/topic/16249/recent-cards-does-not-slide-by-finger/8

    and I made some changes in the forked version here: https://github.com/YesilkartForum/nodebb-plugin-recent-cards-yesilkartforum/commit/844ab9ef890e5cb3e4d0a71e1a5f9b627c257ce8

    however, unfortunately, it did not work. Any help or tip is appreciated.

    @crazycells I have this running on https://hostrisk.com which is my cyber security (automated) news site. Are you looking for something like this ?

    46465831-6773-4784-8f23-feecc7db9117-image.png

    Here’s a jQuery function that will do this on the fly

    $(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", "border-color: " + color);
            });
        });
    });
    

    Paste this into your ACP -> Appearance -> Custom JS, save, and test

  • Although it is not used in this forum, I have a question about this plugin:

    https://github.com/NodeBB-Community/nodebb-plugin-recent-cards

    It basically creates a set of cards for each recent post.

    Screen Shot 2022-04-04 at 8.37.12 PM.png

    I wonder if there is an easy way to create a several px width border in each box(card) representing its own category color. Previously plugin was showing category-specific color as the background color; however, this is removed in the latest versions. I have got some tips from baris here: https://community.nodebb.org/topic/16249/recent-cards-does-not-slide-by-finger/8

    and I made some changes in the forked version here: https://github.com/YesilkartForum/nodebb-plugin-recent-cards-yesilkartforum/commit/844ab9ef890e5cb3e4d0a71e1a5f9b627c257ce8

    however, unfortunately, it did not work. Any help or tip is appreciated.

    @crazycells If I understand this correctly, you want a (for example, 5px) border around each card that is taken from the relevant category’s colour ?

  • @crazycells If I understand this correctly, you want a (for example, 5px) border around each card that is taken from the relevant category’s colour ?

    @phenomlab said in Recent Cards plugin customization:

    @crazycells If I understand this correctly, you want a (for example, 5px) border around each card that is taken from the relevant category’s colour ?

    yes, actually even 1 px is doing the job. I made a change in inspector CSS codes to show the final result I aim…

    Screen Shot 2022-04-05 at 11.35.04 AM.png

  • Although it is not used in this forum, I have a question about this plugin:

    https://github.com/NodeBB-Community/nodebb-plugin-recent-cards

    It basically creates a set of cards for each recent post.

    Screen Shot 2022-04-04 at 8.37.12 PM.png

    I wonder if there is an easy way to create a several px width border in each box(card) representing its own category color. Previously plugin was showing category-specific color as the background color; however, this is removed in the latest versions. I have got some tips from baris here: https://community.nodebb.org/topic/16249/recent-cards-does-not-slide-by-finger/8

    and I made some changes in the forked version here: https://github.com/YesilkartForum/nodebb-plugin-recent-cards-yesilkartforum/commit/844ab9ef890e5cb3e4d0a71e1a5f9b627c257ce8

    however, unfortunately, it did not work. Any help or tip is appreciated.

    @crazycells I have this running on https://hostrisk.com which is my cyber security (automated) news site. Are you looking for something like this ?

    46465831-6773-4784-8f23-feecc7db9117-image.png

    Here’s a jQuery function that will do this on the fly

    $(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", "border-color: " + color);
            });
        });
    });
    

    Paste this into your ACP -> Appearance -> Custom JS, save, and test

  • @phenomlab said in Recent Cards plugin customization:

    @crazycells If I understand this correctly, you want a (for example, 5px) border around each card that is taken from the relevant category’s colour ?

    yes, actually even 1 px is doing the job. I made a change in inspector CSS codes to show the final result I aim…

    Screen Shot 2022-04-05 at 11.35.04 AM.png

    up there I only changed this line:

    border: 1px solid #e3e3e3;
    
  • @crazycells I have this running on https://hostrisk.com which is my cyber security (automated) news site. Are you looking for something like this ?

    46465831-6773-4784-8f23-feecc7db9117-image.png

    Here’s a jQuery function that will do this on the fly

    $(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", "border-color: " + color);
            });
        });
    });
    

    Paste this into your ACP -> Appearance -> Custom JS, save, and test

    @phenomlab lol yes, that is exactly what I was looking for 😄
    it worked great!

    thank you very much 😄

    Screen Shot 2022-04-05 at 11.40.43 AM.png

  • phenomlabundefined phenomlab has marked this topic as solved on
  • @phenomlab lol yes, that is exactly what I was looking for 😄
    it worked great!

    thank you very much 😄

    Screen Shot 2022-04-05 at 11.40.43 AM.png

    @crazycells Happy to help. That function wasn’t always there - I just finished writing it 🙂

  • @crazycells Happy to help. That function wasn’t always there - I just finished writing it 🙂

    @phenomlab said in Recent Cards plugin customization:

    @crazycells Happy to help. That function wasn’t always there - I just finished writing it 🙂

    Thanks a lot 🙂 🙏

  • @phenomlab said in Recent Cards plugin customization:

    @crazycells Happy to help. That function wasn’t always there - I just finished writing it 🙂

    Thanks a lot 🙂 🙏

    @crazycells No problems. Feel free to comment out line

    console.log("data-cid " + dataId + " is " + color);
    

    From that function as it’s only used to ensure the script is picking up the relevant background-color from the category.

  • @crazycells No problems. Feel free to comment out line

    console.log("data-cid " + dataId + " is " + color);
    

    From that function as it’s only used to ensure the script is picking up the relevant background-color from the category.

    @phenomlab I think in dark mode, it is going back to normal. Is there an easy way to keep the same border color in dark mode as well?

  • @phenomlab I think in dark mode, it is going back to normal. Is there an easy way to keep the same border color in dark mode as well?

    @crazycells Dark mode shouldn’t have any impact - can you provide a URL where I can see this ?

  • @crazycells Dark mode shouldn’t have any impact - can you provide a URL where I can see this ?

    @phenomlab Yes, I see the issue. It’s because of lazy CSS classes meaning this below will override everything else when body.lights-out is appended to the existing CSS class.

    body.lights-out .recent-cards .recent-card-container .recent-card {
        background-color: #2E2E2E;
        border: #848484;
    }
    

    You should be able to work around that by adding this into your custom CSS

    body.lights-out .recent-cards .recent-card-container .recent-card {
        border: 1px solid #848484;
    }
    

    b1dbdcde-f723-4446-b3c8-3f4f4d6856fb-image.png

    Let me know how you get on.

  • @phenomlab Yes, I see the issue. It’s because of lazy CSS classes meaning this below will override everything else when body.lights-out is appended to the existing CSS class.

    body.lights-out .recent-cards .recent-card-container .recent-card {
        background-color: #2E2E2E;
        border: #848484;
    }
    

    You should be able to work around that by adding this into your custom CSS

    body.lights-out .recent-cards .recent-card-container .recent-card {
        border: 1px solid #848484;
    }
    

    b1dbdcde-f723-4446-b3c8-3f4f4d6856fb-image.png

    Let me know how you get on.

    @phenomlab Yes, I found the lines and fixed them 😄

    Thank you very much. Since the recent card plugin-related codes are not included in the night mode plugin; we have previously added some custom codes for recent cards… Apparently, those codes were creating the problem. Now, it is fixed 👍

  • phenomlabundefined phenomlab referenced this topic on
  • phenomlabundefined phenomlab referenced this topic on
  • hi @phenomlab , somehow recent cards are not clickable in my forum after using these codes, however, it works fine here…

    Normally, when I click a card it takes me to that topic, however, nothing happens now.

    I use this CSS:

    
    li.col-md-3.col-sm-6.col-xs-12.recent-card-container {
        width: 290px !important;
    }
    

    this JS code:

    $(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", "border-color: " + color);
            });
        });
    });
    
    $(document).ready(function() {
        $(window).on('action:ajaxify.end', function(data) {
       var categoryColor = $('[role="presentation"].icon').css("background-color");
                    $('li.topic-owner-post:nth-child(1)').css('border-color', categoryColor);
        });
    });
    
    
    window.addEventListener("load", () => {
        // CHROME
        if (navigator.userAgent.indexOf("Chrome") != -1) {
            console.log("Google Chrome");
            $(window).on('action:ajaxify.end', function(data) {
                $('.carousel-mode').bxSlider({
                    auto: false,
                    autoControls: true,
                    stopAutoOnClick: true,
                    pager: false,
                    keyboardEnabled: true,
                    touchEnabled: false
                });
            });
        } else {
            console.log("Others");
            $(window).on('action:ajaxify.end', function(data) {
                $('.carousel-mode').bxSlider({
                    auto: false,
                    autoControls: true,
                    stopAutoOnClick: true,
                    pager: false,
                    keyboardEnabled: true,
                    touchEnabled: true
                });
            });
        }
    });
    

    and this header:

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js" integrity="sha512-894YE6QWD5I59HgZOGReFYm4dnWc1Qt5NtvYSaNcOP+u1T9qYdvdihz0PPSiiqn/+/3e7Jo4EaG7TubfWGUrMQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
    <script src="https://cdn.jsdelivr.net/bxslider/4.2.12/jquery.bxslider.min.js"></script>
    
  • hi @phenomlab , somehow recent cards are not clickable in my forum after using these codes, however, it works fine here…

    Normally, when I click a card it takes me to that topic, however, nothing happens now.

    I use this CSS:

    
    li.col-md-3.col-sm-6.col-xs-12.recent-card-container {
        width: 290px !important;
    }
    

    this JS code:

    $(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", "border-color: " + color);
            });
        });
    });
    
    $(document).ready(function() {
        $(window).on('action:ajaxify.end', function(data) {
       var categoryColor = $('[role="presentation"].icon').css("background-color");
                    $('li.topic-owner-post:nth-child(1)').css('border-color', categoryColor);
        });
    });
    
    
    window.addEventListener("load", () => {
        // CHROME
        if (navigator.userAgent.indexOf("Chrome") != -1) {
            console.log("Google Chrome");
            $(window).on('action:ajaxify.end', function(data) {
                $('.carousel-mode').bxSlider({
                    auto: false,
                    autoControls: true,
                    stopAutoOnClick: true,
                    pager: false,
                    keyboardEnabled: true,
                    touchEnabled: false
                });
            });
        } else {
            console.log("Others");
            $(window).on('action:ajaxify.end', function(data) {
                $('.carousel-mode').bxSlider({
                    auto: false,
                    autoControls: true,
                    stopAutoOnClick: true,
                    pager: false,
                    keyboardEnabled: true,
                    touchEnabled: true
                });
            });
        }
    });
    

    and this header:

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js" integrity="sha512-894YE6QWD5I59HgZOGReFYm4dnWc1Qt5NtvYSaNcOP+u1T9qYdvdihz0PPSiiqn/+/3e7Jo4EaG7TubfWGUrMQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
    <script src="https://cdn.jsdelivr.net/bxslider/4.2.12/jquery.bxslider.min.js"></script>
    

    @crazycells Strange. Are there any errors appearing in the console at your end ? When I look at the console itself, I see

    0a1b4841-6da4-4809-958e-4636441ada61-image.png

    However, this doesn’t seem to have any impact on the recent cards - the links appear to work fine. I think this may be a caching issue at your end ?

  • @crazycells Strange. Are there any errors appearing in the console at your end ? When I look at the console itself, I see

    0a1b4841-6da4-4809-958e-4636441ada61-image.png

    However, this doesn’t seem to have any impact on the recent cards - the links appear to work fine. I think this may be a caching issue at your end ?

    @phenomlab hmm, I tried on different browsers with iPhone.

    First of all, when I delete this code:

    
    window.addEventListener("load", () => {
        // CHROME
        if (navigator.userAgent.indexOf("Chrome") != -1) {
            console.log("Google Chrome");
            $(window).on('action:ajaxify.end', function(data) {
                $('.carousel-mode').bxSlider({
                    auto: false,
                    autoControls: true,
                    stopAutoOnClick: true,
                    pager: false,
                    keyboardEnabled: true,
                    touchEnabled: false
                });
            });
        } else {
            console.log("Others");
            $(window).on('action:ajaxify.end', function(data) {
                $('.carousel-mode').bxSlider({
                    auto: false,
                    autoControls: true,
                    stopAutoOnClick: true,
                    pager: false,
                    keyboardEnabled: true,
                    touchEnabled: true
                });
            });
        }
    });
    

    then, everything is normal, cards are clickable but of course, sliding does not work.

    However, when I activate it, I could not click the cards on Safari, but it was working on Firefox. I can slide the cards on both browsers by the way.

    So, I guess like Google Chrome, Safari has its own problems with this sliding application?

  • I forgot to write… I do not see any errors on the console.

  • @phenomlab hmm, I tried on different browsers with iPhone.

    First of all, when I delete this code:

    
    window.addEventListener("load", () => {
        // CHROME
        if (navigator.userAgent.indexOf("Chrome") != -1) {
            console.log("Google Chrome");
            $(window).on('action:ajaxify.end', function(data) {
                $('.carousel-mode').bxSlider({
                    auto: false,
                    autoControls: true,
                    stopAutoOnClick: true,
                    pager: false,
                    keyboardEnabled: true,
                    touchEnabled: false
                });
            });
        } else {
            console.log("Others");
            $(window).on('action:ajaxify.end', function(data) {
                $('.carousel-mode').bxSlider({
                    auto: false,
                    autoControls: true,
                    stopAutoOnClick: true,
                    pager: false,
                    keyboardEnabled: true,
                    touchEnabled: true
                });
            });
        }
    });
    

    then, everything is normal, cards are clickable but of course, sliding does not work.

    However, when I activate it, I could not click the cards on Safari, but it was working on Firefox. I can slide the cards on both browsers by the way.

    So, I guess like Google Chrome, Safari has its own problems with this sliding application?

    @crazycells odd. Should actually work on Safari. Can you change the line under “Others” to be touchEnabled: false and see if that allows you to select the href links ?

    Obviously, save the code and reload the site before testing again.

  • @crazycells odd. Should actually work on Safari. Can you change the line under “Others” to be touchEnabled: false and see if that allows you to select the href links ?

    Obviously, save the code and reload the site before testing again.

    @phenomlab said in Recent Cards plugin customization:

    @crazycells odd. Should actually work on Safari. Can you change the line under “Others” to be touchEnabled: false and see if that allows you to select the href links ?

    Obviously, save the code and reload the site before testing again.

    with this change, in both Safari and Firefox browsers, I can click the cards and go to the topics, however sliding does not work.

  • @phenomlab said in Recent Cards plugin customization:

    @crazycells odd. Should actually work on Safari. Can you change the line under “Others” to be touchEnabled: false and see if that allows you to select the href links ?

    Obviously, save the code and reload the site before testing again.

    with this change, in both Safari and Firefox browsers, I can click the cards and go to the topics, however sliding does not work.

    @crazycells yes, unsurprising as they both use the webkit CSS rendering engine. This will be the same bug I reference earlier that affects Google Chrome. Not much that can be done sadly.


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
  • Bug Report

    Solved Bugs nodebb bugs
    47
    1
    26 Votes
    47 Posts
    9k Views
    @crazycells Good points, thanks. I completely forgot that classes are added - makes life much simpler! EDIT - seems this is pretty straightforward, and only needs the below CSS .upvoted i { color: var(--bs-user-level) !important; } This then yields [image: 1718028529465-3f072f8a-ebfa-4910-8723-73c493b8e4eb-image.png] However, the caveat here is that the .upvoted class will only show for your upvotes, and nobody else’s. However, this does satisfy the original request however I would love to see my upvoted posts more clearly, because currently, when I upvote, nothing on the post tool is changing, it would be nicer if there is an indication that I have upvoted (like a filled or colored triangle?)
  • nodebb-plugin-custom-pages

    Solved Customisation plugin custom-pages
    5
    2
    3 Votes
    5 Posts
    3k 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?
  • Header Menu After Upgrading V3.1.1

    Solved Customisation header nodebb
    2
    1
    2 Votes
    2 Posts
    659 Views
    @cagatay this relates to a change the css classes used for the brand header meaning it will now float to the left instead of right. If you’d like to retain the original behavior, you can add this css class [data-widget-area="brand-header"] { justify-content: end; display: flex; } Further information here https://community.nodebb.org/topic/17090/manual-build-a-custom-header-in-harmony/19?_=1684069325296
  • Custom badges

    Solved Customisation nodebb
    103
    2
    49 Votes
    103 Posts
    26k Views
    Perfect
  • Tenor GIF Plugin

    Solved Customisation plugin
    19
    1
    5 Votes
    19 Posts
    4k Views
    @phenomlab Also for me now Upgraded in ACP and all good . Thx.
  • [NodeBB] greeting message

    Solved Customisation css nodebb javascript
    2
    1
    3 Votes
    2 Posts
    1k Views
    @pwsincd welcome to sudonix, and thanks for the comments. What your looking for is here https://sudonix.com/topic/195/nodebb-welcome-message/3?_=1648295651358
  • CSS codes for fa-info icon

    Solved Customisation nodebb
    9
    1
    6 Votes
    9 Posts
    2k Views
    I have just figured it out… it can be targeted with text-decoration-color: I was mistakenly using color
  • NodeBB Discord Plugins

    Unsolved Customisation nodebb discord plugin
    7
    0 Votes
    7 Posts
    2k Views
    @RiekMedia hi. Just following up on this thread (I know it’s old) but was curious to understand if it’s still an issue or not ?