In Info Veritas's picture

Hello all,

I anted to know if it was possible to have layout templates, theme and configurations into a recipe module ?

The idea is to share all this in one shot.


Best regards.



Hello In Info Veritas. These answers may be incomplete, or there may be ways of doing this I'm not aware of, but this is what I've done:


These are the easiest to handle with recipes:

  • For new configurations (let's say configs that your custom recipe module creates, such as custom configs, or content types, field information, new views, new layouts, etc), simply put them in modules/MY_MODULE/config. They will be installed when the module is enabled. This is what the recipe concept is mostly about!
  • To change existing configurations (such as the site name), you need to do a bit of work by implementing hook_install() and change those configurations there, as in config_set('system.core', 'site_name', 'Awesome site'). And to change complex existing configs such as views of layouts, you may need to do more work, such as the following, which actually modifies the admin_default layout by reading a "local" version first (stored under a folder named config WITHIN my custom "scheduling" module, and moving its content entirely to the one stored in files/config_XXX/active
  // Move the modified admin_default layout to the files folder.
  $config = config('layout.layout.admin_default');
  $path = backdrop_get_path('module', 'scheduling');
  $path = './' . $path . '/config';
  $storage = new ConfigFileStorage($path);
  $new_layout = new Config('layout.layout.admin_default', $storage);
  $new_data = $new_layout->getData();


 Themes and layout templates

There may be ways to create those by the module manually moving directories and files from a specific folder within its folder, into the folders  themes and layouts in the root of your installation. This would be done also in hook_install(). Personally, I think it's better to create a github repo of your installation that already includes the needed custom themes and layout templates (be careful not to publicly store private information contained in settings.php!), and then cloning that from github when you install a new version of the site. 


I hope this helps.

In Info Veritas's picture

Thank you for you so fast answer.

That was I was thinking.


Thank you again.