Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Check pagination size before adding pagination numbers #28

Merged
merged 1 commit into from
Mar 20, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 14 additions & 4 deletions src/Tags/MetaRobots.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
const BaseTag = require("./BaseTag");

class MetaRobots extends BaseTag {
render(pageNumber) {
render(pageNumber, size) {
let robots = "index,follow";

if (pageNumber > 0) {
if (pageNumber > 0 && size > 1) {
robots = `no${robots}`;
}

Expand All @@ -19,14 +19,24 @@ class MetaRobots extends BaseTag {
0
);

return Promise.resolve(this.render(pageNumber));
// Get page size from pagination.
const size = this.keyPathVal(
scope.contexts[0],
"pagination.size",
0
);

return Promise.resolve(this.render(pageNumber, size));
}

nunjucksRender(self, context) {
// Get page number from pagination.
const pageNumber = self.keyPathVal(context.ctx, "pagination.pageNumber", 0);

return self.render(pageNumber);
// Get page size from pagination.
const size = self.keyPathVal(context.ctx, "pagination.size", 0);

return self.render(pageNumber, size);
}
}

Expand Down
18 changes: 14 additions & 4 deletions src/Tags/PageTitle.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
const BaseTag = require("./BaseTag");

class PageTitle extends BaseTag {
render(title, pageNumber) {
render(title, pageNumber, size) {
// Get options.
const style = this.keyPathVal(this, "options.titleStyle", "default");
const divider = this.keyPathVal(this, "options.titleDivider", "-");
Expand All @@ -10,7 +10,7 @@ class PageTitle extends BaseTag {
let pageTitle = title || this.siteTitle;

// Add pagination
if (pageNumber > 0) {
if (pageNumber > 0 && size > 1) {
pageTitle = pageTitle + ` ${divider} Page ` + (pageNumber + 1);
}

Expand Down Expand Up @@ -40,7 +40,14 @@ class PageTitle extends BaseTag {
0
);

return Promise.resolve(this.render(title, pageNumber));
// Get page size from pagination.
const size = this.keyPathVal(
scope.contexts[0],
"pagination.size",
0
);

return Promise.resolve(this.render(title, pageNumber, size));
}

nunjucksRender(self, context) {
Expand All @@ -54,7 +61,10 @@ class PageTitle extends BaseTag {
// Get page number from pagination.
const pageNumber = self.keyPathVal(context.ctx, "pagination.pageNumber", 0);

return self.render(title, pageNumber);
// Get page size from pagination.
const size = self.keyPathVal(context.ctx, "pagination.size", 0);

return self.render(title, pageNumber, size);
}
}

Expand Down
13 changes: 10 additions & 3 deletions test/Tags/MetaRobotsTest.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,18 @@ test("Ordinary pages gets index and follow", t => {

test("Paginated pages gets noindex and follow", t => {
const metaRobots = new MetaRobots();
const robots = metaRobots.render(1);
const robots = metaRobots.render(1, 2);

t.is(robots, "noindex,follow");
});

test("Paginated pages with size 1 gets index and follow", t => {
const metaRobots = new MetaRobots();
const robots = metaRobots.render(1, 1);

t.is(robots, "index,follow");
});

test("Missing pagination gets index and follow", t => {
const metaRobots = new MetaRobots();
const robots = metaRobots.render();
Expand All @@ -27,7 +34,7 @@ test("Liquid engine should provide pagination for robots", t => {
let scope = {
contexts: [
{
pagination: { pageNumber: 1 }
pagination: { pageNumber: 1, size: 2 }
}
]
};
Expand All @@ -43,7 +50,7 @@ test("Nunjucks engine should provide pagination for robots", t => {
// Mock nunjucks engine context
let context = {
ctx: {
pagination: { pageNumber: 1 }
pagination: { pageNumber: 1, size: 2 }
}
};

Expand Down
9 changes: 8 additions & 1 deletion test/Tags/PageTitleTest.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ test("Title should be escaped", t => {

test("Page and pagenumber should be added on paginated pages", t => {
const pageTitle = new PageTitle(t.context.config);
let title = pageTitle.render("A title", 1);
let title = pageTitle.render("A title", 1, 2);

t.is(title, "A title - Page 2 - Site title");
});
Expand All @@ -42,6 +42,13 @@ test("Page and pagenumber should not be added on paginated pages with pageNumber
t.is(title, "A title - Site title");
});

test("Page and pagenumber should not be added on paginated pages with size 1", t => {
const pageTitle = new PageTitle(t.context.config);
let title = pageTitle.render("A title", 1, 1);

t.is(title, "A title - Site title");
});

test("Should be able to set custom divider", t => {
const config = new Config({
title: "Site title",
Expand Down