Setting up multi-website with multiple (sub)domains in Odoo

In this tutorial I will learn you how to setup multiple website in Odoo and linking them to multiple (sub)domains. This allows you to setup multiple websites – and webshops – from one shared Odoo database and having those websites run on multiple (sub)domains.
In this tutorial I will setup two websites that link to two subdomains. Let’s assume that you want to have two separate websites where one is an informaton center and one is a shop.
We’ll host the information center on information.yourwebsite.com and the shop on shop.yourinformation.com.

1. Creating multiple websites

The first step in adding an extra website (after the initial one) is by going to Website > Configuration > Settings and clicking on the button “Create a new website”. After clicking on this button you will get a pop-up:

Website configuration pop-up when opened

The website name is just informative and will be shown throughout Odoo so give it a good name, such as “Information portal” in our case. The second field, “Website Domain” will tell Odoo to which (sub)domain all pages related to this website should link. Enter the website URL here without www or https:// in front of it and no slashes, so like this:

Website configuration pop-up after configuration

When this is done click on “Pick a theme”, choose one, save and your second website is set up.
The next step is that you most likely want to configure extra options for your website such as the languages, social media accounts and so on. You can do this from Website > Configuration > Settings again. Keep a close eye out though! The options configured here are website specific! Be sure to first select the website you want to configure at the top before configuring your website further:

Website switcher in website configuration

Repeat this step for as many websites as you like. Once you’re done it is time for the next step, setting up the DBS records.

2. Setting up the DNS

Now that you’ve setup your website(s) in Odoo it is time to configure the DNS. By configuring the DNS you will tell Odoo that when the user enters a website URL in the web browser (for example www.information.yourwebsite.com) to which server it should connect to get the data from.
Luckily this step is pretty forward. Login to the portal where your DNS is managed – usually your hosting provider – and add an A-record to your DNS list which connects the URL to the IP of the server. Your configuration will look something like this:

Sample DNS A-record

3. Configuring NGINX

Alright, so now we’ve told Odoo that we want a website and where it points too and we told our DNS which URL should go to which server (IP). The final step is to tell Nginx (or whichever alternative you use) which domain should link to where. You should already have an Nginx configuration file with a server block. The easiest is to make a duplicate of this block in the existing configuration file. Make sure that this duplicated code block it’s “server_name” points to the domain you’ve setup in the frontend of Odoo (so “information.yourwebsite.com”). Typically it would look something like this:


That’s it! Just don’t forget to reload and restart your Nginx to apply these changes (sudo service nginx reload and service nginx restart). If you do this configuration you can setup multiple websites with a separate design (theme) running on separate (sub)domains!

4. Conclusion

Thanks to the default built-in features from Odoo setting up multiple websites, webshops or portals is pretty easy! By just creating a second website, adding a DNS records and an Nginx server block you can have a new website running in a matter of minutes!
Has this tutorial helped you, do you have any feedback or questions? Post away!

New building block result

Creating building blocks in Odoo

In this tutorial I will learn you how to create new building blocks and how to add the blocks to the menu so that you can quickly drag and drop the blocks in the webpage.
In this tutorial I will create a new building block named “References with title” which will show four icons and a title above it:
New building block result

1. Adding the dependency

Before you can start creating a new building block you will need to create a new module and configure the manifest.py correctly. Open up your manifest.py and add the website as a dependency:

Without this dependency you cannot create and add new building blocks to the Odoo website.

2. Creating a new XML file

Now create a new XML file named “snippets.xml” under the “views” folder:
snippets.xml structure
In this file we will add all the code to create the building block (snippet) and to make it visible in the editor.

2.1 Creating the building blocks

First we will need to create the building block itself. Let us create a building block that has a title (h3) saying “Our references” with four logo’s under the title. Have a look at this code:

So, what does this tell us? We first create a new XML record. After doing this we add all our code within a section block and inside this we create a container div. Within this section and container you can basically code anything you like, this is the framework for any building block. Generally when you create a building block you try to use as much bootstrap classes as possible. In the above example I simply made two rows. One row for the title and one row for the images. Those images are all the same width thanks to the default bootstrap classes col-md, col-sm and col-xs-6.
You’re already well over halfway to your own building block! If you would install this module right now all the code would be there that is needed for a building block, but we still have to show it in the editor so that we can use it.

2.2 Adding the building block to the editor

Let us continue and add a building block preview to the editor so you can quickly find it from the editor.
You can do this by inheriting the default “website.snippets” record and doing an xpath in the “snippet_structure” id, which holds the main structure of the editor. Have a look at this code:

Let me explain the code a bit further. We first inherit the default ‘website.snippets’ record, which holds the link to all available snippets. By doing an xpath on ‘snippet_structure’ we’re telling Odoo to add our building block preview within the editor. In this xpath element we add a div and we use the t-snippet element made by Odoo. By doing so Odoo knows we want to add a snippet preview to the editor.
Finally save this file and add it in the manifest.py file so that it is loaded:

When you now install the module you will see your new building block is available for use from the editor:
Building block editor example
That is all. You’ve just made your own building block, congratulations!

3. Conclusion

Thanks to the Odoo framework it is very easy to create and use new building blocks. The functionality is so flexible and easy to use that you can create a building block for about anything. Creating and reusing building blocks in Odoo is one of the biggest strengths of the Odoo website editor.

Do you want to try the demo code and see the source code of this tutorial? You can view it on my Github account.
Has this tutorial helped you, do you have any feedback or questions? Post away!
Tutorial sponsored by Oocademy


PayPal