Opravit nezobrazování obrázků na webu
Payload skládá URL uploadů absolutně podle serverURL. next/image to vyhodnotí jako externí zdroj a bez images.remotePatterns odmítne s HTTP 400 "url parameter is not allowed" — samotný soubor se přitom servíruje správně, takže se to projevilo až s nahraným obrázkem. Do next/image proto posíláme jen cestu (helper cestaKSouboru). Soubor leží na stejném originu jako web, takže je to korektní, a navíc na tom nezávisí doména: remotePatterns se zapékají při buildu, ale tentýž image běží na stagingu i v produkci pod jiným jménem. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,22 @@
|
||||
import type { Product } from '@/payload-types'
|
||||
|
||||
/**
|
||||
* Payload skládá URL obrázků absolutně podle `serverURL`
|
||||
* (`https://…/api/media/file/x.png`). `next/image` by to bral jako cizí zdroj
|
||||
* a bez `remotePatterns` ho odmítne s „url parameter is not allowed".
|
||||
*
|
||||
* Doménu proto zahazujeme — soubor leží na stejném originu jako web. Navíc
|
||||
* je tím stejný image použitelný na stagingu i v produkci, kde se domény liší;
|
||||
* `remotePatterns` se zapékají při buildu, takže by to jinak nešlo.
|
||||
*/
|
||||
export function cestaKSouboru(url: string): string {
|
||||
try {
|
||||
return new URL(url).pathname
|
||||
} catch {
|
||||
return url // už je relativní
|
||||
}
|
||||
}
|
||||
|
||||
/** `28900` → `28 900 Kč` (pevná mezera, ať se cena nezalomí). */
|
||||
export function formatujCenu(cena: number): string {
|
||||
return `${cena.toLocaleString('cs-CZ').replace(/\s/g, ' ')} Kč`
|
||||
|
||||
Reference in New Issue
Block a user