mirror of
https://github.com/docmost/docmost.git
synced 2026-09-11 07:56:54 +08:00
fix: meta title for shared subpages (#2478)
This commit is contained in:
@@ -60,16 +60,21 @@ export class ShareSeoController {
|
||||
|
||||
const pageId = this.extractPageSlugId(pageSlug);
|
||||
|
||||
const share = await this.shareService.getShareForPage(
|
||||
pageId,
|
||||
let title: string;
|
||||
let searchIndexing = false;
|
||||
try {
|
||||
const shared = await this.shareService.getSharedPage(
|
||||
{ pageId },
|
||||
workspace.id,
|
||||
{ includeContent: false },
|
||||
);
|
||||
|
||||
if (!share) {
|
||||
title = shared.page.title;
|
||||
searchIndexing = shared.share.searchIndexing;
|
||||
} catch (err) {
|
||||
return this.sendIndex(indexFilePath, res);
|
||||
}
|
||||
|
||||
const rawTitle = htmlEscape(share?.sharedPage.title ?? 'untitled');
|
||||
const rawTitle = htmlEscape(title ?? 'untitled');
|
||||
const metaTitle =
|
||||
rawTitle.length > 80 ? `${rawTitle.slice(0, 77)}…` : rawTitle;
|
||||
|
||||
@@ -78,7 +83,7 @@ export class ShareSeoController {
|
||||
const metaTags = [
|
||||
`<meta property="og:title" content="${metaTitle}" />`,
|
||||
`<meta property="twitter:title" content="${metaTitle}" />`,
|
||||
!share.searchIndexing ? `<meta name="robots" content="noindex" />` : '',
|
||||
!searchIndexing ? `<meta name="robots" content="noindex" />` : '',
|
||||
]
|
||||
.filter(Boolean)
|
||||
.join('\n ');
|
||||
|
||||
@@ -110,7 +110,11 @@ export class ShareService {
|
||||
}
|
||||
}
|
||||
|
||||
async getSharedPage(dto: ShareInfoDto, workspaceId: string) {
|
||||
async getSharedPage(
|
||||
dto: ShareInfoDto,
|
||||
workspaceId: string,
|
||||
opts?: { includeContent?: boolean },
|
||||
) {
|
||||
//TODO: we should resolve the page from the share id
|
||||
if (!dto.pageId) throw new NotFoundException('Shared page not found');
|
||||
|
||||
@@ -120,10 +124,13 @@ export class ShareService {
|
||||
throw new NotFoundException('Shared page not found');
|
||||
}
|
||||
|
||||
const page = await this.pageRepo.findById(dto.pageId, {
|
||||
const includeContent = opts?.includeContent !== false;
|
||||
const page = includeContent
|
||||
? await this.pageRepo.findById(dto.pageId, {
|
||||
includeContent: true,
|
||||
includeCreator: true,
|
||||
});
|
||||
})
|
||||
: await this.pageRepo.findById(dto.pageId);
|
||||
|
||||
if (!page || page.deletedAt) {
|
||||
throw new NotFoundException('Shared page not found');
|
||||
@@ -137,7 +144,9 @@ export class ShareService {
|
||||
throw new NotFoundException('Shared page not found');
|
||||
}
|
||||
|
||||
if (includeContent) {
|
||||
page.content = await this.updatePublicAttachments(page);
|
||||
}
|
||||
|
||||
return { page, share };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user