feat: #8450, next/prev link tags on /unread /recent

v1.18.x
Barış Soner Uşaklı 5 years ago
parent e80100b5b0
commit eb9704f85e

@ -53,6 +53,19 @@ helpers.buildQueryString = function (cid, filter, term) {
return Object.keys(qs).length ? '?' + querystring.stringify(qs) : '';
};
helpers.addLinkTags = function (params) {
params.res.locals.linkTags = params.res.locals.linkTags || [];
params.res.locals.linkTags.push({
rel: 'canonical',
href: nconf.get('url') + '/' + params.url,
});
params.tags.forEach(function (rel) {
rel.href = nconf.get('url') + '/' + params.url + rel.href;
params.res.locals.linkTags.push(rel);
});
};
helpers.buildFilters = function (url, filter, query) {
return [{
name: '[[unread:all-topics]]',

@ -78,6 +78,7 @@ recentController.getData = async function (req, url, sort) {
var pageCount = Math.max(1, Math.ceil(data.topicCount / settings.topicsPerPage));
data.pagination = pagination.create(page, pageCount, req.query);
helpers.addLinkTags({ url: url, res: req.res, tags: data.pagination.rel });
if (req.originalUrl.startsWith(nconf.get('relative_path') + '/api/' + url) || req.originalUrl.startsWith(nconf.get('relative_path') + '/' + url)) {
data.title = '[[pages:' + url + ']]';

@ -49,6 +49,8 @@ tagsController.getTag = async function (req, res) {
const pageCount = Math.max(1, Math.ceil(topicCount / settings.topicsPerPage));
templateData.pagination = pagination.create(page, pageCount);
helpers.addLinkTags({ url: 'tags/' + tag, res: req.res, tags: templateData.pagination.rel });
templateData.rssFeedUrl = nconf.get('relative_path') + '/tags/' + tag + '.rss';
res.render('tag', templateData);
};

@ -42,6 +42,7 @@ unreadController.get = async function (req, res, next) {
data.title = meta.config.homePageTitle || '[[pages:home]]';
data.pageCount = Math.max(1, Math.ceil(data.topicCount / userSettings.topicsPerPage));
data.pagination = pagination.create(page, data.pageCount, req.query);
helpers.addLinkTags({ url: 'unread', res: req.res, tags: data.pagination.rel });
if (userSettings.usePagination && (page < 1 || page > data.pageCount)) {
req.query.page = Math.max(1, Math.min(data.pageCount, page));

@ -69,14 +69,14 @@ pagination.create = function (currentPage, pageCount, queryObj) {
if (currentPage < pageCount) {
data.rel.push({
rel: 'next',
href: '?page=' + next,
href: '?' + qs.stringify({ ...queryObj, page: next }),
});
}
if (currentPage > 1) {
data.rel.push({
rel: 'prev',
href: '?page=' + previous,
href: '?' + qs.stringify({ ...queryObj, page: previous }),
});
}
return data;

Loading…
Cancel
Save