diff --git a/src/app/dynamic-renderer/section-engine/section-engine.service.ts b/src/app/dynamic-renderer/section-engine/section-engine.service.ts index 889c163..6fddddf 100644 --- a/src/app/dynamic-renderer/section-engine/section-engine.service.ts +++ b/src/app/dynamic-renderer/section-engine/section-engine.service.ts @@ -1,12 +1,15 @@ -import { Injectable } from '@angular/core'; +import { Injectable, inject } from '@angular/core'; import { PageConfig } from '../../shared/models/config'; import { PageRenderModel } from '../page-renderer/page-renderer.model'; import { SectionRendererService } from '../section-renderer/section-renderer.service'; import { PlatformLayoutConfig, PlatformLayoutType } from '../../shared/models/config'; import { SectionConfig } from '../../shared/models/config'; +import { ConfigService } from '../../core/config/config.service'; @Injectable({ providedIn: 'root' }) export class SectionEngineService { + private readonly configService = inject(ConfigService); + constructor(private readonly sectionRenderer: SectionRendererService) {} toPageRenderModel(page: PageConfig): PageRenderModel { @@ -27,12 +30,23 @@ export class SectionEngineService { }; } + /** + * Falls back to the site-wide builder setting (bootstrap.layout.type, + * "Site Layout" in the theme editor) when a page has no layout of its + * own - previously that global setting was saved but never read by + * rendering at all, so it had no visible effect. + */ private resolveLayoutType(layout: PageConfig['layout']): string { if (typeof layout === 'string') { return layout; } - return (layout as PlatformLayoutConfig)?.type ?? 'default'; + const pageLayoutType = (layout as PlatformLayoutConfig)?.type; + if (pageLayoutType) { + return pageLayoutType; + } + + return this.configService.getBootstrapSnapshot()?.layout?.type ?? 'default'; } private normalizeSectionsByLayout(sections: PageConfig['sections'], layoutType: string): PageConfig['sections'] {