diff --git a/pagetop/src/core/theme/definition.rs b/pagetop/src/core/theme/definition.rs index a1fc70e6..7f64258b 100644 --- a/pagetop/src/core/theme/definition.rs +++ b/pagetop/src/core/theme/definition.rs @@ -63,12 +63,18 @@ pub trait ThemeTrait: BaseTheme + Send + Sync { body class=[page.body_classes().get()] { @match page.template() { "admin" => { - (page.render_region("top-menu")) - (page.render_region("side-menu")) - (page.render_region("region-content")) + @for region in &["top-menu", "side-menu", "region-content"] { + @if let Some(content) = page.render_region(region) { + #(region) { (content) } + } + } }, _ => { - (page.render_region("region-content")) + @for region in &["region-content"] { + @if let Some(content) = page.render_region(region) { + #(region) { (content) } + } + } } } } diff --git a/pagetop/src/response/page/definition.rs b/pagetop/src/response/page/definition.rs index 8f91b394..291ec6b9 100644 --- a/pagetop/src/response/page/definition.rs +++ b/pagetop/src/response/page/definition.rs @@ -217,14 +217,10 @@ impl Page { }) } - pub fn render_region(&mut self, region: &str) -> Markup { + pub fn render_region(&mut self, region: &str) -> Option { match self.regions.get_mut(region) { - Some(components) => html! { - #(region) { - (components.render(&mut self.context)) - } - }, - None => html! {}, + Some(components) => Some(components.render(&mut self.context)), + None => None, } } }