Skip to content

Commit 15693a5

Browse files
authored
Merge pull request #11250 from quarto-dev/feature/10864
Support `og:image:alt` from `fig-alt`
2 parents c68aeb6 + b9bb760 commit 15693a5

File tree

9 files changed

+63
-7
lines changed

9 files changed

+63
-7
lines changed

news/changelog-1.6.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ All changes included in 1.6:
9292
- ([#10311](https://github.com/quarto-dev/quarto-cli/issues/10311)): Loosen auto-discovery of images for OpenGraph cards.
9393
- ([#10567](https://github.com/quarto-dev/quarto-cli/issues/10567)): Generate breadcrumbs correctly for documents using a level-1 heading as the title.
9494
- ([#10616](https://github.com/quarto-dev/quarto-cli/issues/10268)): Add a `z-index` setting to the 'back to top' button to ensure it is always visible.
95+
- ([#10864](https://github.com/quarto-dev/quarto-cli/issues/10864)): Support detection of `og:image:alt` attribute from auto-discovered images.
9596

9697
### Quarto Blog
9798

src/project/types/website/listing/website-listing-feed.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ export async function createFeed(
163163

164164
// Add any image metadata
165165
const image = options.image || format.metadata[kImage] as string ||
166-
websiteImage(project.config);
166+
websiteImage(project.config)?.src;
167167
if (image) {
168168
feed.image = {
169169
title: feedTitle,

src/project/types/website/util/discover-meta.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,16 @@ export function findDescription(doc: Document): string | undefined {
4141

4242
export function findPreviewImg(
4343
doc: Document,
44-
): string | undefined {
44+
): { src: string; alt?: string } | undefined {
4545
const imgEl = findPreviewImgEl(doc);
4646
if (imgEl) {
4747
const src = getDecodedAttribute(imgEl, "src");
48+
const alt = getDecodedAttribute(imgEl, "alt");
4849
if (src !== null) {
49-
return src;
50+
return {
51+
src,
52+
alt: alt ?? undefined,
53+
};
5054
} else {
5155
return undefined;
5256
}

src/project/types/website/website-config.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ import { join } from "../../../deno_ral/path.ts";
5050
type WebsiteConfigKey =
5151
| "title"
5252
| "image"
53+
| "image-alt"
5354
| "description"
5455
| "favicon"
5556
| "site-url"
@@ -173,8 +174,16 @@ export function websiteBaseurl(project?: ProjectConfig): string | undefined {
173174
return websiteConfigString(kSiteUrl, project);
174175
}
175176

176-
export function websiteImage(project?: ProjectConfig): string | undefined {
177-
return websiteConfigString(kImage, project);
177+
export function websiteImage(
178+
project?: ProjectConfig,
179+
): { src: string; alt?: string } | undefined {
180+
const src = websiteConfigString(kImage, project);
181+
if (src) {
182+
const alt = websiteConfigString("image-alt", project);
183+
return { src, alt };
184+
} else {
185+
return undefined;
186+
}
178187
}
179188

180189
export function websiteDescription(

src/project/types/website/website-meta.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -180,8 +180,9 @@ export function metadataHtmlPostProcessor(
180180

181181
// find a preview image if one is not provided
182182
if (metadata[kImage] === undefined && format.metadata[kImage] !== false) {
183-
metadata[kImage] = findPreviewImg(doc) ||
184-
websiteImage(project.config);
183+
const previewImg = findPreviewImg(doc) || websiteImage(project.config);
184+
metadata[kImage] = previewImg ? previewImg.src : undefined;
185+
metadata[kImageAlt] = previewImg ? previewImg.alt : undefined;
185186
}
186187

187188
// cook up a description if one is not provided
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
project:
2+
type: website
3+
4+
website:
5+
title: "issue-10864"
6+
open-graph: true
7+
navbar:
8+
left:
9+
- href: index.qmd
10+
text: Home
11+
- about.qmd
12+
13+
format:
14+
html:
15+
theme: cosmo
16+
css: styles.css
17+
toc: true
18+
19+
20+
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
---
2+
title: "About"
3+
_quarto:
4+
tests:
5+
html:
6+
ensureFileRegexMatches:
7+
- ['<meta property="og:image:alt" content="Quarto logo">']
8+
- []
9+
---
10+
11+
About this site
12+
13+
![](https://quarto.org/quarto.png){fig-alt="Quarto logo" .preview-image}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
title: "issue-10864"
3+
---
4+
5+
This is a Quarto website.
6+
7+
To learn more about Quarto websites visit <https://quarto.org/docs/websites>.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/* css styles */

0 commit comments

Comments
 (0)