diff --git a/frappe/website/doctype/web_form/templates/web_form.html b/frappe/website/doctype/web_form/templates/web_form.html index a11cbc964b3f..f02acd5b07b4 100644 --- a/frappe/website/doctype/web_form/templates/web_form.html +++ b/frappe/website/doctype/web_form/templates/web_form.html @@ -1,5 +1,9 @@ {% extends "templates/web.html" %} +{% block meta_block %} + {% include "templates/includes/meta_block.html" %} +{% endblock %} + {% block breadcrumbs %}{% endblock %} {% block header %} diff --git a/frappe/website/doctype/web_form/test_records.json b/frappe/website/doctype/web_form/test_records.json index 62dea7446af2..7139ce25d78a 100644 --- a/frappe/website/doctype/web_form/test_records.json +++ b/frappe/website/doctype/web_form/test_records.json @@ -14,6 +14,9 @@ "published": 1, "success_url": "/manage-events", "title": "Manage Events", + "meta_title": "Test Meta Form Title", + "meta_description": "Test Meta Form Description", + "meta_image": "https://frappe.io/files/frappe.png", "web_form_fields": [ { "doctype": "Web Form Field", diff --git a/frappe/website/doctype/web_form/test_web_form.py b/frappe/website/doctype/web_form/test_web_form.py index 5a2269b64de8..bfc5e5c50b2f 100644 --- a/frappe/website/doctype/web_form/test_web_form.py +++ b/frappe/website/doctype/web_form/test_web_form.py @@ -75,3 +75,11 @@ def test_webform_render(self): self.assertIn('data-doctype="Web Form"', content) self.assertIn('data-path="manage-events/new"', content) self.assertIn('source-type="Generator"', content) + + def test_webform_html_meta_is_added(self): + set_request(method="GET", path="manage-events/new") + content = get_response_content("manage-events/new") + + self.assertIn('', content) + self.assertIn('', content) + self.assertIn('', content) diff --git a/frappe/website/doctype/web_form/web_form.json b/frappe/website/doctype/web_form/web_form.json index f5ab147c6429..0c2e416696c4 100644 --- a/frappe/website/doctype/web_form/web_form.json +++ b/frappe/website/doctype/web_form/web_form.json @@ -48,6 +48,11 @@ "success_url", "column_break_4", "success_message", + "meta_section", + "meta_title", + "meta_description", + "column_break_khxs", + "meta_image", "section_break_6", "client_script", "custom_css" @@ -328,13 +333,38 @@ "fieldname": "section_break_6", "fieldtype": "Section Break", "label": "Scripting / Style" + }, + { + "collapsible": 1, + "fieldname": "meta_section", + "fieldtype": "Section Break", + "label": "Meta" + }, + { + "fieldname": "meta_title", + "fieldtype": "Data", + "label": "Meta Title" + }, + { + "fieldname": "meta_description", + "fieldtype": "Small Text", + "label": "Meta Description" + }, + { + "fieldname": "column_break_khxs", + "fieldtype": "Column Break" + }, + { + "fieldname": "meta_image", + "fieldtype": "Attach Image", + "label": "Meta Image" } ], "has_web_view": 1, "icon": "icon-edit", "is_published_field": "published", "links": [], - "modified": "2022-08-17 18:58:49.451658", + "modified": "2022-12-15 17:14:44.939645", "modified_by": "Administrator", "module": "Website", "name": "Web Form", diff --git a/frappe/website/doctype/web_form/web_form.py b/frappe/website/doctype/web_form/web_form.py index 73b2dc233174..5aaf9e43b5f0 100644 --- a/frappe/website/doctype/web_form/web_form.py +++ b/frappe/website/doctype/web_form/web_form.py @@ -191,10 +191,23 @@ def get_context(self, context): self.add_custom_context_and_script(context) self.load_translations(context) + self.add_metatags(context) context.boot = get_boot_data() context.boot["link_title_doctypes"] = frappe.boot.get_link_title_doctypes() + def add_metatags(self, context): + description = self.meta_description + + if not description and self.introduction_text: + description = self.introduction_text[:140] + + context.metatags = { + "name": self.meta_title or self.title, + "description": description, + "image": self.meta_image + } + def load_translations(self, context): translated_messages = frappe.translate.get_dict("doctype", self.doc_type) # Sr is not added by default, had to be added manually