Skip to content

Plugin to show images in teasers

General
6 2 1.4k 1
  • Hi,

    I’ve posted this on nodebb before but was hoping to get more response here if anyone is interested. 🙂

    I was searching for a solution to show images, especially custom emojis, in teasers. Right now custom emojis or images are shown like “xyz.png” or “:emoji1:”:

    Screenshot 2023-06-08 at 12-39-45 Kategorien.png

    Regular emojis from emoji packs are displayed, I guess because the browser interprets ASCII.

    I’ve then created a plugin using an intended solution found here. It should remove the img-tag from the configureStripTags Hook.

    Unfortunately there is no impact to the recent cards plugin or any other teasers. No regarding error or warning found in the nodebb log. This is part of the log when I run ./nodebb dev:

    verbose: [plugins] Loaded plugin: nodebb-plugin-teaser-image
    
    verbose: [plugins/fireHook] filter:teasers.configureStripTags
    

    Plugin is as basic as it can be:

    index.js:

    'use strict';
    
    var plugin = {};
    
    plugin.filterTeasersConfigureStripTags = async function (hookData) {
      // Check if the "img" tag is present in the tags array
      if (hookData.tags.includes('img')) {
        // Remove the "img" tag from the tags array
        hookData.tags = hookData.tags.filter(tag => tag !== 'img');
      }
    
      return hookData;
    };
    
    module.exports = plugin;
    

    package.json:

    {
      "name": "nodebb-plugin-teaser-image",
      "version": "1.0.0",
      "description": "NodeBB Plugin to show images in teasers",
      "main": "index.js",
      "dependencies": {},
      "nbbpm": {
        "compatibility": "^1.0.0 || ^2.0.0 || ^3.0.0"
      }
    }
    
    

    plugin.json:

    {
      "id": "nodebb-plugin-teaser-image",
      "name": "Show images in Teasers",
      "description": "A NodeBB plugin to show images in teasers",
      "version": "1.0.0",
      "hooks": [
        {
          "hook": "filter:teasers.configureStripTags",
          "method": "filterTeasersConfigureStripTags"
        }
      ]
    }
    
    

    Anything I have overlooked or any more information I could add? From my understanding, this should already work. 🤔 Help is appreciated. I don’t have a github link yet, If anyone wants to try you can just create a folder in node_modules and add the above files.

  • Hi,

    I’ve posted this on nodebb before but was hoping to get more response here if anyone is interested. 🙂

    I was searching for a solution to show images, especially custom emojis, in teasers. Right now custom emojis or images are shown like “xyz.png” or “:emoji1:”:

    Screenshot 2023-06-08 at 12-39-45 Kategorien.png

    Regular emojis from emoji packs are displayed, I guess because the browser interprets ASCII.

    I’ve then created a plugin using an intended solution found here. It should remove the img-tag from the configureStripTags Hook.

    Unfortunately there is no impact to the recent cards plugin or any other teasers. No regarding error or warning found in the nodebb log. This is part of the log when I run ./nodebb dev:

    verbose: [plugins] Loaded plugin: nodebb-plugin-teaser-image
    
    verbose: [plugins/fireHook] filter:teasers.configureStripTags
    

    Plugin is as basic as it can be:

    index.js:

    'use strict';
    
    var plugin = {};
    
    plugin.filterTeasersConfigureStripTags = async function (hookData) {
      // Check if the "img" tag is present in the tags array
      if (hookData.tags.includes('img')) {
        // Remove the "img" tag from the tags array
        hookData.tags = hookData.tags.filter(tag => tag !== 'img');
      }
    
      return hookData;
    };
    
    module.exports = plugin;
    

    package.json:

    {
      "name": "nodebb-plugin-teaser-image",
      "version": "1.0.0",
      "description": "NodeBB Plugin to show images in teasers",
      "main": "index.js",
      "dependencies": {},
      "nbbpm": {
        "compatibility": "^1.0.0 || ^2.0.0 || ^3.0.0"
      }
    }
    
    

    plugin.json:

    {
      "id": "nodebb-plugin-teaser-image",
      "name": "Show images in Teasers",
      "description": "A NodeBB plugin to show images in teasers",
      "version": "1.0.0",
      "hooks": [
        {
          "hook": "filter:teasers.configureStripTags",
          "method": "filterTeasersConfigureStripTags"
        }
      ]
    }
    
    

    Anything I have overlooked or any more information I could add? From my understanding, this should already work. 🤔 Help is appreciated. I don’t have a github link yet, If anyone wants to try you can just create a folder in node_modules and add the above files.

    @dave1904 there’s nothing wrong with the plugin you’ve written, but seeing as it’s a server side hook, have you changed the plugin load order so that yours is the last to load?

    It could well be that your plugin is being overridden by another.

  • @dave1904 there’s nothing wrong with the plugin you’ve written, but seeing as it’s a server side hook, have you changed the plugin load order so that yours is the last to load?

    It could well be that your plugin is being overridden by another.

    @phenomlab said in Plugin to show images in teasers:

    have you changed the plugin load order so that yours is the last to load?

    Yes I did, the plugin is last in the plugin order list.

  • @phenomlab said in Plugin to show images in teasers:

    have you changed the plugin load order so that yours is the last to load?

    Yes I did, the plugin is last in the plugin order list.

    @dave1904 have you considered doing this client side? You could fairly easily manipulate the element in question using js.

    Admittedly, anyone using your site without script access won’t be able to leverage this, but it’s an acceptable solution.

  • Thank you @phenomlab

    Client side development is something I would consider but I don’t like it when things don’t work and especially when I don’t know why they don’t work. Do you maybe have any idea where I could have a look for more troubleshooting? I see that the hook is fired but can I see anywhere what the hook is doing in detail?

  • Thank you @phenomlab

    Client side development is something I would consider but I don’t like it when things don’t work and especially when I don’t know why they don’t work. Do you maybe have any idea where I could have a look for more troubleshooting? I see that the hook is fired but can I see anywhere what the hook is doing in detail?

    @dave1904 I’d start by adding a console.log function to hookData so you can see what is being returned

    return hookData;
    console.log(hookData):
    

