Policy & Legal Pages
Policy text is written by the seller in dashboard Configure (store settings). The theme only renders it — never hardcode legal copy in theme files.Route map (do not mix runtimes)
Footer and nav links must use the runtime paths (
shopUrl / React Router). Vite /privacy is not the same as Nunjucks /privacy-policy.
Vite
Reference:templates/markt-vite-storefront — LegalPolicyPage + ProductRichText.
policyKey: privacyPolicy | termsOfService | refundPolicy.
Register routes in App.tsx:
Nunjucks
Template filename = routertemplateName → templates/{name}.njk.
Wrong (will not resolve):
privacy.njk, refunds.njk, or linking to /privacy / /refunds on a Nunjucks store.
Footer example:
autoescape is false, do not put policy HTML into attributes. For meta tags, strip/encode — see Nunjucks Pitfalls.
Empty and loading states
- Missing policy → short empty message (same idea as Vite
emptyMessage) - Do not invent placeholder legal text