• Is it possible to create whitelisted tags for the whole forum , and prevent new tags to be created by regular users?

    So, everyone can only use tags that are pre-determined by the moderators/admins?

  • NodeBB

    Yeah that's correct you would have to do them one by one in the UI. Alternatively if you are going to set all categories to the same 200 tags you can run the below script in your nodebb folder. Update the tags array to the the tags you wan't to allow. This script would delete all existing tag whitelists for all categories then set all categories to same list of allowed tags.

    /* globals require, console, process */
    
    'use strict';
    
    const nconf = require('nconf');
    
    nconf.file({
    	file: 'config.json',
    });
    
    nconf.defaults({
    	base_dir: __dirname,
    	views_dir: './build/public/templates',
    	upload_path: 'public/uploads',
    });
    
    var db = require('./src/database');
    
    // update to your own tags
    const tags = ['tag1', 'tag2', 'tag3'];
    
    db.init(function (err) {
    	if (err) {
    		console.log('NodeBB could not connect to your database. Error: ' + err.message);
    		process.exit();
    	}
    
    	setCategoryWhitelist(function (err) {
    		if (err) {
    			console.error(err);
    			process.exit();
    		}
    		console.log('done');
    		process.exit();
    	});
    });
    
    async function setCategoryWhitelist(callback) {
    	const cids = await db.getSortedSetRange('categories:cid', 0, -1);
    
    	// delete all existing tags
    	await db.deleteAll(cids.map(cid => `cid:${cid}:tag:whitelist`));
    
    	// set new tag whitelist for all categories
    	const bulkAdd = [];
    	cids.forEach((cid) => {
    		tags.forEach((tag, index) => {
    			bulkAdd.push([`cid:${cid}:tag:whitelist`, index, tag]);
    		});		
    	});
    
    	await db.sortedSetAddBulk(bulkAdd);
    	callback();
    }
    
  • NodeBB

    Yes but you need to do it for each category, under Tag whitelist input.


  • @baris said in "tag list" to choose from?:

    Yes but you need to do it for each category, under Tag whitelist input.

    I think this requires inputting each tag separately, right? Is there an easy way to do this? Because I am talking about more than 200 tags... And I believe I have to input each tag in each category/sub-category separately, right?

  • NodeBB

    Yeah that's correct you would have to do them one by one in the UI. Alternatively if you are going to set all categories to the same 200 tags you can run the below script in your nodebb folder. Update the tags array to the the tags you wan't to allow. This script would delete all existing tag whitelists for all categories then set all categories to same list of allowed tags.

    /* globals require, console, process */
    
    'use strict';
    
    const nconf = require('nconf');
    
    nconf.file({
    	file: 'config.json',
    });
    
    nconf.defaults({
    	base_dir: __dirname,
    	views_dir: './build/public/templates',
    	upload_path: 'public/uploads',
    });
    
    var db = require('./src/database');
    
    // update to your own tags
    const tags = ['tag1', 'tag2', 'tag3'];
    
    db.init(function (err) {
    	if (err) {
    		console.log('NodeBB could not connect to your database. Error: ' + err.message);
    		process.exit();
    	}
    
    	setCategoryWhitelist(function (err) {
    		if (err) {
    			console.error(err);
    			process.exit();
    		}
    		console.log('done');
    		process.exit();
    	});
    });
    
    async function setCategoryWhitelist(callback) {
    	const cids = await db.getSortedSetRange('categories:cid', 0, -1);
    
    	// delete all existing tags
    	await db.deleteAll(cids.map(cid => `cid:${cid}:tag:whitelist`));
    
    	// set new tag whitelist for all categories
    	const bulkAdd = [];
    	cids.forEach((cid) => {
    		tags.forEach((tag, index) => {
    			bulkAdd.push([`cid:${cid}:tag:whitelist`, index, tag]);
    		});		
    	});
    
    	await db.sortedSetAddBulk(bulkAdd);
    	callback();
    }
    

  • @baris thanks a lot, this will be helpful.

  • Topic has been marked as solved  crazycells crazycells 

Suggested Topics

| | |