diff --git a/sites/org/prebuild.mjs b/sites/org/prebuild.mjs
index 1c494f73dd0..a6b2c966ff2 100644
--- a/sites/org/prebuild.mjs
+++ b/sites/org/prebuild.mjs
@@ -85,7 +85,7 @@ prebuildRunner({
* Only prebuild the Open Graph (og) images in production
* Will be skipped in development mode to save time
*/
- ogImages: 'productionOnly',
+ ogImages: false, // We do not currently prebuild these
/*
* Only prebuild the patron info in production
diff --git a/sites/shared/components/wrappers/page.mjs b/sites/shared/components/wrappers/page.mjs
index 962b3801a23..ded01be4bf2 100644
--- a/sites/shared/components/wrappers/page.mjs
+++ b/sites/shared/components/wrappers/page.mjs
@@ -1,7 +1,8 @@
// __SDEFILE__ - This file is a dependency for the stand-alone environment
// Dependencies
import React, { useState, useEffect, useContext } from 'react'
-import { nsMerge } from 'shared/utils.mjs'
+import { ogUrl, nsMerge } from 'shared/utils.mjs'
+import { siteConfig } from 'site/site.config.mjs'
// Context
import { LoadingStatusContext } from 'shared/context/loading-status-context.mjs'
// Hooks
@@ -21,7 +22,14 @@ export const PageWrapper = (props) => {
/*
* Deconstruct props
*/
- const { layout = DefaultLayout, footer = true, header = true, children = [], path = [] } = props
+ const {
+ layout = DefaultLayout,
+ footer = true,
+ header = true,
+ locale = 'en',
+ children = [],
+ path = [],
+ } = props
// Title is typically set in props.t but check props.title too
const pageTitle = props.t ? props.t : props.title ? props.title : null
@@ -60,6 +68,25 @@ export const PageWrapper = (props) => {
{props.intro && (
)}
+
+
+
+
+
+
+
+
+
+
+
{pageTitle}
)}
`${language}_${slug.split('/').join('_')}.png`
-
export const generateImage = async ({ title, intro, site, slug, language }) => {
let result
try {
@@ -14,7 +13,7 @@ export const generateImage = async ({ title, intro, site, slug, language }) => {
{ title, intro, site, type: 'wide' },
{ responseType: 'arraybuffer' }
)
- const file = path.resolve('..', site, 'public', 'img', 'og', slugToImg(slug, language))
+ const file = path.resolve('..', site, 'public', 'img', 'og', slugToOgImg(slug, language))
await fs.promises.writeFile(file, result.data)
} catch (err) {
console.log(err)
diff --git a/sites/shared/utils.mjs b/sites/shared/utils.mjs
index fe69a6ab30c..949f87de74b 100644
--- a/sites/shared/utils.mjs
+++ b/sites/shared/utils.mjs
@@ -7,6 +7,7 @@ import orderBy from 'lodash.orderby'
import unset from 'lodash.unset'
import { cloudflareConfig } from './config/cloudflare.mjs'
import { mergeOptions } from '@freesewing/core'
+import { freeSewingConfig as config } from './config/freesewing.config.mjs'
const slugifyConfig = {
replacement: '-', // replace spaces with replacement character, defaults to `-`
@@ -491,3 +492,8 @@ export const workbenchHash = ({ settings = {}, view = 'draft' }) =>
export const getSearchParam = (name = 'id') =>
typeof window === 'undefined' ? undefined : new URLSearchParams(window.location.search).get(name)
+
+export const slugToOgImg = (slug, language) => `${language}_${slug.split('/').join('_')}.png`
+
+export const ogUrl = ({ site = false, title, intro }) =>
+ `${config.backend}/img/${encodeURIComponent(JSON.stringify({ site, title, intro }))}`