fix(cms): storefront renders sections for landing pages + fix nav URLs

Two critical fixes for POC site rendering:

1. Storefront content page route now selects template based on
   page.template field: 'full' → landing-full.html (section-based),
   'modern'/'minimal' → their respective templates. Default stays
   content-page.html (plain HTML). Previously always used content-page
   which ignores page.sections JSON.

2. Storefront base_url uses store.subdomain (lowercase, hyphens)
   instead of store.store_code (uppercase, underscores) for URL
   building. Nav links now point to correct paths that the store
   context middleware can resolve.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-03 18:42:45 +02:00
parent 83af32eb88
commit d591200df8
2 changed files with 13 additions and 3 deletions

View File

@@ -109,8 +109,16 @@ async def generic_content_page(
context = get_storefront_context(request, db=db, page=page)
context["page_content"] = page_content
# Select template based on page.template field
template_map = {
"full": "cms/storefront/landing-full.html",
"modern": "cms/storefront/landing-modern.html",
"minimal": "cms/storefront/landing-minimal.html",
}
template_name = template_map.get(page.template, "cms/storefront/content-page.html")
return templates.TemplateResponse(
"cms/storefront/content-page.html",
template_name,
context,
)

View File

@@ -384,15 +384,17 @@ def get_storefront_context(
if access_method == "path" and store:
platform = getattr(request.state, "platform", None)
platform_original_path = getattr(request.state, "platform_original_path", None)
# Use subdomain (lowercase, hyphens) for URL routing — store_code is for internal use
store_slug = store.subdomain or store.store_code
if platform and platform_original_path and platform_original_path.startswith("/platforms/"):
base_url = f"/platforms/{platform.code}/storefront/{store.store_code}/"
base_url = f"/platforms/{platform.code}/storefront/{store_slug}/"
else:
full_prefix = (
store_context.get("full_prefix", "/storefront/")
if store_context
else "/storefront/"
)
base_url = f"{full_prefix}{store.store_code}/"
base_url = f"{full_prefix}{store_slug}/"
# Read subscription info set by StorefrontAccessMiddleware
subscription = getattr(request.state, "subscription", None)