Related Topics
  • Nodebb to Xenforo

    Solved Configure xenforo nodebb
    3
    0 Votes
    3 Posts
    237 Views
    @cagatay as @downpw stated, there isn’t a native tool that will do this for you. You’d need to either develop your own or ask the nodebb team to assist which will be a paid exercise.
  • 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.
  • NodeBB recent cards customisation

    Solved Customisation nodebb recent cards
    3
    1
    2 Votes
    3 Posts
    897 Views
    @phenomlab thank you very much for the assistance Mark, massively appreciated as always. The great thing about this is it’s all documented for other NodeBB users that come looking for solutions . Looks far better .
  • 1 Votes
    4 Posts
    1k Views
    @Vijay-Kumavat-0 I think you’d be better off customising the plugin above to be honest. It seems like you’d be reinventing the wheel otherwise. I’d modify /nodebb/node_modules/nodebb-rewards-essentials/lib/conditions.js /nodebb/node_modules/nodebb-rewards-essentials/lib/rewards.js These seem to be the two files that control what is in the dropdown lists.
  • Want to use Sudonix themes ?

    Chitchat themes nodebb
    80
    1
    34 Votes
    80 Posts
    20k Views
    omg thank you Mark.
  • IRC Server/Client - Chat App with NodeBB

    Linux nodebb irc server client
    6
    1 Votes
    6 Posts
    2k Views
    @Hari not sure from the consumer perspective, but Skype has been all but completely consumed by Microsoft Teams when it comes to business usage.
  • Adjusting the size of boxes in posts-list class

    Solved Customisation nodebb
    3
    3 Votes
    3 Posts
    1k Views
    @phenomlab thanks a lot, this combination works best .posts-list .posts-list-item .content { overflow: auto; max-height: 600px; }
  • Nodebb best plugins

    General nodebb plugins
    18
    7 Votes
    18 Posts
    4k Views
    @phenomlab thanks