diff --git a/frappe/templates/includes/web_block.html b/frappe/templates/includes/web_block.html index 8f3ffc1ce6..17940ca221 100644 --- a/frappe/templates/includes/web_block.html +++ b/frappe/templates/includes/web_block.html @@ -7,15 +7,19 @@ web_block.css_class ]) -%} +{%- if web_template.type == 'Section' -%} {%- if not web_block.hide_block -%}
{%- if web_block.add_container -%}
{%- endif -%} - {{ web_block.render() }} + {{ web_template.render(web_block.web_template_values) }} {%- if web_block.add_container -%}
{%- endif -%}
{%- endif -%} +{%- else -%} +{{ web_template.render(web_block.web_template_values) }} +{%- endif -%} diff --git a/frappe/utils/jinja.py b/frappe/utils/jinja.py index f5623b35c1..6eb9d98971 100644 --- a/frappe/utils/jinja.py +++ b/frappe/utils/jinja.py @@ -200,7 +200,7 @@ def web_block(template, values, **kwargs): def web_blocks(blocks): - from frappe import get_doc, throw + from frappe import throw, _dict from frappe.website.doctype.web_page.web_page import get_web_blocks_html web_blocks = [] @@ -208,7 +208,7 @@ def web_blocks(blocks): if not block.get('template'): throw('Web Template is not specified') - doc = { + doc = _dict({ 'doctype': 'Web Page Block', 'web_template': block['template'], 'web_template_values': block.get('values', {}), @@ -217,9 +217,9 @@ def web_blocks(blocks): 'add_container': 1, 'hide_block': 0, 'css_class': '' - } + }) doc.update(block) - web_blocks.append(get_doc(doc)) + web_blocks.append(doc) out = get_web_blocks_html(web_blocks) diff --git a/frappe/website/doctype/web_page/web_page.py b/frappe/website/doctype/web_page/web_page.py index 0f5ffc65cb..f3e3a5960c 100644 --- a/frappe/website/doctype/web_page/web_page.py +++ b/frappe/website/doctype/web_page/web_page.py @@ -208,8 +208,9 @@ def get_web_blocks_html(blocks): extracted_scripts = [] extracted_styles = [] for block in blocks: + web_template = frappe.get_cached_doc('Web Template', block.web_template) rendered_html = frappe.render_template('templates/includes/web_block.html', - context={'web_block': block}) + context={'web_block': block, 'web_template': web_template}) html, scripts, styles = extract_script_and_style_tags(rendered_html) out.html += html if block.web_template not in extracted_scripts: diff --git a/frappe/website/doctype/web_template/web_template.py b/frappe/website/doctype/web_template/web_template.py index ed228ac7e4..e9db87a679 100644 --- a/frappe/website/doctype/web_template/web_template.py +++ b/frappe/website/doctype/web_template/web_template.py @@ -36,6 +36,8 @@ class WebTemplate(Document): open(path, "w").close() def render(self, values): + values = values or '{}' + values = frappe.parse_json(values) return get_rendered_template(self.name, values)