From 740d992fb4685e3723a0c44f4f86e638341c5dc0 Mon Sep 17 00:00:00 2001 From: Billyyyyy3320 Date: Sat, 28 Sep 2019 21:32:59 +0800 Subject: [PATCH 1/2] feat: prepare for configuring getPaginationPageTitle --- src/node/handleOptions.ts | 2 +- src/node/index.ts | 4 ++-- src/node/interface/Pagination.ts | 6 +++--- src/node/pagination.ts | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/node/handleOptions.ts b/src/node/handleOptions.ts index e0a4e80..3589044 100644 --- a/src/node/handleOptions.ts +++ b/src/node/handleOptions.ts @@ -108,7 +108,7 @@ export function handleOptions( */ paginations.push({ classifierType: ClassifierTypeEnum.Directory, - getPaginationPageTitle(index) { + getPaginationPageTitle(index, id) { return `Page ${index + 1} | ${id}` }, ...resolvePaginationConfig( diff --git a/src/node/index.ts b/src/node/index.ts index 4c4ac0e..ae87d1e 100644 --- a/src/node/index.ts +++ b/src/node/index.ts @@ -106,8 +106,8 @@ module.exports = (options: BlogPluginOptions, ctx: VuePressContext) => { paginations.push({ classifierType: ClassifierTypeEnum.Frontmatter, - getPaginationPageTitle(index) { - return `Page ${index + 1} - ${key} | ${scope}` + getPaginationPageTitle(index, id, scope) { + return `Page ${index + 1} - ${id} | ${scope}` }, ...resolvePaginationConfig( ClassifierTypeEnum.Frontmatter, diff --git a/src/node/interface/Pagination.ts b/src/node/interface/Pagination.ts index 1577d66..a5963f1 100644 --- a/src/node/interface/Pagination.ts +++ b/src/node/interface/Pagination.ts @@ -16,7 +16,7 @@ export type PageSorter = ( ) => boolean | number export type GetPaginationPageUrl = (index: number) => string -export type getPaginationPageTitle = (index: number) => string +export type GetPaginationPageTitle = (index: number, id: string, scope: string) => string /** * Pagination config options for users. @@ -45,7 +45,7 @@ export interface PaginationConfig { /** * A function to get the title of pagination page dynamically. */ - getPaginationPageTitle?: getPaginationPageTitle; + getPaginationPageTitle?: GetPaginationPageTitle; } export interface PaginationIdentity { @@ -64,7 +64,7 @@ export interface PaginationIdentity { */ export interface InternalPagination extends PaginationConfig, - PaginationIdentity { + PaginationIdentity { /** * Record which classfier create this pagination. */ diff --git a/src/node/pagination.ts b/src/node/pagination.ts index ae5d74b..13b2e45 100644 --- a/src/node/pagination.ts +++ b/src/node/pagination.ts @@ -3,7 +3,7 @@ import { InternalPagination, PageFilter, GetPaginationPageUrl, - getPaginationPageTitle, + GetPaginationPageTitle, SerializedPagination, } from './interface/Pagination' import { logPages } from './util' @@ -82,7 +82,7 @@ export async function registerPaginations( permalink: path, frontmatter: { layout, - title: (getPaginationPageTitle as getPaginationPageTitle)(index), + title: (getPaginationPageTitle as GetPaginationPageTitle)(index, id, pid), }, meta: { pid, From edde1385d54084ede46964e72727390f9fef582e Mon Sep 17 00:00:00 2001 From: Billyyyyy3320 Date: Sat, 28 Sep 2019 22:19:32 +0800 Subject: [PATCH 2/2] docs: add getPaginationPageTitle --- docs/pagination/README.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/docs/pagination/README.md b/docs/pagination/README.md index 1cffd37..e87ae96 100644 --- a/docs/pagination/README.md +++ b/docs/pagination/README.md @@ -59,5 +59,28 @@ function getPaginationPageUrl(index) { - For [frontmatter classifier](../README.md#frontmatter-classifier), the `indexPath` defaults to `/${classifier.pid}/${classifier.id}` (e.g. `/tag/js/`) +## getPaginationPageTitle + +- Type: function +- Default: `See Below` + +A function to get the title of pagination page dynamically: + +```js +// directories +function getPaginationPageTitle (index, id) { + return `Page ${index + 1} | ${id}` +} + +// frontmatters +function getPaginationPageTitle (index, id, scope) { + return `Page ${index + 1} - ${id} | ${scope}` +} +``` + +There are three args to help you customize your title: +- `index` is the index of pages. +- `id` is the id in the [config](../config/#id). +- `scope` is the [key](../config/#keys) while configuring frontmatters or same as `id` while configuring directories.