diff --git a/CHANGES.rst b/CHANGES.rst
index 2c2a9d3d..bfe7367d 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -125,6 +125,9 @@ New features:
6.2 (2022-10-28)
----------------
+- Add a starter subtemplate to initialize a Plone site with some sane default values
+ [erral]
+
- Improve namespace support #419
[mamico]
diff --git a/bobtemplates/plone/bobregistry.py b/bobtemplates/plone/bobregistry.py
index c5b56750..b597b67c 100644
--- a/bobtemplates/plone/bobregistry.py
+++ b/bobtemplates/plone/bobregistry.py
@@ -158,3 +158,11 @@ def plone_form():
reg.plonecli_alias = "form"
reg.depend_on = "plone_addon"
return reg
+
+
+def plone_site_initialization():
+ reg = RegEntry()
+ reg.template = "bobtemplates.plone:site_initialization"
+ reg.plonecli_alias = "site_initialization"
+ reg.depend_on = "plone_addon"
+ return reg
diff --git a/bobtemplates/plone/site_initialization.py b/bobtemplates/plone/site_initialization.py
new file mode 100644
index 00000000..26190851
--- /dev/null
+++ b/bobtemplates/plone/site_initialization.py
@@ -0,0 +1,16 @@
+from bobtemplates.plone.base import base_prepare_renderer
+from bobtemplates.plone.base import git_commit
+from bobtemplates.plone.base import git_support
+
+
+def prepare_renderer(configurator):
+ """Prepare rendering."""
+ configurator = base_prepare_renderer(configurator)
+
+ configurator.target_directory = configurator.variables["package_folder"]
+
+
+def post_renderer(configurator):
+ """Post rendering."""
+ if git_support(configurator):
+ git_commit(configurator, "Add Plone site initialization configuration")
diff --git a/bobtemplates/plone/site_initialization/.mrbob.ini b/bobtemplates/plone/site_initialization/.mrbob.ini
new file mode 100644
index 00000000..1c3e8743
--- /dev/null
+++ b/bobtemplates/plone/site_initialization/.mrbob.ini
@@ -0,0 +1,24 @@
+[questions]
+subtemplate_warning.question = Please commit your changes, before using a sub-template! Continue anyway? [N/y]
+subtemplate_warning.required = True
+subtemplate_warning.default = n
+subtemplate_warning.pre_ask_question = bobtemplates.plone.base:git_clean_state_check
+subtemplate_warning.post_ask_question = mrbob.hooks:validate_choices bobtemplates.plone.base:subtemplate_warning_post_question
+subtemplate_warning.choices = y|n
+subtemplate_warning.choices_delimiter = |
+
+language.question = Enter the 2 letter language code for your site
+language.help = Shold be something like 'en'
+language.required = True
+language.default = 'en'
+
+site_name.question = Enter the name of your site
+site_name.help = Should be something like 'My new site'
+site_name.required = True
+site_name.default = New Plone Site
+
+
+[template]
+post_ask = bobtemplates.plone.base:set_global_vars
+pre_render = bobtemplates.plone.site_initialization:prepare_renderer
+post_render = bobtemplates.plone.site_initialization:post_renderer
diff --git a/bobtemplates/plone/site_initialization/profiles/default/registry/plone.base.interfaces.controlpanel.IMailSchema.xml.bob b/bobtemplates/plone/site_initialization/profiles/default/registry/plone.base.interfaces.controlpanel.IMailSchema.xml.bob
new file mode 100644
index 00000000..5c7468a6
--- /dev/null
+++ b/bobtemplates/plone/site_initialization/profiles/default/registry/plone.base.interfaces.controlpanel.IMailSchema.xml.bob
@@ -0,0 +1,6 @@
+
+
+
+ {{{ site_name }}}
+
+
diff --git a/bobtemplates/plone/site_initialization/profiles/default/registry/plone.base.interfaces.controlpanel.ISiteSchema.xml.bob b/bobtemplates/plone/site_initialization/profiles/default/registry/plone.base.interfaces.controlpanel.ISiteSchema.xml.bob
new file mode 100644
index 00000000..cf6a16c4
--- /dev/null
+++ b/bobtemplates/plone/site_initialization/profiles/default/registry/plone.base.interfaces.controlpanel.ISiteSchema.xml.bob
@@ -0,0 +1,6 @@
+
+
+
+ {{{ site_name }}}
+
+
diff --git a/bobtemplates/plone/site_initialization/profiles/default/registry/plone.i18n.interfaces.ILanguageSchema.xml.bob b/bobtemplates/plone/site_initialization/profiles/default/registry/plone.i18n.interfaces.ILanguageSchema.xml.bob
new file mode 100644
index 00000000..4fa418b4
--- /dev/null
+++ b/bobtemplates/plone/site_initialization/profiles/default/registry/plone.i18n.interfaces.ILanguageSchema.xml.bob
@@ -0,0 +1,9 @@
+
+
+
+
+ {{{ language }}}
+
+ {{{ language }}}
+
+
diff --git a/constraints.txt b/constraints.txt
index 4011332b..93f4cbda 100644
--- a/constraints.txt
+++ b/constraints.txt
@@ -3,7 +3,7 @@
# Pin Versions / Version Ranges if necessary.
setuptools==57.0.0
tox==4.11.3
-isort>=5
+isort>=5.12.0
flake8==5.0.4
flake8-html==0.4.2
black==22.8.0
diff --git a/package_tests/test_site_initialization.py b/package_tests/test_site_initialization.py
new file mode 100644
index 00000000..e69de29b
diff --git a/setup.py b/setup.py
index 89a180ac..ba8ecb41 100644
--- a/setup.py
+++ b/setup.py
@@ -90,6 +90,7 @@
"plone_vocabulary = bobtemplates.plone.bobregistry:plone_vocabulary",
"plone_controlpanel = bobtemplates.plone.bobregistry:plone_controlpanel",
"plone_form = bobtemplates.plone.bobregistry:plone_form",
+ "plone_site_initialization = bobtemplates.plone.bobregistry:plone_site_initialization",
]
},
)