fix: Site Layout builder setting saved but never read by page rendering
bootstrap.layout.type (the 'Site Layout' selector in the theme editor) was only ever consulted by a validator checking it against the known list - nothing used it to actually pick a layout. SectionEngineService already resolves a per-page layout.type with a hardcoded 'default' fallback; that fallback now reads the site-wide setting first. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -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'] {
|
||||
|
||||
Reference in New Issue
Block a user