Section name not being included in breadcrumb
-
No no no no no. Comment out the line with
var meta
. The one that shows up at the top of the error message you posted. Make sure you uncomment all of those other things.This is not a bug in NodeBB. As the error message clearly says, the variable
meta
was already declared in that scope in library.js. (Asconst meta ...
) -
@pitaj I'm really sorry for making this thread long and I appreciate you take your priceless time to me.
I checked
load.js
andindex.js
and they have no lines containing withvar meta
. They just haveconst meta = require('../meta');
. You can check them in Github repo too:
https://github.com/NodeBB/NodeBB/blob/master/src/plugins/load.js
https://github.com/NodeBB/NodeBB/blob/master/src/plugins/index.jsI intended to comment out lines with
var meta
, but I found nothing. -
In the error message
2021-03-04T17:05:46.584Z [4567/600] - error: /some_path/node_modules/nodebb-theme-persona/library.js:37 var meta = require.main.require('./src/meta'); ^
You need to edit the same file you've been editing the whole time:
/some_path/node_modules/nodebb-theme-persona/library.js
You need to comment out line 37, the one that starts with
var meta
as shown in the error message. -
@pitaj I did this and I get error at line 15:
error: /category/5/%D9%BE%D8%B1%D8%B3%D8%B4-%D9%88-%D9%BE%D8%A7%D8%B3%D8%AE ReferenceError: relative_path is not defined at Object.helpers.buildCategoryBreadcrumbs (/some_path/node_modules/nodebb-theme-persona/library.js:15:14)
Error in my forum is:
relative_path is not defined
-
@inna okay try adding this below the
const meta = ...
line:const relative_path = meta.config.relative_path;
-
@pitaj thanks, it's fine now, but there's an issue in the breadcrumbs links.
Because my forums names are in Persian, there may some ASCII URLs.
For example, link https://pythonforum.ir/category/5/ itself is fine, but when I go to it and I check the breadcrumbs links (category 5 is 2 levels up after the main site), its previous category link is https://pythonforum.ir/category/5/undefined/category/3/ and Home link is https://pythonforum.ir/category/5/undefined/ .
To see this, I remain these changes in my website.
This is log of Nodebb:[ { text: '[[global:home]]', url: 'undefined/' }, { text: 'پایتون ۳', url: 'undefined/category/3/پایتون', cid: 3 } ] [ { text: '[[global:home]]', url: 'undefined/' }, { text: 'قوانین، اطلاعیهها و اخبار', url: 'undefined/category/1/قوانین-اطلاعیه-ها-و-اخبار', cid: 1 } ] [ { text: '[[global:home]]', url: 'undefined/' }, { text: 'قوانین، اطلاعیهها و اخبار', url: 'undefined/category/1/قوانین-اطلاعیه-ها-و-اخبار', cid: 1 } ] [ { text: '[[global:home]]', url: 'undefined/' }, { text: 'پایتون ۳', url: 'undefined/category/3/پایتون', cid: 3 } ]
Also if you remember and told me to add a
console.log(breadcrumbs)
, it's still in the file but there's no output in the console tab. -
@inna okay it looks like the solution I gave was incorrect, but at least you aren't getting errors.
meta.config.relative_path
is wrong (which is why you see a bunch ofundefined
). Try this instead:const relative_path = require.main.require('nconf').get('relative_path');
-
@inna you're welcome!
Do you mind posting the final code so others may use it as a reference?
Also I must recommend you move that code into your own custom plugin, as otherwise you may lose your changes. For instance, when upgrading NodeBB that file is likely to be overwritten.
-
@pitaj Sure, why not:)
In the path/to_your_nodebb_path/node_modules/nodebb-theme-persona/library.js
(or whatever file and path you want to add), after the first line which is'use strict';
, add these lines below the first line:const helpers = require.main.require('./src/controllers/helpers'); const categories = require.main.require('./src/categories'); const meta = require.main.require('./src/meta'); const relative_path = require.main.require('nconf').get('relative_path'); helpers.buildCategoryBreadcrumbs = async function (cid) { const breadcrumbs = []; while (parseInt(cid, 10)) { /* eslint-disable no-await-in-loop */ const data = await categories.getCategoryFields(cid, ['name', 'slug', 'parentCid', 'disabled', 'isSection']); if (!data.disabled) { breadcrumbs.unshift({ text: String(data.name), url: `${relative_path}/category/${data.slug}`, cid: cid, }); } cid = data.parentCid; } if (meta.config.homePageRoute && meta.config.homePageRoute !== 'categories') { breadcrumbs.unshift({ text: '[[global:header.categories]]', url: `${relative_path}/categories`, }); } breadcrumbs.unshift({ text: '[[global:home]]', url: `${relative_path}/`, }); return breadcrumbs; };
Then comment out line starting with
var meta
by adding two//
://var meta = require.main.require('./src/meta');
Then you can restart by either of these ways:
- /nodebb_path/nodebb restart
- service nodebb restart
- systemctl restart nodebb
Regarding custom plugin, I'll consider it soon.