Compare commits
1 Commits
18.0
...
14.0-websi
Author | SHA1 | Date | |
---|---|---|---|
![]() |
dc74dd679b |
@ -10,6 +10,5 @@ eCommerce
|
|||||||
ecommerce/managing_products
|
ecommerce/managing_products
|
||||||
ecommerce/taxes
|
ecommerce/taxes
|
||||||
ecommerce/shopper_experience
|
ecommerce/shopper_experience
|
||||||
ecommerce/publish
|
|
||||||
ecommerce/maximizing_revenue
|
ecommerce/maximizing_revenue
|
||||||
|
|
||||||
|
@ -1,13 +0,0 @@
|
|||||||
===================
|
|
||||||
Launch my website
|
|
||||||
===================
|
|
||||||
|
|
||||||
.. toctree::
|
|
||||||
:titlesonly:
|
|
||||||
|
|
||||||
../website/publish/domain_name
|
|
||||||
../website/publish/on-premise_geo-ip-installation
|
|
||||||
../website/publish/translate
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -2,13 +2,826 @@
|
|||||||
Optimize
|
Optimize
|
||||||
========
|
========
|
||||||
|
|
||||||
.. toctree::
|
Now that you've built your website, it's time to optimize it with Odoo. Odoo provides numerous
|
||||||
:titlesonly:
|
tools to enhance your site's SEO, loading speed, image optimization, and so much more.
|
||||||
|
|
||||||
optimize/seo
|
Search Engine Optimization (SEO)
|
||||||
optimize/google_analytics
|
================================
|
||||||
optimize/google_analytics_dashboard
|
|
||||||
optimize/link_tracker
|
|
||||||
|
|
||||||
|
Search Engine Optimization, otherwise known as SEO, is a set of strategic practices that can
|
||||||
|
optimize your website and enhance its ranking in search engines (like, Google). Proper SEO practices
|
||||||
|
are important because a great SEO ranking helps your website gain more visitors.
|
||||||
|
|
||||||
|
Some quality SEO practices include: having fast load times, making sure each page has one (and only
|
||||||
|
one) title ``<h1>``, your meta tags (alt-tag, title-tag) should be consistent with the content
|
||||||
|
they represent, and your website should have a ``/sitemap.xml`` file. But these are just a few of
|
||||||
|
the *many* SEO strategies you can employ to earn a better SEO ranking for your website.
|
||||||
|
|
||||||
|
To guarantee that your Odoo Website (and Odoo eCommerce) has a great SEO ranking, Odoo eliminates
|
||||||
|
all the technical complexities of SEO, and handles these intricate search engine strategies *for
|
||||||
|
you* - in the easiest way possible.
|
||||||
|
|
||||||
|
First, let's see how to boost your ranking by fine-tuning your content (and meta tags) for your
|
||||||
|
website.
|
||||||
|
|
||||||
|
Meta Tags
|
||||||
|
---------
|
||||||
|
|
||||||
|
Title, description
|
||||||
|
******************
|
||||||
|
|
||||||
|
Every page on your website should define the ``<title>`` and ``<description>`` meta data.
|
||||||
|
|
||||||
|
These elements are used by search engines to promote your website. They are automatically generated
|
||||||
|
based on the page title and content, but you can fine-tune them whenever you'd like, by clicking
|
||||||
|
*Optimize SEO* under the *Promote* menu.
|
||||||
|
|
||||||
|
.. image:: optimize/seo/seo-optimize.png
|
||||||
|
:align: center
|
||||||
|
:alt: optimize seo under the promote menu
|
||||||
|
|
||||||
|
When you click *Optimize SEO* a pop-up appears, in which you enter in the pertinent SEO-related
|
||||||
|
information about the page and its content.
|
||||||
|
|
||||||
|
Remember, you need to be accurate with this information. If they don't fit the content of the page,
|
||||||
|
search engines will downgrade your website, which negatively affects your SEO ranking.
|
||||||
|
|
||||||
|
.. image:: optimize/seo/optimize-seo-pop-up.png
|
||||||
|
:align: center
|
||||||
|
:alt: optimize seo pop-up
|
||||||
|
|
||||||
|
Keywords
|
||||||
|
********
|
||||||
|
|
||||||
|
To get the most out of your content *and* boost traffic, Odoo provides users with a ``<keyword>``
|
||||||
|
finder. These keywords are the search terms that you want to lead towards your website.
|
||||||
|
|
||||||
|
When you enter a keyword into the *Keywords* field, and hit *Add*, you see how it is used in the
|
||||||
|
content (H1, H2, page title, page description, page content). You also see what the related
|
||||||
|
keywords are in Google. If you want to add any of those related keywords to your list, simply
|
||||||
|
click on it, and Odoo will add it for you.
|
||||||
|
|
||||||
|
The more keywords used, the better.
|
||||||
|
|
||||||
|
.. image:: optimize/seo/keyword-finder.png
|
||||||
|
:align: center
|
||||||
|
:alt: odoo keyword finder seo optimization
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
If your website is in multiple languages, you can use the *Promote* tool for every language of a
|
||||||
|
single page, set a specific title, description, and search tags, as well.
|
||||||
|
|
||||||
|
Content is king
|
||||||
|
---------------
|
||||||
|
|
||||||
|
When it comes to SEO, content is king. That's why Odoo provides several modules to help users build
|
||||||
|
incredible content for their websites.
|
||||||
|
|
||||||
|
Odoo offers the following:
|
||||||
|
|
||||||
|
- **Odoo Blogs**: write great content about anything you want.
|
||||||
|
|
||||||
|
- **Odoo eLearning Course**: publish all sorts of content as part of an educational online course.
|
||||||
|
The content is automatically indexed on the web page.
|
||||||
|
|
||||||
|
- **Odoo Forum**: let your community create content for you, by allowing them to share their
|
||||||
|
thoughts, feelings, and opinions with each other. Example: `odoo.com/forum/1 <https://odoo
|
||||||
|
.com/forum/1>`_
|
||||||
|
|
||||||
|
...and many more!
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
The 404 page is a regular page that you can edit like any other in Odoo. That way, you can build
|
||||||
|
build a great 404 page to redirect to the top content of your website when visitors get lost with
|
||||||
|
invalid URLs.
|
||||||
|
|
||||||
|
Social networks
|
||||||
|
---------------
|
||||||
|
|
||||||
|
Social media is built for mass-sharing. If lots of people share your content on social media, it's
|
||||||
|
likely that even more people will link to it, and links are a *huge* factor for SEO rankings.
|
||||||
|
|
||||||
|
That's why Odoo embeds several tools to help share content through various social media channels.
|
||||||
|
|
||||||
|
Social network links
|
||||||
|
********************
|
||||||
|
|
||||||
|
Odoo allows users to link all their social media accounts in the footer of their website. All
|
||||||
|
you have to do is input all the necessary accounts in your company settings, and Odoo will take
|
||||||
|
care of the rest.
|
||||||
|
|
||||||
|
.. image:: optimize/seo/seo03.png
|
||||||
|
:align: center
|
||||||
|
:alt: connect with us social media links
|
||||||
|
|
||||||
|
Social share
|
||||||
|
************
|
||||||
|
|
||||||
|
It's important to allow your visitors to share any content they like on your website on their
|
||||||
|
various social media platforms. The best way to do that, is to drop the *Share* building block on
|
||||||
|
any page you want your visitors to share with their followers.
|
||||||
|
|
||||||
|
When visitors click that icon, they are then prompted to share that page on their social media feed.
|
||||||
|
|
||||||
|
.. image:: optimize/seo/share-block.png
|
||||||
|
:align: center
|
||||||
|
:alt: share building block on website
|
||||||
|
|
||||||
|
Remember, most social media platforms use a picture of the image as part of the share post.
|
||||||
|
|
||||||
|
Odoo uses the website logo by default, but you can choose any other image of your page by going
|
||||||
|
to :menuselection:`Promote --> Optimize SEO` and select an image for social sharing purposes.
|
||||||
|
|
||||||
|
.. image:: optimize/seo/seo05.png
|
||||||
|
:align: center
|
||||||
|
:alt: picture used for social media shares
|
||||||
|
|
||||||
|
Facebook page
|
||||||
|
*************
|
||||||
|
|
||||||
|
Looking for a unique way to catch the eye of your visitor *and* promote your *Facebook* page
|
||||||
|
(or business)? Simply drop the *Facebook* building block onto your page, while in the *Edit* mode
|
||||||
|
on the front-end of your website.
|
||||||
|
|
||||||
|
Doing so, will display a customizable widget showcasing your *Facebook* business page, and it will
|
||||||
|
encourage visitors to follow it.
|
||||||
|
|
||||||
|
.. image:: optimize/seo/seo-facebook-block.png
|
||||||
|
:align: center
|
||||||
|
:alt: facebook building block in odoo's website builder
|
||||||
|
|
||||||
|
You can choose display the timeline, next events, messages, and more.
|
||||||
|
|
||||||
|
.. image:: optimize/seo/seo-facebook-features.png
|
||||||
|
:align: center
|
||||||
|
:alt: facebook features used in facebook building block
|
||||||
|
|
||||||
|
Twitter Scroller
|
||||||
|
****************
|
||||||
|
|
||||||
|
Displaying Twitter feeds with testimonials from happy customers expressing their satisfaction on
|
||||||
|
your website is a great way to increase (and enhance) your company's online presence.
|
||||||
|
|
||||||
|
.. image:: optimize/seo/seo-twitter-scroller.png
|
||||||
|
:align: center
|
||||||
|
:alt: twitter scroller building block icon
|
||||||
|
|
||||||
|
Test website
|
||||||
|
------------
|
||||||
|
|
||||||
|
You can compare how your website ranks (in terms of SEO) against Odoo using free services, like
|
||||||
|
WooRank : `woorank.com <https://www.woorank.com>`_
|
||||||
|
|
||||||
|
Handling URLs
|
||||||
|
-------------
|
||||||
|
|
||||||
|
The following section explains how Odoo makes URLs SEO-friendly.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
The following URLs are *not active*. They are purely meant to be used as an example to show
|
||||||
|
how Odoo makes URL management easier than ever before.
|
||||||
|
|
||||||
|
URL structure
|
||||||
|
*************
|
||||||
|
|
||||||
|
A typical Odoo URL will look like this:
|
||||||
|
|
||||||
|
- https://www.mysite.com/fr\_FR/shop/product/my-great-product-31
|
||||||
|
|
||||||
|
URLs are composed of the following components:
|
||||||
|
|
||||||
|
- **https://** = Protocol
|
||||||
|
|
||||||
|
- **www.mysite.com** = Domain name
|
||||||
|
|
||||||
|
- **/fr\_FR** = This is the language that the page is currently in. This part of the URL is removed
|
||||||
|
if the visitor browses the main language of the website. In that case, the main version of this
|
||||||
|
page would look like this:
|
||||||
|
https://www.mysite.com/shop/product/my-great-product-31
|
||||||
|
|
||||||
|
- **/shop/product** = every module defines its own namespace. Thus, */shop* is for the catalog of
|
||||||
|
the eCommerce module, and */shop/product* is for a product page.
|
||||||
|
|
||||||
|
- **my-great-product** = by default, this is the slugified title of the product this page refers
|
||||||
|
to, but you can customize it for SEO purposes. For instance, if a product is named "Office Lamp"
|
||||||
|
it gets slugified to "office-lamp". Depending on the namespace, this could be different objects
|
||||||
|
(blog post, page title, forum post, forum comment, product category, etc.).
|
||||||
|
|
||||||
|
- **-31** = the unique ID of the product
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Any dynamic component of a URL can be reduced to its ID. As an example, the following
|
||||||
|
URLs all do a 301 redirect to the above URL:
|
||||||
|
|
||||||
|
- https://www.mysite.com/fr\_FR/shop/product/31 (short version)
|
||||||
|
|
||||||
|
- http://mysite.com/fr\_FR/shop/product/31 (even shorter version)
|
||||||
|
|
||||||
|
- http://mysite.com/fr\_FR/shop/product/other-product-name-31 (old product name)
|
||||||
|
|
||||||
|
Some URLs have several dynamic parts, like this one (a blog category *and* a post):
|
||||||
|
|
||||||
|
- https://www.odoo.com/blog/company-news-5/post/the-odoo-story-56
|
||||||
|
|
||||||
|
In the above example:
|
||||||
|
|
||||||
|
- *Company News* is the title of the blog
|
||||||
|
|
||||||
|
- *The Odoo Story* is the title of the specific blog post
|
||||||
|
|
||||||
|
When an Odoo page has a "pager," the page number is set directly in the URL (does not have a GET
|
||||||
|
argument). This allows every page to be indexed by search engines.
|
||||||
|
|
||||||
|
Example: https://www.odoo.com/blog/page/3
|
||||||
|
|
||||||
|
Changes in URLs and titles
|
||||||
|
**************************
|
||||||
|
|
||||||
|
The URL of a page can change for many reasons. Like, when it becomes a more SEO-friendly version
|
||||||
|
of a product name, for example. When the URL of a page changes, don't worry. Odoo will
|
||||||
|
automatically update all its corresponding links to the new URL.
|
||||||
|
|
||||||
|
Not only that, but if external websites *still* point to the old URL, a 301 redirect is done,
|
||||||
|
which re-routes visitors to the new address of the page.
|
||||||
|
|
||||||
|
As an example, this URL...
|
||||||
|
|
||||||
|
- http://mysite.com/shop/product/old-product-name-31
|
||||||
|
|
||||||
|
...will automatically redirect to:
|
||||||
|
|
||||||
|
- http://mysite.com/shop/product/new-and-better-product-name-31
|
||||||
|
|
||||||
|
In other words, if you change the title of a blog post (or the name of a product), the changes
|
||||||
|
automatically apply everywhere in your website. Also, the old link still functions when used by
|
||||||
|
external websites, via a 301 redirect, maintaining the SEO link power.
|
||||||
|
|
||||||
|
HTTPS
|
||||||
|
*****
|
||||||
|
|
||||||
|
Search engines boost rankings of secure HTTPS/SSL websites. That's why, by default, all Odoo Online
|
||||||
|
databases are fully based on HTTPS. If the visitor accesses your website through a non-HTTPS URL,
|
||||||
|
they get a 301 redirect to its HTTPS equivalent.
|
||||||
|
|
||||||
|
Links: Nofollow strategy
|
||||||
|
************************
|
||||||
|
|
||||||
|
The more a page is linked from external and quality websites, the more it helps your SEO ranking.
|
||||||
|
|
||||||
|
Here are some Odoo strategies to help you manage links:
|
||||||
|
|
||||||
|
- Every link you add to your website is "dofollow", which means this link will contribute to the
|
||||||
|
'SEO Juice' for the linked page.
|
||||||
|
|
||||||
|
- Every link posted by a contributor (forum post, blog comment, etc.) that links to your own website
|
||||||
|
is "dofollow," as well.
|
||||||
|
|
||||||
|
- Every link posted by a contributor that links to an external website is "nofollow." That way, you
|
||||||
|
don't run the risk of people posting links on your website to third-party websites, which may have
|
||||||
|
a bad reputation.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
When using the forum, contributors who have a lot of Karma *can be* trusted. In such case, their
|
||||||
|
links will not have any ``rel="nofollow"`` attribute.
|
||||||
|
|
||||||
|
Multi-Language URLs
|
||||||
|
*******************
|
||||||
|
|
||||||
|
If you run a website in multiple languages, the same content will be available in different URLs,
|
||||||
|
depending on the language used:
|
||||||
|
|
||||||
|
- https://www.mywebsite.com/shop/product/my-product-1 (The main language here is English)
|
||||||
|
|
||||||
|
- https://www.mywebsite.com\/fr\_FR/shop/product/mon-produit-1 (This is the French version)
|
||||||
|
|
||||||
|
In this example, fr\_FR is the language of the page. You can even have several variations of the
|
||||||
|
same language, like pt\_BR (Portuguese from Brazil), pt\_PT (Portuguese from Portugal), and so on.
|
||||||
|
|
||||||
|
Language annotation
|
||||||
|
*******************
|
||||||
|
|
||||||
|
To let search engines know the second URL is the French translation of the first URL, Odoo adds an
|
||||||
|
HTML link element in the header.
|
||||||
|
|
||||||
|
In the HTML <head> section of the main version, Odoo automatically adds a link element pointing
|
||||||
|
to the translated versions of that webpage:
|
||||||
|
|
||||||
|
- <link rel="alternate" hreflang="fr"
|
||||||
|
href="https://www.mywebsite.com\/fr\_FR/shop/product/mon-produit-1"/>
|
||||||
|
|
||||||
|
With this approach search engines redirect to the right language, according to the visitor language.
|
||||||
|
|
||||||
|
Don't worry, though. You don't get penalized by search engines if your page isn't translated yet.
|
||||||
|
Also, when it is, it's not considered "duplicated content." It's merely a different version of the
|
||||||
|
same content.
|
||||||
|
|
||||||
|
Language detection
|
||||||
|
******************
|
||||||
|
|
||||||
|
When a visitor lands on your website for the first time (e.g. yourwebsite.com/shop), they may be
|
||||||
|
automatically redirected to a translated version, according to that visitor's browser language
|
||||||
|
preference (e.g. **yourwebsite.com/fr\_FR/shop**).
|
||||||
|
|
||||||
|
A cookie of the current language will be kept, so when they visit your website again in the
|
||||||
|
future, they can avoid any redirection.
|
||||||
|
|
||||||
|
To force a visitor to stick to the default language of your website, you can use the code of the
|
||||||
|
default language in any link you share.
|
||||||
|
|
||||||
|
For example: **yourwebsite.com/en\_US/shop**
|
||||||
|
|
||||||
|
That above link will always direct visitors to the English version of the page, without using the
|
||||||
|
browser language preferences.
|
||||||
|
|
||||||
|
Page speed
|
||||||
|
----------
|
||||||
|
|
||||||
|
The time it takes to load a page on your website is an important criteria for search engines. A
|
||||||
|
faster website not only improves your visitor's experience, it gives you a better page ranking,
|
||||||
|
as well.
|
||||||
|
|
||||||
|
Studies have shown that, if you divide the time it takes to load your pages in half (e.g. 2 seconds,
|
||||||
|
instead of 4 seconds), the visitor abandonment rate is also divided by two (25% to 12.5%). One extra
|
||||||
|
second to load a page could `cost $1.6b to Amazon in sales <http://www.fastcompany
|
||||||
|
.com/1825005/how-one-second-could-cost-amazon-16-billion-sales>`__.
|
||||||
|
|
||||||
|
.. image:: optimize/seo/seo06.png
|
||||||
|
:align: center
|
||||||
|
:alt: page load time graph
|
||||||
|
|
||||||
|
Fortunately, Odoo does all the page speed magic for you!
|
||||||
|
|
||||||
|
Below, you will discover the tricks Odoo uses to speed up your loading time. You can compare how
|
||||||
|
your website ranks using these two tools:
|
||||||
|
|
||||||
|
- `Google Page Speed <https://developers.google.com/speed/pagespeed/insights/>`__
|
||||||
|
|
||||||
|
- `Pingdom Website Speed Test <http://tools.pingdom.com/fpt/>`__
|
||||||
|
|
||||||
|
Images
|
||||||
|
------
|
||||||
|
|
||||||
|
When you upload new images, Odoo automatically compresses them to reduce their size, with lossless
|
||||||
|
compression for .PNG and .GIF and lossy compression for .JPG.
|
||||||
|
|
||||||
|
Once uploaded, you can manually adjust the look and quality of the image, via the helpful toolbar
|
||||||
|
located on the right, while in *Edit* mode.
|
||||||
|
|
||||||
|
The key is to make the image look great, with the smallest file size possible, *without* sacrificing
|
||||||
|
quality.
|
||||||
|
|
||||||
|
.. image:: optimize/seo/seo-image-features.png
|
||||||
|
:align: center
|
||||||
|
:alt: image features toolbar website builder
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Odoo compresses images when they are uploaded to your website, *not* when requested by the
|
||||||
|
visitor. Thus, it's possible that, *if* you use a third-party theme, it will provide images that
|
||||||
|
are not compressed efficiently. But all images used in Odoo official themes have been compressed
|
||||||
|
by default.
|
||||||
|
|
||||||
|
When the image is selected, Odoo allows you to add the Alt and title attributes of the ``<img>``
|
||||||
|
tag by clicking *Description:* in that same toolbar.
|
||||||
|
|
||||||
|
When you click on *Description*, the following window appears:
|
||||||
|
|
||||||
|
.. image:: optimize/seo/seo09.png
|
||||||
|
:align: center
|
||||||
|
:alt: alt title pop up window images
|
||||||
|
|
||||||
|
Pictograms
|
||||||
|
----------
|
||||||
|
|
||||||
|
Odoo's pictograms are implemented using a font (`Font Awesome <https://fortawesome.github
|
||||||
|
.io/Font-Awesome/icons/>`__ in most Odoo themes). You can use as many pictograms as you want, as
|
||||||
|
they don't result in extra requests to load the page.
|
||||||
|
|
||||||
|
.. image:: optimize/seo/seo10.png
|
||||||
|
:align: center
|
||||||
|
:alt: sample array of pictograms
|
||||||
|
|
||||||
|
Static resources: CSS
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
All CSS files are pre-processed, concatenated, minified, compressed, and cached (server-side and
|
||||||
|
browser-side).
|
||||||
|
|
||||||
|
The result is:
|
||||||
|
|
||||||
|
- only one CSS file request is needed to load a page
|
||||||
|
|
||||||
|
- this CSS file is shared and cached amongst pages, so when the visitor clicks on another page, the
|
||||||
|
browser doesn't even have to load a single CSS resource
|
||||||
|
|
||||||
|
- this CSS file is optimized to be small
|
||||||
|
|
||||||
|
Pre-processed
|
||||||
|
*************
|
||||||
|
|
||||||
|
The CSS framework used by Odoo is Bootstrap.
|
||||||
|
|
||||||
|
While a theme might use another framework, most of `Odoo themes <https://www.odoo
|
||||||
|
.com/apps/themes>`__ extend and customize Bootstrap directly. Since Odoo supports Less and Sass,
|
||||||
|
you can modify CSS rules, instead of overwriting them through extra CSS lines, which results in a
|
||||||
|
smaller file.
|
||||||
|
|
||||||
|
Concatenated
|
||||||
|
************
|
||||||
|
|
||||||
|
Every module (or library) you might use in Odoo has its own set of CSS, Less, or
|
||||||
|
Sass files (eCommerce, blogs, themes, etc.).
|
||||||
|
|
||||||
|
Having several CSS files is great for the modularity, but not good for the performance. Mainly
|
||||||
|
because most browsers can only perform 6 requests in parallel, resulting in lots of files loaded in
|
||||||
|
series.
|
||||||
|
|
||||||
|
The latency time to transfer a file is usually much longer than the actual data transfer time,
|
||||||
|
especially for small files, like .JS and .CSS. Thus, the time to load CSS resources depends more
|
||||||
|
on the number of requests to be done, rather than the actual file size, itself.
|
||||||
|
|
||||||
|
To address this issue, all CSS / Less / Sass files are concatenated into a single .CSS file to send
|
||||||
|
to the browser.
|
||||||
|
|
||||||
|
That way, a visitor has **only one .CSS file to load** per page, which is extremely efficient.
|
||||||
|
|
||||||
|
As the CSS is shared amongst all pages, when the visitor clicks on another page, the browser does
|
||||||
|
not even have to load a new CSS file!
|
||||||
|
|
||||||
|
================================= =============================================
|
||||||
|
**Both files in the <head>** **What the visitor gets (only one file)**
|
||||||
|
================================= =============================================
|
||||||
|
/\* From bootstrap.css \*/ .text-muted {
|
||||||
|
.text-muted { color: #666;
|
||||||
|
color: #777; background: yellow
|
||||||
|
background: yellow; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/\* From my-theme.css \*/
|
||||||
|
.text-muted {
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
================================= =============================================
|
||||||
|
|
||||||
|
The CSS sent by Odoo includes all CSS / Less / Sass of all pages and modules.
|
||||||
|
|
||||||
|
By doing this, additional page views from the same visitor will *not* have to load CSS files at all.
|
||||||
|
However, some modules might include huge CSS/Javascript resources that you do not want to
|
||||||
|
prefetch at the first page because they are *too* big.
|
||||||
|
|
||||||
|
In this case, Odoo splits this resource into a second bundle that is loaded only when the page using
|
||||||
|
it is requested. An example of this is the backend, which is only loaded when the visitor logs in
|
||||||
|
and accesses the backend (/web).
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
If the CSS file is very big, Odoo will split it into two smaller files to avoid the 4095
|
||||||
|
selectors limit per sheet of Internet Explorer. But most themes fit below this limit.
|
||||||
|
|
||||||
|
Minified
|
||||||
|
********
|
||||||
|
|
||||||
|
After being pre-processed and concatenated, the resulting CSS is minified to reduce its size.
|
||||||
|
|
||||||
|
============================ ==============================
|
||||||
|
**Before minification** **After minification**
|
||||||
|
============================ ==============================
|
||||||
|
/\* some comments \*/ .text-muted {color: #666}
|
||||||
|
.text-muted {
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
============================ ==============================
|
||||||
|
|
||||||
|
The final result is then compressed, before being delivered to the browser.
|
||||||
|
|
||||||
|
Then, a cached version is stored server-side (we don't have to pre-process, concatenate, or minify
|
||||||
|
at every request) and browser-side (the same visitor will load the CSS only once for all pages that
|
||||||
|
they visit).
|
||||||
|
|
||||||
|
Static resources: Javascript
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
Just like with CSS resources, Javascript resources are also concatenated, minified, compressed, and
|
||||||
|
cached (server-side and browser-side).
|
||||||
|
|
||||||
|
Odoo creates three Javascript bundles:
|
||||||
|
|
||||||
|
- One for all the pages of the website (including code for parallax effects, form validation, etc.)
|
||||||
|
|
||||||
|
- One for common Javascript code shared amongst the front-end and back-end (Bootstrap)
|
||||||
|
|
||||||
|
- One for back-end specific Javascript code (Odoo Web Client interface for your employees using
|
||||||
|
Odoo)
|
||||||
|
|
||||||
|
Most visitors only need the first two bundles, resulting in a maximum of two Javascript files to
|
||||||
|
load in order to render one page. As these files are shared across all pages, further clicks by
|
||||||
|
the same visitor will not load any other Javascript resource.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
If you work in "Developer Mode," the CSS and Javascript are neither concatenated, nor minified.
|
||||||
|
Thus, it's much slower. However, it allows you to easily debug with the Chrome debugger, as CSS
|
||||||
|
and Javascript resources are not transformed from their original versions.
|
||||||
|
|
||||||
|
CDN
|
||||||
|
---
|
||||||
|
|
||||||
|
If you activate the CDN feature in Odoo, static resources (Javascript, CSS, images) are loaded from
|
||||||
|
a Content Delivery Network.
|
||||||
|
|
||||||
|
Using a Content Delivery Network has three advantages:
|
||||||
|
|
||||||
|
- Load resources from a nearby server (most networks have servers in main countries around the
|
||||||
|
globe)
|
||||||
|
|
||||||
|
- Cache resources efficiently (no computation resources used on your own server)
|
||||||
|
|
||||||
|
- Split the resource loading on different services, allowing more resources to load in parallel
|
||||||
|
(since the Chrome limit of 6 parallel requests is by domain)
|
||||||
|
|
||||||
|
You can activate and configure your CDN options from the **Website** settings, found under the
|
||||||
|
Configuration menu, but only while in `Developer Mode <https://www.odoo.com/documentation/user/14.0/general/developer_mode/activate
|
||||||
|
.html#:~:text=Go%20to%20Settings%20%E2%80%A3%20Activate,
|
||||||
|
developer%20mode%20option%20becomes%20available.>`_.
|
||||||
|
|
||||||
|
Here is an example of configuration you can use:
|
||||||
|
|
||||||
|
.. image:: optimize/seo/seo11.png
|
||||||
|
:align: center
|
||||||
|
:alt: cdn setting in the website admin app
|
||||||
|
|
||||||
|
HTML pages
|
||||||
|
----------
|
||||||
|
|
||||||
|
HTML pages can be compressed, but this task is usually handled by your web server (NGINX or Apache).
|
||||||
|
|
||||||
|
The Odoo Website Builder has been optimized to guarantee clean and short HTML code. Building blocks
|
||||||
|
have been developed to produce clean HTML code, as well, usually using Bootstrap and the HTML
|
||||||
|
editor.
|
||||||
|
|
||||||
|
For example, if you use the color picker to change the color of a paragraph to the primary color
|
||||||
|
of your website, Odoo will produce the following code:
|
||||||
|
|
||||||
|
``<p class="text-primary">My Text</p>``
|
||||||
|
|
||||||
|
But most other HTML editors (such as, CKEditor) will produce the following code:
|
||||||
|
|
||||||
|
``<p style="color: #AB0201">My Text</p>``
|
||||||
|
|
||||||
|
Responsive design
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
Websites that are not mobile-friendly are negatively impacted in search engine rankings. All Odoo
|
||||||
|
themes rely on Bootstrap to render everything efficiently, according to the device that's being
|
||||||
|
used: desktop, tablet, or mobile.
|
||||||
|
|
||||||
|
.. image:: optimize/seo/seo12.png
|
||||||
|
:align: center
|
||||||
|
:alt: examples of odoo's responsive design
|
||||||
|
|
||||||
|
Since all Odoo modules share the same technology, all pages on your website are automatically
|
||||||
|
mobile-friendly.
|
||||||
|
|
||||||
|
Browser caching
|
||||||
|
---------------
|
||||||
|
|
||||||
|
Javascript, images, and CSS resources have a URL that changes dynamically when their content
|
||||||
|
changes. This allows Odoo to set a very long cache delay (XXX) on these resources: XXX secs, while
|
||||||
|
being updated instantly (if you update the resource).
|
||||||
|
|
||||||
|
Scalability
|
||||||
|
-----------
|
||||||
|
|
||||||
|
In addition to being fast, Odoo is also more scalable than traditional CMS and eCommerce platforms
|
||||||
|
(like Drupal, Wordpress, Magento, Prestashop).
|
||||||
|
|
||||||
|
Here's a quick summarization highlighting the scalability of Odoo Website and eCommerce.
|
||||||
|
|
||||||
|
.. image:: optimize/seo/seo13.png
|
||||||
|
:align: center
|
||||||
|
:alt: slide about odoo's scalability
|
||||||
|
|
||||||
|
Sitemap
|
||||||
|
-------
|
||||||
|
|
||||||
|
The sitemap points out pages to index to search engine robots. Odoo generates a ``/sitemap.xml``
|
||||||
|
file automatically for you. For performance reasons, this file is cached and updated every 12 hours.
|
||||||
|
|
||||||
|
By default, all URLs will be in a single ``/sitemap.xml`` file, but if you have a lot of pages,
|
||||||
|
Odoo automatically creates a Sitemap Index file, respecting the `sitemaps.org protocol
|
||||||
|
<http://www.sitemaps.org/protocol.html>`__ grouping sitemap URLs in 45,000 chunks per file.
|
||||||
|
|
||||||
|
Every sitemap entry has 4 attributes that are computed automatically:
|
||||||
|
|
||||||
|
- ``<loc>`` : the URL of a page
|
||||||
|
|
||||||
|
- ``<lastmod>`` : last modification date of the resource, computed automatically based on a related
|
||||||
|
object. For a page related to a product, this could be the last modification date of the product
|
||||||
|
(or the page).
|
||||||
|
|
||||||
|
- ``<priority>`` : modules may implement their own priority algorithm based on their content.
|
||||||
|
For example, a forum might assign a priority based on the number of votes on a specific post. The
|
||||||
|
priority of a static page is defined by its priority field, which is normalized (16 is the
|
||||||
|
default).
|
||||||
|
|
||||||
|
Structured data markup
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
Structured Data Markup is used to generate Rich Snippets in search engine results. It is a way for
|
||||||
|
website owners to send structured data to search engine robots; helping them understand your content
|
||||||
|
and create well-presented search results.
|
||||||
|
|
||||||
|
Google supports a number of rich snippets for content types, including:
|
||||||
|
Reviews, People, Products, Businesses, Events, and Organizations.
|
||||||
|
|
||||||
|
Odoo implements micro-data as defined in the `schema.org <http://schema.org>`__ specification for
|
||||||
|
events, eCommerce products, forum posts, and contact addresses. This allows your product pages to
|
||||||
|
be displayed in Google using extra information, like the price and rating of a product:
|
||||||
|
|
||||||
|
.. image:: optimize/seo/seo14.png
|
||||||
|
:align: center
|
||||||
|
:alt: sample of google search results
|
||||||
|
|
||||||
|
robots.txt
|
||||||
|
----------
|
||||||
|
|
||||||
|
When indexing your website, search engines first look at the general indexing rules of the
|
||||||
|
``/robots.txt`` file (allowed robots, sitemap path, etc.). Odoo automatically creates this file
|
||||||
|
for you.
|
||||||
|
|
||||||
|
It consists of:
|
||||||
|
|
||||||
|
User-agent: \*
|
||||||
|
Sitemap: https://www.odoo.com/sitemap.xml
|
||||||
|
|
||||||
|
It means all robots are allowed to index your website, and there is no other indexing rule specified
|
||||||
|
in the sitemap to be found at that address.
|
||||||
|
|
||||||
|
You can customize the file *robots* in
|
||||||
|
:doc:`Developer mode <../../general/developer_mode/activate>` from :menuselection:`Settings -->
|
||||||
|
Technical --> User Interface --> Views` (exclude robots, exclude some pages, or redirect to a custom
|
||||||
|
Sitemap).
|
||||||
|
|
||||||
|
Make the Model Data of the view *Non Updatable*, in order to not reset the file after system
|
||||||
|
upgrades.
|
||||||
|
|
||||||
|
Track traffic
|
||||||
|
=============
|
||||||
|
|
||||||
|
Now that you've created a website with engaging content, it's time to see how well it performs with
|
||||||
|
your audience. That's why it's incredibly important to track your website's traffic. With Odoo,
|
||||||
|
users can track this vital information in a number of different ways.
|
||||||
|
|
||||||
|
Track traffic in Google Analytics
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
To follow your website's traffic with Google Analytics you need to `Create a Google Analytics
|
||||||
|
account <https://www.google.com/analytics/>`__ if you don't have one.
|
||||||
|
|
||||||
|
Then, you must complete the creation form and accept the conditions to get the tracking ID.
|
||||||
|
|
||||||
|
.. image:: optimize/tracking_analytics/google_analytics_account.png
|
||||||
|
:align: center
|
||||||
|
:alt: google analytics account
|
||||||
|
|
||||||
|
Following that, copy the tracking ID to insert it in Odoo.
|
||||||
|
|
||||||
|
.. image:: optimize/tracking_analytics/google_analytics_tracking_id.png
|
||||||
|
:align: center
|
||||||
|
:alt: google analytics tracking id
|
||||||
|
|
||||||
|
Now, go to :menuselection:`Configuration --> Settings` in the Website app. Then, you must turn on
|
||||||
|
Google Analytics, and paste the tracking ID here. Don't forget to hit *Save* when you're done.
|
||||||
|
|
||||||
|
.. image:: optimize/tracking_analytics/google-analytics-setting.png
|
||||||
|
:align: center
|
||||||
|
:alt: google analytics setting
|
||||||
|
|
||||||
|
If you need help getting started with Google Analytics, you can refer to `Google Documentation
|
||||||
|
<https://support.google.com/analytics/answer/1008015?hl=en/>`_.
|
||||||
|
|
||||||
|
Track traffic from Odoo Dashboard
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
You can accurately track traffic statistics straight from your Odoo Website Dashboard, thanks to
|
||||||
|
Google Analytics.
|
||||||
|
|
||||||
|
First, you need to create a Google Analytics account. Then, copy and paste your tracking ID
|
||||||
|
in your website settings. Next, go to `Google APIs platform library <https://console.cloud.google
|
||||||
|
.com/apis/library?supportedpurview=project>`__ in order to generate Analytics API credentials.
|
||||||
|
|
||||||
|
Now, log in with your Google account, and create a new project with an appropriate name (e.g. Odoo).
|
||||||
|
You need this project to store your API credentials.
|
||||||
|
|
||||||
|
.. image:: optimize/tracking_analytics/google_analytics_create_project.png
|
||||||
|
:align: center
|
||||||
|
:alt: google analytics create project
|
||||||
|
|
||||||
|
In the API Library, select *Google Analytics API*.
|
||||||
|
|
||||||
|
.. image:: optimize/tracking_analytics/google-analytics-api.png
|
||||||
|
:align: center
|
||||||
|
:alt: google analytics api
|
||||||
|
|
||||||
|
Then, select *Enable* next to "Analytics API."
|
||||||
|
|
||||||
|
.. image:: optimize/tracking_analytics/google_analytics_enable.png
|
||||||
|
:align: center
|
||||||
|
:alt: google analytics enable api
|
||||||
|
|
||||||
|
In order to properly use this API, you need to create credentials to use in Odoo.
|
||||||
|
|
||||||
|
.. image:: optimize/tracking_analytics/google_analytics_create_credentials.png
|
||||||
|
:align: center
|
||||||
|
:alt: google analytics create credentials
|
||||||
|
|
||||||
|
Following that, you must select *Web browser (Javascript)* as the calling source and *User data* as
|
||||||
|
the kind of data.
|
||||||
|
|
||||||
|
.. image:: optimize/tracking_analytics/google_analytics_get_credentials.png
|
||||||
|
:align: center
|
||||||
|
:alt: google analytics api get credentials
|
||||||
|
|
||||||
|
Then, you can create a Client ID.
|
||||||
|
|
||||||
|
To do so, enter the name of the application (e.g. My Odoo Database) and the allowed pages that
|
||||||
|
trigger a redirection.
|
||||||
|
|
||||||
|
The *Authorized JavaScript origin* is your Odoo's database URL. The *Authorized redirect URI* is
|
||||||
|
your Odoo database URL followed by '/google_account/authentication', as showcased below.
|
||||||
|
|
||||||
|
.. image:: optimize/tracking_analytics/google_analytics_authorization.png
|
||||||
|
:align: center
|
||||||
|
:alt: google analytics authorization
|
||||||
|
|
||||||
|
Proceed to the Consent Screen, and enter a product name (e.g. Google Analytics in Odoo). You
|
||||||
|
can check the customizations options at this time, but it's not mandatory.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
The Consent Screen will *only* show up when you enter the Client ID in Odoo for the **first**
|
||||||
|
time.
|
||||||
|
|
||||||
|
Then, you are provided with your Client ID, which you then copy to paste in Odoo.
|
||||||
|
|
||||||
|
.. image:: optimize/tracking_analytics/google_analytics_client_id.png
|
||||||
|
:align: center
|
||||||
|
:alt: google analytics client id
|
||||||
|
|
||||||
|
Go to :menuselection:`Website application --> Configuration --> Settings`, activate *Google
|
||||||
|
Analytics Dashboard* and paste the Client ID in the fields that appear.
|
||||||
|
|
||||||
|
.. image:: optimize/tracking_analytics/google-analytics-dashboard.png
|
||||||
|
:align: center
|
||||||
|
:alt: google analytics dashboard setting
|
||||||
|
|
||||||
|
And finally, authorize Odoo to access your Google API.
|
||||||
|
|
||||||
|
.. image:: optimize/tracking_analytics/google_analytics_login.png
|
||||||
|
:align: center
|
||||||
|
:alt: google analytics login
|
||||||
|
|
||||||
|
Link Trackers
|
||||||
|
-------------
|
||||||
|
|
||||||
|
Link Trackers allow you to easily track all your marketing campaigns (emails, banner ads, blog
|
||||||
|
posts, social media posts, affiliate links, etc.). With Link Trackers, you can quickly identify your
|
||||||
|
your best traffic sources. This valuable data helps you make more informed decisions about the
|
||||||
|
distribution of your marketing budget.
|
||||||
|
|
||||||
|
Setup
|
||||||
|
*****
|
||||||
|
|
||||||
|
On the front-end of your website, go to :menuselection:`Promote --> Link Tracker`.
|
||||||
|
|
||||||
|
Here, you are able to get a specific tracked URL based on the campaign, medium, and source being
|
||||||
|
used.
|
||||||
|
|
||||||
|
.. image:: optimize/tracking_analytics/link_tracker_fields.png
|
||||||
|
:align: center
|
||||||
|
:alt: View of the link tracker fields for Odoo Website
|
||||||
|
|
||||||
|
- **URL**: URL of the page you want to track (e.g. the home page or a product page).
|
||||||
|
- **Campaign**: context of your link (e.g. a special promotion).
|
||||||
|
- **Medium**: channel used to share (deliver) your link (e.g. an email or a Facebook ad).
|
||||||
|
- **Source**: platform where the traffic originates (e.g. Google or Twitter).
|
||||||
|
|
||||||
|
Then, click *Get tracked link* to generate a URL that you can post (or send) by the source you have
|
||||||
|
decided on.
|
||||||
|
|
||||||
|
Follow-up on tracked links
|
||||||
|
**************************
|
||||||
|
|
||||||
|
On that same Link Tracker page, beneath the *Get tracked link* fields, you can look at statistics
|
||||||
|
in the *Your tracked links* section.
|
||||||
|
|
||||||
|
In addition to seeing the *Most Clicked* and *Recently Used* links, you can also see complete
|
||||||
|
statistics by clicking on *Stats* next to a link you want to analyze, including the number of
|
||||||
|
clicks.
|
||||||
|
|
||||||
|
.. image:: optimize/tracking_analytics/links_statistics.png
|
||||||
|
:align: center
|
||||||
|
:alt: View of the tracked list emphasizing the statistics buttons in Odoo Website
|
||||||
|
|
||||||
|
.. tip::
|
||||||
|
#. You can also access the link tracker on *odoo.com/r* via your browser.
|
||||||
|
#. Activate the developer mode (:menuselection:`Settings --> Activate the developer mode`) and
|
||||||
|
get access to the *Link Tracker* module and its back-end functionalities.
|
||||||
|
#. Integrated with Google Analytics, those trackers allow you to see the number of clicks and
|
||||||
|
visitors to keep you on top of your marketing campaigns.
|
||||||
|
@ -1,32 +0,0 @@
|
|||||||
=======================================================
|
|
||||||
How to track your website's traffic in Google Analytics
|
|
||||||
=======================================================
|
|
||||||
|
|
||||||
To follow your website's traffic with Google Analytics:
|
|
||||||
|
|
||||||
- `Create a Google Analytics account <https://www.google.com/analytics/>`__ if
|
|
||||||
you don't have any.
|
|
||||||
|
|
||||||
- Go through the creation form and accept the conditions to get the tracking ID.
|
|
||||||
|
|
||||||
.. image:: media/google_analytics_account.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
- Copy the tracking ID to insert it in Odoo.
|
|
||||||
|
|
||||||
.. image:: media/google_analytics_tracking_id.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
- Go to the *Configuration* menu of your Odoo's Website app.
|
|
||||||
In the settings, turn on Google Analytics and paste the tracking ID.
|
|
||||||
Then save the page.
|
|
||||||
|
|
||||||
.. image:: media/google_analytics_settings.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
To make your first steps in Google Analytics, refer to `Google Documentation
|
|
||||||
<https://support.google.com/analytics/answer/1008015?hl=en/>`_.
|
|
||||||
|
|
||||||
.. seealso::
|
|
||||||
|
|
||||||
* :doc:`google_analytics_dashboard`
|
|
@ -1,70 +0,0 @@
|
|||||||
==========================================================
|
|
||||||
How to track your website traffic from your Odoo Dashboard
|
|
||||||
==========================================================
|
|
||||||
|
|
||||||
You can follow your traffic statistics straight from your Odoo Website
|
|
||||||
Dashboard thanks to Google Analytics.
|
|
||||||
|
|
||||||
- A preliminary step is creating a Google Analytics account and entering the
|
|
||||||
tracking ID in your Website's settings (see :doc:`google_analytics`).
|
|
||||||
|
|
||||||
- Go to `Google APIs platform <https://console.developers.google.com>`__
|
|
||||||
to generate Analytics API credentials. Log in with your Google account.
|
|
||||||
|
|
||||||
- Select Analytics API.
|
|
||||||
|
|
||||||
.. image:: media/google_analytics_api.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
- Create a new project and give it a name (e.g. Odoo).
|
|
||||||
This project is needed to store your API credentials.
|
|
||||||
|
|
||||||
.. image:: media/google_analytics_create_project.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
- Enable the API.
|
|
||||||
|
|
||||||
.. image:: media/google_analytics_enable.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
- Create credentials to use in Odoo.
|
|
||||||
|
|
||||||
.. image:: media/google_analytics_create_credentials.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
- Select *Web browser (Javascript)*
|
|
||||||
as calling source and *User data* as kind of data.
|
|
||||||
|
|
||||||
.. image:: media/google_analytics_get_credentials.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
- Then you can create a Client ID.
|
|
||||||
Enter the name of the application (e.g. Odoo) and the allowed pages on
|
|
||||||
which you will be redirected. The *Authorized JavaScript origin* is your
|
|
||||||
Odoo's instance URL. The *Authorized redirect URI* is your Odoo's instance
|
|
||||||
URL followed by '/google_account/authentication'.
|
|
||||||
|
|
||||||
.. image:: media/google_analytics_authorization.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
|
|
||||||
- Go through the Consent Screen step by entering a product name
|
|
||||||
(e.g. Google Analytics in Odoo). Feel free to check the customizations options
|
|
||||||
but this is not mandatory. The Consent Screen will only show up when you enter
|
|
||||||
the Client ID in Odoo for the first time.
|
|
||||||
|
|
||||||
- Finally you are provided with your Client ID. Copy and paste it in Odoo.
|
|
||||||
|
|
||||||
.. image:: media/google_analytics_client_id.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
- Open your Website Dashboard in Odoo and link your Analytics account to past
|
|
||||||
your Client ID.
|
|
||||||
|
|
||||||
.. image:: media/google_analytics_start.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
- As a last step, authorize Odoo to access Google API.
|
|
||||||
|
|
||||||
.. image:: media/google_analytics_login.png
|
|
||||||
:align: center
|
|
@ -1,56 +0,0 @@
|
|||||||
=============================================
|
|
||||||
Track clicks and visitors using Link Trackers
|
|
||||||
=============================================
|
|
||||||
|
|
||||||
Link Trackers allow you to track your marketing campaigns (emails, banner ads, blog posts, social
|
|
||||||
media posts, affiliate links, etc.). This way, you are able to identify your best traffic sources
|
|
||||||
and make informed decisions about the distribution of your marketing budget.
|
|
||||||
|
|
||||||
Configuration
|
|
||||||
=============
|
|
||||||
|
|
||||||
Go to :menuselection:`Website --> Configuration --> Settings` and activate *Link Trackers*.
|
|
||||||
|
|
||||||
.. image:: media/enable_link_tracker.png
|
|
||||||
:align: center
|
|
||||||
:alt: View of Website settings page emphasizing the link trackers field in Odoo Website
|
|
||||||
|
|
||||||
Set up traceable URLs
|
|
||||||
---------------------
|
|
||||||
|
|
||||||
Go to :menuselection:`Website --> Go to website --> Promote --> Track this page`. Here, you are able
|
|
||||||
to get a specific tracked URL based on the campaign, medium, and source being used.
|
|
||||||
|
|
||||||
.. image:: media/link_tracker_fields.png
|
|
||||||
:align: center
|
|
||||||
:alt: View of the link traker fields for Odoo Website
|
|
||||||
|
|
||||||
- **URL**: url of the page you want to track (e.g. the home page or a product's page).
|
|
||||||
- **Campaign**: context of your link (e.g. a special promotion).
|
|
||||||
- **Medium**: channel used to share (deliver) your link (e.g. an email or a Facebook ad).
|
|
||||||
- **Source**: platform where the traffic originates (e.g. Google or Twitter).
|
|
||||||
|
|
||||||
Now, click on *Get tracked link* to generate a URL that you can post or send by the source you have
|
|
||||||
decided on.
|
|
||||||
|
|
||||||
Follow-up on tracked links
|
|
||||||
==========================
|
|
||||||
|
|
||||||
To look at statistics of your links, go to :menuselection:`Website --> Go to website --> Promote
|
|
||||||
--> Track this page`. Besides being able to see the *Most Clicked* and *Recently Used* links, you
|
|
||||||
can also see complete statistics by clicking on *Stats*, including the number of clicks, and the
|
|
||||||
country of origin for those clicks.
|
|
||||||
|
|
||||||
.. image:: media/links_statistics.png
|
|
||||||
:align: center
|
|
||||||
:alt: View of the tracked list emphasizing the statistics buttons in Odoo Website
|
|
||||||
|
|
||||||
.. tip::
|
|
||||||
|
|
||||||
#. You can also access the link tracker on *odoo.com/r* via your browser.
|
|
||||||
#. Activate the developer mode (:menuselection:`Settings --> Activate the developer mode`) and
|
|
||||||
get access to the *Link Tracker* module and its back-end functionalities.
|
|
||||||
#. Integrated with :doc:`Google Analytics <google_analytics>`, those trackers allow you to see
|
|
||||||
the number of clicks and visitors to keep you on top of your marketing campaigns.
|
|
||||||
#. The integration with the :doc:`CRM </applications/sales/crm/track_leads/prospect_visits>` application allows
|
|
||||||
you to understand where your leads and opportunities are coming from.
|
|
Before Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 145 KiB |
Before Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 9.6 KiB |
Before Width: | Height: | Size: 70 KiB |
Before Width: | Height: | Size: 9.3 KiB |
Before Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 9.2 KiB |
Before Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 18 KiB |
@ -1,644 +0,0 @@
|
|||||||
==================================================
|
|
||||||
How to do Search Engine Optimisation (SEO) in Odoo
|
|
||||||
==================================================
|
|
||||||
|
|
||||||
Search Engine Optimization (SEO) is a set of good practices to optimize
|
|
||||||
your website so that you get a better ranking in search engines like
|
|
||||||
Google. In short, a good SEO allows you to get more visitors.
|
|
||||||
|
|
||||||
Some examples of SEO rules: your web pages should load fast, your page
|
|
||||||
should have one and only one title ``<h1>``, meta tags
|
|
||||||
(alt-tag, title-tag) should be
|
|
||||||
consistent with the content, your website should have a
|
|
||||||
``/sitemap.xml`` file, etc.
|
|
||||||
|
|
||||||
To guarantee Odoo Website and Odoo
|
|
||||||
eCommerce users have a great SEO, Odoo abstracts all the technical
|
|
||||||
complexities of SEO and handles everything for you, in the best possible
|
|
||||||
way. This will be explained here below.
|
|
||||||
|
|
||||||
But first, let see how you can easily boost your ranking
|
|
||||||
by finetuning the content and the meta tags of your website.
|
|
||||||
|
|
||||||
Meta Tags
|
|
||||||
=========
|
|
||||||
|
|
||||||
Title, Description
|
|
||||||
------------------
|
|
||||||
|
|
||||||
Every web page should define the ``<title>`` and ``<description>`` meta data.
|
|
||||||
These information elements are used by search engines to promote your website.
|
|
||||||
They are automatically generated based on page title & content, but you can
|
|
||||||
finetune them. Make sure they fit the content of the page, otherwise you will
|
|
||||||
be downgraded by search engines.
|
|
||||||
|
|
||||||
.. image:: media/seo01.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
Keywords
|
|
||||||
--------
|
|
||||||
In order to write quality content and boost your traffic, Odoo provides
|
|
||||||
a ``<keyword>`` finder. Those keywords are the searches you want to head
|
|
||||||
towards your website. For each keyword, you see how it is used in the content
|
|
||||||
(H1, H2, page title, page description, page content) and what are the related
|
|
||||||
searches in Google. The more keywords are used the better.
|
|
||||||
|
|
||||||
.. image:: media/seo02.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
If your website is in multiple languages, you can use the Promote
|
|
||||||
tool for every language of a single page and set specific title,
|
|
||||||
description and search tags.
|
|
||||||
|
|
||||||
Content is King
|
|
||||||
===============
|
|
||||||
|
|
||||||
When it comes to SEO, content is usually king. Odoo provides several
|
|
||||||
modules to help you build your website content:
|
|
||||||
|
|
||||||
- **Odoo Blogs**: write great contents.
|
|
||||||
|
|
||||||
- **Odoo Slides**: publish all your Powerpoint or PDF presentations.
|
|
||||||
Their content is automatically indexed on the web page. Example:
|
|
||||||
`odoo.com/slides/public-channel-1 <https://www.odoo.com/slides/public-channel-1>`_
|
|
||||||
|
|
||||||
- **Odoo Forum**: let your community create contents for you. Example:
|
|
||||||
`odoo.com/forum/1 <https://odoo.com/forum/1>`_
|
|
||||||
(accounts for 30% of Odoo.com landing pages)
|
|
||||||
|
|
||||||
- **Odoo Mailing List Archive**: publish mailing list archives on your
|
|
||||||
website. Example:
|
|
||||||
`odoo.com/groups/community-59 <https://www.odoo.com/groups/community-59>`_
|
|
||||||
(1000 pages created per month)
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
The 404 page is a regular page, that you can edit like any other
|
|
||||||
page in Odoo. That way, you can build a great 404 page to redirect to
|
|
||||||
the top content of your website when visitors get lost in invalid URLs.
|
|
||||||
|
|
||||||
Use Social Networks
|
|
||||||
===================
|
|
||||||
|
|
||||||
Social media is built for mass sharing. If lots of people share your content
|
|
||||||
on social media, then it's likely more people will link to it,
|
|
||||||
and links are a huge factor for SEO ranking.
|
|
||||||
|
|
||||||
Odoo embeds several tools to share content through social media:
|
|
||||||
|
|
||||||
Social Network
|
|
||||||
--------------
|
|
||||||
|
|
||||||
Odoo allows to link all your social network accounts in your website footer.
|
|
||||||
All you have to do is to refer all your accounts in your company settings.
|
|
||||||
|
|
||||||
.. image:: media/seo03.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
Social Share
|
|
||||||
------------
|
|
||||||
|
|
||||||
Drop the building block *Share* on any page you want your visitors to share.
|
|
||||||
By clicking the icon, they are prompted to share the page in their social media
|
|
||||||
wall.
|
|
||||||
|
|
||||||
.. image:: media/seo04.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
Most social media use a picture of the picture to decorate the share post.
|
|
||||||
Odoo uses the website logo by default but you can choose any other image
|
|
||||||
of your page in the Promote tool.
|
|
||||||
|
|
||||||
.. image:: media/seo05.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
Facebook Page
|
|
||||||
-------------
|
|
||||||
|
|
||||||
Drop the building block *Facebook Page* to display a widget of your Facebook
|
|
||||||
business page and encourage visitors to follow it.
|
|
||||||
You can display the timeline, the next events and the messages.
|
|
||||||
|
|
||||||
Twitter Scroller
|
|
||||||
----------------
|
|
||||||
|
|
||||||
Display the Twitter feeds with customer satifaction on your website.
|
|
||||||
This will increase the number of tweets and shares.
|
|
||||||
|
|
||||||
Test Your Website
|
|
||||||
=================
|
|
||||||
|
|
||||||
You can compare how your website rank, in terms of SEO, against Odoo
|
|
||||||
using WooRank free services:
|
|
||||||
`woorank.com <https://www.woorank.com>`_
|
|
||||||
|
|
||||||
URLs Handling
|
|
||||||
=============
|
|
||||||
|
|
||||||
This section sheds some light on how Odoo makes URLs SEO-friendly.
|
|
||||||
|
|
||||||
URLs Structure
|
|
||||||
--------------
|
|
||||||
|
|
||||||
A typical Odoo URL will look like this:
|
|
||||||
|
|
||||||
- https://www.mysite.com/fr\_FR/shop/product/my-great-product-31
|
|
||||||
|
|
||||||
With the following components:
|
|
||||||
|
|
||||||
- **https://** = Protocol
|
|
||||||
|
|
||||||
- **www.mysite.com** = your domain name
|
|
||||||
|
|
||||||
- **/fr\_FR** = page language. This part of the URL is
|
|
||||||
removed if the visitor browses the main language of the website
|
|
||||||
Thus, the main version of this page is:
|
|
||||||
https://www.mysite.com/shop/product/my-great-product-31
|
|
||||||
|
|
||||||
- **/shop/product** = every module defines its own namespace (/shop is
|
|
||||||
for the catalog of the eCommerce module, /shop/product is for a
|
|
||||||
product page).
|
|
||||||
|
|
||||||
- **my-great-product** = by default, this is the slugified title of the
|
|
||||||
product this page refers to. But you can customize it for SEO
|
|
||||||
purposes. A product named "Pain carré" will be slugified to
|
|
||||||
"pain-carre". Depending on the namespace, this could be different
|
|
||||||
objects (blog post, page title, forum post, forum comment,
|
|
||||||
product category, etc.).
|
|
||||||
|
|
||||||
- **-31** = the unique ID of the product
|
|
||||||
|
|
||||||
Note that any dynamic component of an URL can be reduced to its ID. As
|
|
||||||
an example, the following URLs all do a 301 redirect to the above URL:
|
|
||||||
|
|
||||||
- https://www.mysite.com/fr\_FR/shop/product/31 (short version)
|
|
||||||
|
|
||||||
- http://mysite.com/fr\_FR/shop/product/31 (even shorter version)
|
|
||||||
|
|
||||||
- http://mysite.com/fr\_FR/shop/product/other-product-name-31 (old
|
|
||||||
product name)
|
|
||||||
|
|
||||||
Some URLs have several dynamic parts, like this one (a blog category and
|
|
||||||
a post):
|
|
||||||
|
|
||||||
- https://www.odoo.com/blog/company-news-5/post/the-odoo-story-56
|
|
||||||
|
|
||||||
In the above example:
|
|
||||||
|
|
||||||
- *Company News* is the title of the blog
|
|
||||||
|
|
||||||
- *The Odoo Story* is the title of a specific blog post
|
|
||||||
|
|
||||||
When an Odoo page has a pager, the page number is set directly in the
|
|
||||||
URL (does not have a GET argument). This allows every page to be indexed
|
|
||||||
by search engines. Example:
|
|
||||||
|
|
||||||
- https://www.odoo.com/blog/page/3
|
|
||||||
|
|
||||||
Changes in URLs & Titles
|
|
||||||
------------------------
|
|
||||||
|
|
||||||
When the URL of a page changes (e.g. a more SEO friendly version of your
|
|
||||||
product name), you don't have to worry about updating all links:
|
|
||||||
|
|
||||||
- Odoo will automatically update all its links to the new URL.
|
|
||||||
|
|
||||||
- If external websites still points to the old URL, a 301 redirect will
|
|
||||||
be done to route visitors to the new address of the page.
|
|
||||||
|
|
||||||
As an example, this URL:
|
|
||||||
|
|
||||||
- http://mysite.com/shop/product/old-product-name-31
|
|
||||||
|
|
||||||
Will automatically redirect to:
|
|
||||||
|
|
||||||
- http://mysite.com/shop/product/new-and-better-product-name-31
|
|
||||||
|
|
||||||
In short, just change the title of a blog post or the name of a product,
|
|
||||||
and the changes will apply automatically everywhere in your website. The
|
|
||||||
old link still functions when used by external websites, via a 301 redirect,
|
|
||||||
maintaining the SEO link juice.
|
|
||||||
|
|
||||||
HTTPS
|
|
||||||
-----
|
|
||||||
|
|
||||||
Search engines boost ranking of secure HTTPS/SSL websites.
|
|
||||||
So, by default all Odoo Online instances are fully
|
|
||||||
based on HTTPS. If the visitor accesses your website through a non HTTPS
|
|
||||||
url, it gets a 301 redirect to its HTTPS equivalent.
|
|
||||||
|
|
||||||
Links: Nofollow Strategy
|
|
||||||
------------------------
|
|
||||||
|
|
||||||
The more a page is linked from external and quality websites,
|
|
||||||
the better it is for your SEO.
|
|
||||||
|
|
||||||
Here are Odoo strategies to manage links:
|
|
||||||
|
|
||||||
- Every link you add to your website is
|
|
||||||
"dofollow", which means that this link will contribute to the SEO
|
|
||||||
Juice for the linked page.
|
|
||||||
|
|
||||||
- Every link posted by a contributor (forum post, blog comment, etc.)
|
|
||||||
that links to your own website is "dofollow" too.
|
|
||||||
|
|
||||||
- But every link posted by a contributor that links to an external
|
|
||||||
website is "nofollow". In that way, you do not run the risk of
|
|
||||||
people posting links on your website to third-party websites
|
|
||||||
which have a bad reputation.
|
|
||||||
|
|
||||||
- Note that, when using the forum, contributors having a lot of Karma
|
|
||||||
can be trusted. In such case, their links will not have any
|
|
||||||
``rel="nofollow"`` attribute.
|
|
||||||
|
|
||||||
Multi-Language Support
|
|
||||||
======================
|
|
||||||
|
|
||||||
Multi-Language URLs
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
If you run a website in multiple languages, the same content will be
|
|
||||||
available in different URLs, depending on the language used:
|
|
||||||
|
|
||||||
- https://www.mywebsite.com/shop/product/my-product-1 (main language, English here)
|
|
||||||
|
|
||||||
- https://www.mywebsite.com\/fr\_FR/shop/product/mon-produit-1 (French version)
|
|
||||||
|
|
||||||
In this example, fr\_FR is the language of the page. You can even have
|
|
||||||
several variations of the same language: pt\_BR (Portuguese from Brazil)
|
|
||||||
, pt\_PT (Portuguese from Portugal).
|
|
||||||
|
|
||||||
Language Annotation
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
To let search engines know that the second URL is the French translation of the
|
|
||||||
first URL, Odoo will add an HTML link element in the header. In the HTML
|
|
||||||
<head> section of the main version, Odoo automatically adds a link
|
|
||||||
element pointing to the translated versions of that webpage;
|
|
||||||
|
|
||||||
- <link rel="alternate" hreflang="fr"
|
|
||||||
href="https://www.mywebsite.com\/fr\_FR/shop/product/mon-produit-1"/>
|
|
||||||
|
|
||||||
With this approach:
|
|
||||||
|
|
||||||
- Search engines will redirect to the right language according to the
|
|
||||||
visitor language.
|
|
||||||
|
|
||||||
- You do not get penalized by search engines if your page is not translated
|
|
||||||
yet. Indeed, it's not a duplicated content, but a different
|
|
||||||
version of the same content.
|
|
||||||
|
|
||||||
Language Detection
|
|
||||||
------------------
|
|
||||||
|
|
||||||
When a visitor lands for the first time on your website (e.g.
|
|
||||||
yourwebsite.com/shop), they may automatically be redirected to a
|
|
||||||
translated version according to their browser language preference (e.g.
|
|
||||||
yourwebsite.com/fr\_FR/shop).
|
|
||||||
|
|
||||||
Next time, it keeps a cookie of the current language to
|
|
||||||
avoid any redirection.
|
|
||||||
|
|
||||||
To force a visitor to stick to the default language, you can use the
|
|
||||||
code of the default language in your link, example:
|
|
||||||
yourwebsite.com/en\_US/shop. This will always land visitors to the
|
|
||||||
English version of the page, without using the browser language
|
|
||||||
preferences.
|
|
||||||
|
|
||||||
Page Speed
|
|
||||||
==========
|
|
||||||
|
|
||||||
Introduction
|
|
||||||
------------
|
|
||||||
|
|
||||||
The time to load a page is an important criteria for search engines. A faster
|
|
||||||
website not only improves your visitor's experience, but gives
|
|
||||||
you a better page ranking. Some studies have shown that, if you divide the time to
|
|
||||||
load your pages by two (e.g. 2 seconds instead of 4 seconds), the
|
|
||||||
visitor abandonment rate is also divided by two. (25% to 12.5%). One
|
|
||||||
extra second to load a page could `cost $1.6b to Amazon in
|
|
||||||
sales <http://www.fastcompany.com/1825005/how-one-second-could-cost-amazon-16-billion-sales>`__.
|
|
||||||
|
|
||||||
.. image:: media/seo06.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
Fortunately, Odoo does all the magic for you. Below, you will find the
|
|
||||||
tricks Odoo uses to speed up your page loading time. You can compare how
|
|
||||||
your website ranks using these two tools:
|
|
||||||
|
|
||||||
- `Google Page Speed <https://developers.google.com/speed/pagespeed/insights/>`__
|
|
||||||
|
|
||||||
- `Pingdom Website Speed Test <http://tools.pingdom.com/fpt/>`__
|
|
||||||
|
|
||||||
Images
|
|
||||||
------
|
|
||||||
|
|
||||||
When you upload new images, Odoo automatically
|
|
||||||
compresses them to reduce their sizes (lossless compression for .PNG
|
|
||||||
and .GIF and lossy compression for .JPG).
|
|
||||||
|
|
||||||
From the upload button, you have the option to keep the original image
|
|
||||||
unmodified if you prefer to optimize the quality of the image rather
|
|
||||||
than performance.
|
|
||||||
|
|
||||||
.. image:: media/seo07.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
Odoo compresses images when they are uploaded to your website, not
|
|
||||||
when requested by the visitor. Thus, it's possible that, if you use a
|
|
||||||
third-party theme, it will provide images that are not compressed
|
|
||||||
efficiently. But all images used in Odoo official themes have been
|
|
||||||
compressed by default.
|
|
||||||
|
|
||||||
When you click on an image, Odoo shows you the Alt and title attributes
|
|
||||||
of the ``<img>`` tag. You can click on it to set your own title and Alt
|
|
||||||
attributes for the image.
|
|
||||||
|
|
||||||
.. image:: media/seo08.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
When you click on this link, the following window will appear:
|
|
||||||
|
|
||||||
.. image:: media/seo09.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
Odoo's pictograms are implemented using a font (`Font
|
|
||||||
Awesome <https://fortawesome.github.io/Font-Awesome/icons/>`__ in most
|
|
||||||
Odoo themes). Thus, you can use as many pictograms as you want in your
|
|
||||||
page, they will not result in extra requests to load the page.
|
|
||||||
|
|
||||||
.. image:: media/seo10.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
Static Resources: CSS
|
|
||||||
---------------------
|
|
||||||
|
|
||||||
All CSS files are pre-processed, concatenated, minified, compressed and
|
|
||||||
cached (server-side and browser-side). The result:
|
|
||||||
|
|
||||||
- only one CSS file request is needed to load a page
|
|
||||||
|
|
||||||
- this CSS file is shared and cached amongst pages, so that when the
|
|
||||||
visitor clicks on another page, the browser doesn't have to even
|
|
||||||
load a single CSS resource.
|
|
||||||
|
|
||||||
- this CSS file is optimized to be small
|
|
||||||
|
|
||||||
**Pre-processed:** The CSS framework used by Odoo is Bootstrap.
|
|
||||||
Although a theme might use another framework, most of `Odoo
|
|
||||||
themes <https://www.odoo.com/apps/themes>`__ extend and customize
|
|
||||||
Bootstrap directly. Since Odoo supports Less and Sass, you can modify
|
|
||||||
CSS rules instead of overwriting them through extra CSS lines,
|
|
||||||
resulting in a smaller file.
|
|
||||||
|
|
||||||
**Concatenated:** every module or library you might use in Odoo has its
|
|
||||||
own set of CSS, Less or Sass files (eCommerce, blogs, themes, etc.). Having
|
|
||||||
several CSS files is great for the modularity, but not good for the
|
|
||||||
performance because most browsers can only perform 6 requests in
|
|
||||||
parallel resulting in lots of files loaded in series. The
|
|
||||||
latency time to transfer a file is usually much longer than the actual
|
|
||||||
data transfer time, for small files like .JS and .CSS. Thus, the time to
|
|
||||||
load CSS resources depends more on the number of requests to be done
|
|
||||||
than the actual file size.
|
|
||||||
|
|
||||||
To address this issue, all CSS / Less / Sass files are concatenated into
|
|
||||||
a single .CSS file to send to the browser. So a visitor has **only one
|
|
||||||
.CSS file to load** per page, which is particularly efficient. As the
|
|
||||||
CSS is shared amongst all pages, when the visitor clicks on another
|
|
||||||
page, the browser does not even have to load a new CSS file!
|
|
||||||
|
|
||||||
================================= =============================================
|
|
||||||
**Both files in the <head>** **What the visitor gets (only one file)**
|
|
||||||
================================= =============================================
|
|
||||||
/\* From bootstrap.css \*/ .text-muted {
|
|
||||||
.text-muted { color: #666;
|
|
||||||
color: #777; background: yellow
|
|
||||||
background: yellow; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/\* From my-theme.css \*/
|
|
||||||
.text-muted {
|
|
||||||
color: #666;
|
|
||||||
}
|
|
||||||
================================= =============================================
|
|
||||||
|
|
||||||
The CSS sent by Odoo includes all CSS / Less / Sass of all pages /
|
|
||||||
modules. By doing this, additional page views from the same visitor will
|
|
||||||
not have to load CSS files at all. But some modules might include huge
|
|
||||||
CSS/Javascript resources that you do not want to prefetch at the first
|
|
||||||
page because they are too big. In this case, Odoo splits this resource
|
|
||||||
into a second bundle that is loaded only when the page using it is
|
|
||||||
requested. An example of this is the backend that is only loaded when
|
|
||||||
the visitor logs in and accesses the backend (/web).
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
If the CSS file is very big, Odoo will split it into two smaller
|
|
||||||
files to avoid the 4095 selectors limit per sheet of Internet Explorer.
|
|
||||||
But most themes fit below this limit.
|
|
||||||
|
|
||||||
**Minified:** After being pre-processed and concatenated, the resulting
|
|
||||||
CSS is minified to reduce its size.
|
|
||||||
|
|
||||||
============================ ==============================
|
|
||||||
**Before minification** **After minification**
|
|
||||||
============================ ==============================
|
|
||||||
/\* some comments \*/ .text-muted {color: #666}
|
|
||||||
.text-muted {
|
|
||||||
color: #666;
|
|
||||||
}
|
|
||||||
============================ ==============================
|
|
||||||
|
|
||||||
The final result is then compressed, before being delivered to the
|
|
||||||
browser.
|
|
||||||
|
|
||||||
Then, a cached version is stored server-side (so we do not have
|
|
||||||
to pre-process, concatenate, minify at every request) and browser-side
|
|
||||||
(so the same visitor will load the CSS only once for all pages they
|
|
||||||
visit).
|
|
||||||
|
|
||||||
Static Resources: Javascript
|
|
||||||
----------------------------
|
|
||||||
|
|
||||||
As with CSS resources, Javascript resources are also concatenated,
|
|
||||||
minified, compressed and cached (server-side and browser-side).
|
|
||||||
|
|
||||||
Odoo creates three Javascript bundles:
|
|
||||||
|
|
||||||
- One for all pages of the website (including code for parallax
|
|
||||||
effects, form validation, etc.)
|
|
||||||
|
|
||||||
- One for common Javascript code shared among frontend and backend
|
|
||||||
(Bootstrap)
|
|
||||||
|
|
||||||
- One for backend specific Javascript code (Odoo Web Client interface
|
|
||||||
for your employees using Odoo)
|
|
||||||
|
|
||||||
Most visitors of your website will only need the first two bundles,
|
|
||||||
resulting in a maximum of two Javascript files to load to render one
|
|
||||||
page. As these files are shared across all pages, further clicks by the
|
|
||||||
same visitor will not load any other Javascript resource.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
If you work on :doc:`Developer mode </applications/general/developer_mode>`, the CSS and
|
|
||||||
Javascript are neither concatenated, nor minified. Thus, it's much slower. But it allows you to
|
|
||||||
easily debug with the Chrome debugger as CSS and Javascript resources are not transformed from
|
|
||||||
their original versions.
|
|
||||||
|
|
||||||
CDN
|
|
||||||
---
|
|
||||||
|
|
||||||
If you activate the CDN feature in Odoo, static resources (Javascript,
|
|
||||||
CSS, images) are loaded from a Content Delivery Network. Using a Content
|
|
||||||
Delivery Network has three advantages:
|
|
||||||
|
|
||||||
- Load resources from a nearby server (most CDN have servers in main
|
|
||||||
countries around the globe)
|
|
||||||
|
|
||||||
- Cache resources efficiently (no computation resources usage on your
|
|
||||||
own server)
|
|
||||||
|
|
||||||
- Split the resource loading on different services allowing to load
|
|
||||||
more resources in parallel (since the Chrome limit of 6 parallel
|
|
||||||
requests is by domain)
|
|
||||||
|
|
||||||
You can configure your CDN options from the **Website Admin** app, using
|
|
||||||
the Configuration menu. Here is an example of configuration you can use:
|
|
||||||
|
|
||||||
.. image:: media/seo11.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
HTML Pages
|
|
||||||
----------
|
|
||||||
|
|
||||||
The HTML pages can be compressed, but this is usually handled by your web
|
|
||||||
server (NGINX or Apache).
|
|
||||||
|
|
||||||
The Odoo Website builder has been optimized to guarantee clean and short
|
|
||||||
HTML code. Building blocks have been developed to produce clean HTML
|
|
||||||
code, usually using Bootstrap and the HTML editor.
|
|
||||||
|
|
||||||
As an example, if you use the color picker to change the color of a
|
|
||||||
paragraph to the primary color of your website, Odoo will produce the
|
|
||||||
following code:
|
|
||||||
|
|
||||||
``<p class="text-primary">My Text</p>``
|
|
||||||
|
|
||||||
Whereas most HTML editors (such as CKEditor) will produce the following
|
|
||||||
code:
|
|
||||||
|
|
||||||
``<p style="color: #AB0201">My Text</p>``
|
|
||||||
|
|
||||||
Responsive Design
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
Websites that are not mobile-friendly are negatively
|
|
||||||
impacted in search engine rankings. All Odoo themes rely on Bootstrap to
|
|
||||||
render efficiently according to the device: desktop, tablet or mobile.
|
|
||||||
|
|
||||||
.. image:: media/seo12.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
As all Odoo modules share the same technology, absolutely all pages in
|
|
||||||
your website are mobile friendly.
|
|
||||||
|
|
||||||
Browser Caching
|
|
||||||
---------------
|
|
||||||
|
|
||||||
Javascript, images and CSS resources have an URL that changes
|
|
||||||
dynamically when their content change. As an example, all CSS files are
|
|
||||||
loaded through this URL:
|
|
||||||
`localhost:8069/web/content/457-0da1d9d/web.assets\_common.0.css <http://localhost:8069/web/content/457-0da1d9d/web.assets_common.0.css>`__.
|
|
||||||
The ``457-0da1d9d`` part of this URL will change if you modify the CSS of
|
|
||||||
your website.
|
|
||||||
|
|
||||||
This allows Odoo to set a very long cache delay (XXX) on these
|
|
||||||
resources: XXX secs, while being updated instantly if you update the
|
|
||||||
resource.
|
|
||||||
|
|
||||||
Scalability
|
|
||||||
-----------
|
|
||||||
|
|
||||||
In addition to being fast, Odoo is also more scalable than traditional
|
|
||||||
CMS and eCommerce (Drupal, Wordpress, Magento, Prestashop). The
|
|
||||||
following link provides an analysis of the major open source CMS and
|
|
||||||
eCommerce compared to Odoo when it comes to high query volumes:
|
|
||||||
`https://www.odoo.com/slides/slide/197
|
|
||||||
<https://www.odoo.com/slides/slide/odoo-cms-performance-comparison-and-optimisation-197>`_
|
|
||||||
|
|
||||||
.. todo:: fix above link
|
|
||||||
|
|
||||||
Here is the slide that summarizes the scalability of Odoo Website & eCommerce.
|
|
||||||
|
|
||||||
.. image:: media/seo13.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
Search Engines Files
|
|
||||||
====================
|
|
||||||
|
|
||||||
Sitemap
|
|
||||||
-------
|
|
||||||
|
|
||||||
The sitemap points out pages to index to search engine robots.
|
|
||||||
Odoo generates a ``/sitemap.xml`` file automatically for you. For
|
|
||||||
performance reasons, this file is cached and updated every 12 hours.
|
|
||||||
|
|
||||||
By default, all URLs will be in a single ``/sitemap.xml`` file, but if you
|
|
||||||
have a lot of pages, Odoo will automatically create a Sitemap Index
|
|
||||||
file, respecting the `sitemaps.org
|
|
||||||
protocol <http://www.sitemaps.org/protocol.html>`__ grouping sitemap
|
|
||||||
URL's in 45000 chunks per file.
|
|
||||||
|
|
||||||
Every sitemap entry has 4 attributes that are computed automatically:
|
|
||||||
|
|
||||||
- ``<loc>`` : the URL of a page
|
|
||||||
|
|
||||||
- ``<lastmod>`` : last modification date of the resource, computed
|
|
||||||
automatically based on related object. For a page related to a
|
|
||||||
product, this could be the last modification date of the product
|
|
||||||
or the page.
|
|
||||||
|
|
||||||
- ``<priority>`` : modules may implement their own priority algorithm based
|
|
||||||
on their content (example: a forum might assign a priority based
|
|
||||||
on the number of votes on a specific post). The priority of a
|
|
||||||
static page is defined by it's priority field, which is
|
|
||||||
normalized (16 is the default).
|
|
||||||
|
|
||||||
Structured Data Markup
|
|
||||||
----------------------
|
|
||||||
|
|
||||||
Structured Data Markup is used to generate Rich Snippets in search
|
|
||||||
engine results. It is a way for website owners to send structured data
|
|
||||||
to search engine robots; helping them understand your content and
|
|
||||||
create well-presented search results.
|
|
||||||
|
|
||||||
Google supports a number of rich snippets for content types, including:
|
|
||||||
Reviews, People, Products, Businesses, Events and Organizations.
|
|
||||||
|
|
||||||
Odoo implements micro data as defined in the
|
|
||||||
`schema.org <http://schema.org>`__ specification for events, eCommerce
|
|
||||||
products, forum posts and contact addresses. This allows your product
|
|
||||||
pages to be displayed in Google using extra information like the price
|
|
||||||
and rating of a product:
|
|
||||||
|
|
||||||
.. image:: media/seo14.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
robots.txt
|
|
||||||
----------
|
|
||||||
|
|
||||||
When indexing your website, search engines take a first look at the
|
|
||||||
general indexing rules of the a``/robots.txt`` file (allowed robots,
|
|
||||||
sitemap path, etc.). Odoo automatically creates it. Its content is:
|
|
||||||
|
|
||||||
User-agent: \*
|
|
||||||
Sitemap: https://www.odoo.com/sitemap.xml
|
|
||||||
|
|
||||||
It means that all robots are allowed to index your website
|
|
||||||
and there is no other indexing rule than specified in the sitemap
|
|
||||||
to be found at following address.
|
|
||||||
|
|
||||||
You can customize the file *robots* in
|
|
||||||
:doc:`Developer mode </applications/general/developer_mode>` from *Settings --> Technical -->
|
|
||||||
User Interface --> Views* (exclude robots, exclude some pages, redirect to a custom Sitemap).
|
|
||||||
Make the Model Data of the view *Non Updatable* to not reset the file after system upgrades.
|
|
After Width: | Height: | Size: 91 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 118 KiB |
After Width: | Height: | Size: 35 KiB |
After Width: | Height: | Size: 63 KiB |
After Width: | Height: | Size: 87 KiB |
After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 6.8 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 56 KiB |
BIN
content/applications/websites/website/optimize/seo/seo09.png
Normal file
After Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 6.9 KiB |
Before Width: | Height: | Size: 7.6 KiB After Width: | Height: | Size: 7.6 KiB |
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 70 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 5.4 KiB |
After Width: | Height: | Size: 5.7 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 4.5 KiB |
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 7.6 KiB After Width: | Height: | Size: 7.6 KiB |
After Width: | Height: | Size: 48 KiB |
After Width: | Height: | Size: 61 KiB |
@ -2,12 +2,825 @@
|
|||||||
Publish
|
Publish
|
||||||
=======
|
=======
|
||||||
|
|
||||||
.. toctree::
|
Odoo's Website Builder is designed to help anyone build a beautiful, professional-grade website.
|
||||||
:titlesonly:
|
|
||||||
|
|
||||||
publish/domain_name
|
With intuitive building blocks, unique design elements, and tons of customizable features, users
|
||||||
publish/translate
|
can create top-notch websites in a fraction of the time - without any coding experience whatsoever.
|
||||||
publish/multi_website
|
|
||||||
|
Website essentials
|
||||||
|
==================
|
||||||
|
|
||||||
|
Odoo provides the user with a myriad of eye-catching, feature-filled design elements that are
|
||||||
|
easy-to-use, simple to customize, and able to take your website to the next level.
|
||||||
|
|
||||||
|
Pick a theme
|
||||||
|
------------
|
||||||
|
|
||||||
|
Upon installing the *Website* application, you are redirected to a page full of website themes to
|
||||||
|
choose from.
|
||||||
|
|
||||||
|
.. image:: publish/essentials/pick-theme-page.png
|
||||||
|
:align: center
|
||||||
|
:alt: the pick a theme page in the website application
|
||||||
|
|
||||||
|
Each theme provides its own unique style (and look) that expertly cater to a variety of businesses
|
||||||
|
or personal purposes.
|
||||||
|
|
||||||
|
While they differ in initial design, each theme still provides the user with all the functionality,
|
||||||
|
options, tools, and features that Odoo has to offer. That way, you can get the most of your website,
|
||||||
|
no matter what theme you pick.
|
||||||
|
|
||||||
|
When you hover over a theme on the *Pick a Theme* page, you are presented with two options: *Use
|
||||||
|
This Theme* or *Live Preview*.
|
||||||
|
|
||||||
|
.. image:: publish/essentials/live-preview-option.png
|
||||||
|
:align: center
|
||||||
|
:alt: live preview of a website theme
|
||||||
|
|
||||||
|
Clicking *Live Preview* presents you with a sample website in that desired theme. You can also
|
||||||
|
choose to see it in *Desktop* or *Mobile*.
|
||||||
|
|
||||||
|
If you want to choose the theme for your website, simply click *Start Now* in the upper-left
|
||||||
|
corner. If you'd like to go back to the theme selection page, click *Choose another theme*.
|
||||||
|
|
||||||
|
.. image:: publish/essentials/sample-website-preview.png
|
||||||
|
:align: center
|
||||||
|
:alt: sample website preview
|
||||||
|
|
||||||
|
.. tip::
|
||||||
|
You can change your theme at any time. From the front-end of the website (in *Edit* mode),
|
||||||
|
select *Switch Theme* at the bottom of the *Options* section in the toolbar. From the backend, go
|
||||||
|
to :menuselection:`Website app --> Configuration --> Settings` and select *Pick a Theme* from the
|
||||||
|
*Website* section.
|
||||||
|
|
||||||
|
Getting started
|
||||||
|
---------------
|
||||||
|
|
||||||
|
When a theme is selected, Odoo takes you to a blank homepage (already in *Edit* mode) that you
|
||||||
|
can start designing with the help of Odoo's toolbar, located on the right-side of the screen.
|
||||||
|
|
||||||
|
If you're not sure where to start, you can follow the helpful purple drops that Odoo provides to
|
||||||
|
guide users through a few quick steps to begin their website building process.
|
||||||
|
|
||||||
|
.. image:: publish/essentials/purple-drops.png
|
||||||
|
:align: center
|
||||||
|
:alt: odoo purple drops in website builder
|
||||||
|
|
||||||
|
Building Blocks
|
||||||
|
---------------
|
||||||
|
|
||||||
|
Odoo provides the user with a huge collection of helpful design elements (and features) to help
|
||||||
|
them build their website. The first section you see is **Blocks**, which contains all of Odoo's
|
||||||
|
eye-catching, easy-to-use *Building Blocks*.
|
||||||
|
|
||||||
|
To use these *Building Blocks*, simply drag and drop your desired block anywhere on your page, and
|
||||||
|
start customizing it to fit the needs of your company.
|
||||||
|
|
||||||
|
They are divided into 4 categories:
|
||||||
|
|
||||||
|
- **Structure**: core features that provide foundational elements to your site.
|
||||||
|
|
||||||
|
- **Features**: unique array of informative, attention-grabbing aspects to help your web design
|
||||||
|
look more professional and pleasing to visitors.
|
||||||
|
|
||||||
|
- **Dynamic Content**: features designed to showcase more information about the company, its
|
||||||
|
location, social presence, and so much more.
|
||||||
|
|
||||||
|
- **Inner Content**: engaging forms of content and design elements that can be directly
|
||||||
|
incorporated within other *Building Blocks*
|
||||||
|
|
||||||
|
Customize Building Blocks
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
Once you have dragged and dropped a *Building Block* onto your webpage, you can edit it in a number
|
||||||
|
of ways.
|
||||||
|
|
||||||
|
To do so, select the block you wish to change, and a new set of options appears in the toolbar.
|
||||||
|
These options are specific to that selected block, and can be found in the *Style* section of the
|
||||||
|
toolbar.
|
||||||
|
|
||||||
|
.. image:: publish/essentials/block-toolbar-options.png
|
||||||
|
:align: center
|
||||||
|
:alt: building block with specific options in the toolbar
|
||||||
|
|
||||||
|
As mentioned, these options are different for every block, so be sure to consider every available
|
||||||
|
configuration as you design your website.
|
||||||
|
|
||||||
|
Shapes
|
||||||
|
------
|
||||||
|
|
||||||
|
Of course, you can change the image and background color of any block, but Odoo also provides the
|
||||||
|
user with unique design elements known as *Shapes*. These are artistic design elements that
|
||||||
|
create a stunning, completely cohesive design, without drawing attention away from your content.
|
||||||
|
|
||||||
|
When a block is selected, you can choose to add a *Shapes* element in the "Background" field,
|
||||||
|
indicated by this button
|
||||||
|
|
||||||
|
.. image:: publish/essentials/shapes-icon.png
|
||||||
|
:align: center
|
||||||
|
:alt: shapes element icon in the toolbar
|
||||||
|
|
||||||
|
Odoo offers numerous categories, styles, and designs. Each of which can be fully customized in
|
||||||
|
many ways. To preview how they look, just hover over any *Shapes*, and Odoo instantly shows how
|
||||||
|
it looks on your website.
|
||||||
|
|
||||||
|
.. image:: publish/essentials/shapes-hover.png
|
||||||
|
:align: center
|
||||||
|
:alt: Shapes element on webpage when cursor hovers over option
|
||||||
|
|
||||||
|
You can create cohesion between your blocks by using similar *Shapes* to seamlessly connect your
|
||||||
|
content together, creating a smooth flow throughout your page.
|
||||||
|
|
||||||
|
To do that, simply select the block you wish to connect, click the *Shapes* icon again, and Odoo
|
||||||
|
will automatically connect those elements together (if there's a perfect match). But you can
|
||||||
|
customize and choose any *Shapes* you want.
|
||||||
|
|
||||||
|
.. image:: publish/essentials/shapes-on-block.png
|
||||||
|
:align: center
|
||||||
|
:alt: example of how a Shapes element looks on a block before it's connected
|
||||||
|
|
||||||
|
.. image:: publish/essentials/connected-shapes.png
|
||||||
|
:align: center
|
||||||
|
:alt: two connected shape elements to create cohesive design
|
||||||
|
|
||||||
|
The limitless possibilities of web design brought forth by these unique *Shapes* are guaranteed
|
||||||
|
to give your website a memorable, professional look that visitors won't soon forget.
|
||||||
|
|
||||||
|
Options
|
||||||
|
-------
|
||||||
|
|
||||||
|
In the *Options* section of the toolbar, you can control numerous features that are utilized
|
||||||
|
throughout your site.
|
||||||
|
|
||||||
|
Theme Colors
|
||||||
|
************
|
||||||
|
|
||||||
|
For instance, it's here in the *Options* tab where you can customize the *Theme Colors* of your
|
||||||
|
entire site. These unique combinations of colors can be configured in any way you'd like, or you
|
||||||
|
can select one from a list of pre-made color combinations that Odoo provides.
|
||||||
|
|
||||||
|
.. image:: publish/essentials/theme-colors.png
|
||||||
|
:align: center
|
||||||
|
:alt: theme colors setting area on the toolbar
|
||||||
|
|
||||||
|
You can choose any combination of colors you'd like, and all of them are easily adapted to any
|
||||||
|
feature (or element) that you put on your page. Having pre-configured *Theme Colors* just a click
|
||||||
|
away, allows you to keep creating a beautiful website, page after page, without any delays.
|
||||||
|
|
||||||
|
Theme options
|
||||||
|
*************
|
||||||
|
|
||||||
|
In "Theme Options," you can customize the look and layout of various design aspects.
|
||||||
|
|
||||||
|
.. image:: publish/essentials/theme-options-area.png
|
||||||
|
:align: center
|
||||||
|
:alt: theme options on the website builder toolbar
|
||||||
|
|
||||||
|
The changes you make here will become the new defaults for the site, but you can adjust, modify,
|
||||||
|
and change them at any time. You can change things like the overall layout, font, button style,
|
||||||
|
and more.
|
||||||
|
|
||||||
|
Header and Footer
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
When the header or footer of your page is selected, Odoo instantly reveals a new *Style* menu
|
||||||
|
with options and features specifically designed for these elements of your website.
|
||||||
|
|
||||||
|
.. image:: publish/essentials/header-style-options.png
|
||||||
|
:align: center
|
||||||
|
:alt: header style options in the toolbar
|
||||||
|
|
||||||
|
Here, you can customize the layout, the colors, the position, and so much more! So, don't forget
|
||||||
|
to play around with these options during the building of your website.
|
||||||
|
|
||||||
|
Custom domain name
|
||||||
|
==================
|
||||||
|
|
||||||
|
By default, your Odoo database (and website) have an *.odoo.com* domain name, which is seen in the
|
||||||
|
URL and emails.
|
||||||
|
|
||||||
|
However, you can change it to a custom URL (e.g. *www.yourcompany.com*) at any time.
|
||||||
|
|
||||||
|
Good domain qualities
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
Choosing the right domain name for your business is extremely important for your branding.
|
||||||
|
|
||||||
|
That's why it's vital to consider the following aspects when creating a custom URL for your business
|
||||||
|
(or organization).
|
||||||
|
|
||||||
|
Make sure your domain name is:
|
||||||
|
|
||||||
|
- Simple and obvious
|
||||||
|
- Easy to remember (*and* spell)
|
||||||
|
- Concise: the shorter, the better
|
||||||
|
- Avoid special characters
|
||||||
|
- Aim for a ".com" and/or your country extension
|
||||||
|
|
||||||
|
Read more: `How to Choose a Domain Name for Maximum SEO <https://www.searchenginejournal.com/choose-a-domain-name-maximum-seo/158951/>`__
|
||||||
|
|
||||||
|
Buy a domain name
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
Buy your domain name at a popular registrar site, like:
|
||||||
|
|
||||||
|
- `GoDaddy <https://www.godaddy.com>`__
|
||||||
|
- `Namecheap <https://www.namecheap.com>`__
|
||||||
|
- `OVH <https://www.ovh.com>`__
|
||||||
|
|
||||||
|
.. note:: Steps to buy a domain name are pretty straight-forward. If you have any issues, check out
|
||||||
|
this easy-to-follow tutorial:
|
||||||
|
|
||||||
|
- `GoDaddy <https://roadtoblogging.com/buy-domain-name-from-godaddy>`__
|
||||||
|
|
||||||
|
Feel free to buy an email server to have email addresses using your domain name. However,
|
||||||
|
*don't* buy any extra service to create (or host) your website - that's Odoo's job!
|
||||||
|
|
||||||
|
.. _custom_domain:
|
||||||
|
|
||||||
|
|
||||||
|
Apply domain name to Odoo
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
First, you must authorize the URL redirection (*yourcompany.com --> yourcompany.odoo.com*):
|
||||||
|
|
||||||
|
To do that, open your Odoo.com account from the homepage.
|
||||||
|
|
||||||
|
.. image:: publish/domain_name/odoo-account.png
|
||||||
|
:align: center
|
||||||
|
:alt: opening odoo.com account from homepage
|
||||||
|
|
||||||
|
Then, select *My Databases* page under the same drop-down menu.
|
||||||
|
|
||||||
|
.. image:: publish/domain_name/my-databases.png
|
||||||
|
:align: center
|
||||||
|
:alt: manage databases page
|
||||||
|
|
||||||
|
That redirects to the *Manage Your Databases* page. Here, you need to click on *Domains* to the
|
||||||
|
right of the database you want to redirect.
|
||||||
|
|
||||||
|
.. image:: publish/domain_name/manage-databases.png
|
||||||
|
:align: center
|
||||||
|
:alt: clicking domains of the database
|
||||||
|
|
||||||
|
Then, a database domain prompt appears, wherein you enter your custom domain:
|
||||||
|
(e.g. *www.yourcompany.com*).
|
||||||
|
|
||||||
|
.. image:: publish/domain_name/enter-domain.png
|
||||||
|
:align: center
|
||||||
|
:alt: domain name database prompt
|
||||||
|
|
||||||
|
At this point, you can apply the redirection from your domain name's manager account:
|
||||||
|
|
||||||
|
In order to do that, log in to your account, and search for the DNS Zones management page.
|
||||||
|
|
||||||
|
Then, create a CNAME record (*www.yourdomain.com*) pointing to *mywebsite.odoo.com*. If you want to
|
||||||
|
use the naked domain (e.g. *yourdomain.com*), you need to redirect *yourdomain.com* to
|
||||||
|
*www.yourdomain.com*.
|
||||||
|
|
||||||
|
.. note:: Here are some specific guidelines to create a CNAME record:
|
||||||
|
|
||||||
|
- `GoDaddy <https://be.godaddy.com/fr/help/add-a-cname-record-19236>`__
|
||||||
|
- `Namecheap <https://www.namecheap.com/support/knowledgebase/article.aspx/9646/10/how-can-i-set-up-a-cname-record-for-my-domain>`__
|
||||||
|
- `OVH <https://www.ovh.co.uk/g1519.exchange_20132016_how_to_add_a_cname_record>`__
|
||||||
|
|
||||||
|
Enable SSL (HTTPS) for Odoo
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
Odoo no longer requires users to use a third-party CDN service provide (like, CloudFlare) to
|
||||||
|
enable SSL. Odoo generates the certificate for you automatically, using integration with
|
||||||
|
`Let's Encrypt Certificate Authority and ACME protocol <https://letsencrypt.org/how-it-works/>`__.
|
||||||
|
|
||||||
|
In order to enable SSL, simply add your domain name in your customer portal. A separate certificate
|
||||||
|
is generated for each domain name specified.
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
**The certificate generation may take up to 24h.**
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
If you already use CloudFlare (or a similar service), you can keep using it, or simply change to
|
||||||
|
Odoo.
|
||||||
|
|
||||||
|
Website indexed twice by Google
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
If you set up a custom domain name (*mydomain.com*) for *mydatabase.odoo.com*, Google indexes your
|
||||||
|
website under *both* names.
|
||||||
|
|
||||||
|
This is a minor limitation of the Odoo cloud platforms.
|
||||||
|
|
||||||
|
Website translation
|
||||||
|
===================
|
||||||
|
|
||||||
|
In addition to creating beautiful, professional-grade websites, Odoo provides users with the ability
|
||||||
|
to translate them into multiple different languages - at any time.
|
||||||
|
|
||||||
|
Translate
|
||||||
|
---------
|
||||||
|
|
||||||
|
To enable translation, go to your website, and scroll down to your footer. Click on the
|
||||||
|
language (i.e. *English - US*) to reveal a menu, then click *Add a Language*.
|
||||||
|
|
||||||
|
.. image:: publish/translate/translate-menu.png
|
||||||
|
:align: center
|
||||||
|
:alt: translate menu in the website footer
|
||||||
|
|
||||||
|
Choose the language you want from the language pop-up that appears. You can also decide which
|
||||||
|
website you'd like to apply it to here, as well. Then, click *Add*.
|
||||||
|
|
||||||
|
.. image:: publish/translate/translate-pop-up.png
|
||||||
|
:align: center
|
||||||
|
:alt: add a language feature
|
||||||
|
|
||||||
|
When you navigate back to your website, that new language is now an option.
|
||||||
|
|
||||||
|
.. image:: publish/translate/new-language-option.png
|
||||||
|
:align: center
|
||||||
|
:alt: showing a new language option in footer
|
||||||
|
|
||||||
|
When selected, some of the text translates automatically.
|
||||||
|
|
||||||
|
.. image:: publish/translate/auto-translation.png
|
||||||
|
:align: center
|
||||||
|
:alt: new language option available
|
||||||
|
|
||||||
|
To translate the content of the website, click on **Translate** (in the upper-right corner), which
|
||||||
|
appears in that newly-chosen language.
|
||||||
|
|
||||||
|
Here, for example, it's **Traduire**, since we are translating the website in French.
|
||||||
|
|
||||||
|
.. image:: publish/translate/translate-button.png
|
||||||
|
:align: center
|
||||||
|
:alt: translate button
|
||||||
|
|
||||||
|
At this point, most of the content is highlighted in yellow or green.
|
||||||
|
|
||||||
|
The yellow represents content that you have to translate manually, and green represents content that
|
||||||
|
has already been translated by Odoo automatically.
|
||||||
|
|
||||||
|
.. image:: publish/translate/translate-colors.png
|
||||||
|
:align: center
|
||||||
|
:alt: green and yellow translate colors
|
||||||
|
|
||||||
|
Manage multiple websites
|
||||||
|
========================
|
||||||
|
|
||||||
|
Odoo helps users to build, customize, and manage multiple websites in one easy-to-use platform.
|
||||||
|
|
||||||
|
Having multiple websites opens up the possibilities of diversification and customer segmentation
|
||||||
|
for any business. Multiple websites are also a great way to multiply your audience and boost
|
||||||
|
revenue!
|
||||||
|
|
||||||
|
Each Odoo website can work in a fully independent way, with its very own theme, branding, domain
|
||||||
|
name, pages, languages, products, blogs, forums, events, live chat channels, and so much more.
|
||||||
|
|
||||||
|
Setup
|
||||||
|
-----
|
||||||
|
|
||||||
|
To create a new website, go to :menuselection:`Website --> Configuration --> Settings`.
|
||||||
|
|
||||||
|
.. image:: publish/multi_website/config-settings.png
|
||||||
|
:align: center
|
||||||
|
:alt: website application configuration settings
|
||||||
|
|
||||||
|
To start building a new website, simply click on *+New* located next to the title of the "Website"
|
||||||
|
section on the *Website* settings page.
|
||||||
|
|
||||||
|
.. image:: publish/multi_website/new-website-button.png
|
||||||
|
:align: center
|
||||||
|
:alt: new website button on the settings page
|
||||||
|
|
||||||
|
When clicked, a pop-up appears. In this pop-up, you input the name of your new website, its domain,
|
||||||
|
and a logo (if you have one).
|
||||||
|
|
||||||
|
.. image:: publish/multi_website/new-website-pop-up.png
|
||||||
|
:align: center
|
||||||
|
:alt: new website pop-up with empty information fields
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
If you want to publish this new website under the default domain of your Odoo database, simply
|
||||||
|
leave the domain field blank.
|
||||||
|
|
||||||
|
Once all the necessary fields have been filled, you may click *Pick a Theme* to select how you
|
||||||
|
want your new website to look.
|
||||||
|
|
||||||
|
.. image:: publish/multi_website/pick-theme-button.png
|
||||||
|
:align: center
|
||||||
|
:alt: website pick a theme button on the pop-up window
|
||||||
|
|
||||||
|
Clicking that, takes you to a catalog of professional-grade website themes that Odoo has to
|
||||||
|
choose from.
|
||||||
|
|
||||||
|
Remember, this new website may have an entirely different purpose (and/or audience) than your
|
||||||
|
initial site. So, feel free to choose a completely new theme to fit your needs. And, don't
|
||||||
|
forget, you can change themes at any time.
|
||||||
|
|
||||||
|
.. image:: publish/multi_website/multi-website-theme-selection.png
|
||||||
|
:align: center
|
||||||
|
:alt: various website themes
|
||||||
|
|
||||||
|
To select a theme, hover the cursor over your desired theme, and click *Use This Theme*. You can
|
||||||
|
also preview what that theme would look like, by selecting *Live Preview*.
|
||||||
|
|
||||||
|
.. image:: publish/multi_website/theme-live-preview-hover.png
|
||||||
|
:align: center
|
||||||
|
:alt: website theme live preview hover over options
|
||||||
|
|
||||||
|
Once a theme is selected, you can start building your website. Not sure where to begin? Simply
|
||||||
|
follow the "purple drops" located on the screen. They will help get your started.
|
||||||
|
|
||||||
|
.. image:: publish/multi_website/purple-drops.png
|
||||||
|
:align: center
|
||||||
|
:alt: website builder purple drops
|
||||||
|
|
||||||
|
When the cursor hovers over them, they explain the function and purpose of that particular
|
||||||
|
feature.
|
||||||
|
|
||||||
|
.. image:: publish/multi_website/purple-drops-explanation.png
|
||||||
|
:align: center
|
||||||
|
:alt: website builder purple drops with explanation of function
|
||||||
|
|
||||||
|
Then, you can start dragging and dropping any of Odoo's "Building Blocks" (on the right) to create
|
||||||
|
your design. Remember to hit *Save* once you are done.
|
||||||
|
|
||||||
|
.. image:: publish/multi_website/partially-built-homepage.png
|
||||||
|
:align: center
|
||||||
|
:alt: partially built website with building blocks
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
If you run Odoo Online, don’t forget to redirect any new domain name to your Odoo database
|
||||||
|
(``CNAME``) and to authorize it on the Odoo-side.
|
||||||
|
|
||||||
|
Create the menu
|
||||||
|
---------------
|
||||||
|
|
||||||
|
By default, this new website has a default menu with all the installed applications.
|
||||||
|
|
||||||
|
To edit it, click :menuselection:`Pages --> Edit Menu`.
|
||||||
|
|
||||||
|
.. image:: publish/multi_website/pages-edit-menu.png
|
||||||
|
:align: center
|
||||||
|
:alt: pages edit menu on header
|
||||||
|
|
||||||
|
When selected, a pop-up appears, in which you can modify the header menu of your website.
|
||||||
|
|
||||||
|
.. image:: publish/multi_website/edit-menu-pop-up.png
|
||||||
|
:align: center
|
||||||
|
:alt: edit header menu pop-up window
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Moving forward, you only edit the menu of the website you are currently on.
|
||||||
|
|
||||||
|
Switching websites
|
||||||
|
------------------
|
||||||
|
|
||||||
|
In the upper-right corner, there is a "Website Switcher" drop-down menu. It will show the website
|
||||||
|
that you are currently on. When clicked, it will reveal your other websites, which you can instantly
|
||||||
|
jump to with one click.
|
||||||
|
|
||||||
|
If you use another domain for the website, the user is requested to sign in.
|
||||||
|
|
||||||
|
.. image:: publish/multi_website/multi_website03.png
|
||||||
|
:align: center
|
||||||
|
:alt: website switcher button in the corner
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
When switching, you are redirected to the same domain path on the other website
|
||||||
|
(e.g., ``/shop/myproduct``). If this URL is not used, you will be redirected to a 404 page, and
|
||||||
|
prompted to create a new page from there.
|
||||||
|
|
||||||
|
Add features
|
||||||
|
------------
|
||||||
|
|
||||||
|
The website apps you install (like *Blogs*) are made available on all your websites. Of course,
|
||||||
|
you can keep them hidden in one website by removing the menu item, as previously mentioned.
|
||||||
|
|
||||||
|
Each website comes with a wide array of features and options that can be found on the *Settings*
|
||||||
|
page (:menuselection:`Website app --> Configuration --> Settings`).
|
||||||
|
|
||||||
|
To modify those features and options, you first need to select which website you want to
|
||||||
|
customize. In order to do that, you need to select your desired website from the first section of
|
||||||
|
settings, titled: "Select the Website to Configure."
|
||||||
|
|
||||||
|
.. image:: publish/multi_website/multi_website15.png
|
||||||
|
:align: center
|
||||||
|
:alt: selecting which website should be configured
|
||||||
|
|
||||||
|
Once a website is selected, take a look at the options on the rest of the page, particularly the
|
||||||
|
ones flagged with an Earth icon.
|
||||||
|
|
||||||
|
This icon means that those features will only impact the very website you are currently working on.
|
||||||
|
|
||||||
|
.. image:: publish/multi_website/multi_website12.png
|
||||||
|
:align: center
|
||||||
|
:alt: earth icon in the website settings menu
|
||||||
|
|
||||||
|
You can, for instance, set specific:
|
||||||
|
|
||||||
|
- Languages
|
||||||
|
|
||||||
|
- Domain names
|
||||||
|
|
||||||
|
- Social media links
|
||||||
|
|
||||||
|
- Dedicated live chat channels
|
||||||
|
|
||||||
|
- And so much more...
|
||||||
|
|
||||||
|
The other options are global and will apply to *all* your websites.
|
||||||
|
|
||||||
|
Customize the visitor experience
|
||||||
|
--------------------------------
|
||||||
|
|
||||||
|
Thanks to Odoo's *Customize* menu, there are plenty of ways you can customize (and enhance) the
|
||||||
|
overall user experience for your visitors.
|
||||||
|
|
||||||
|
All the visual-related options in this drop-down menu are specific to each page you are
|
||||||
|
customizing.
|
||||||
|
|
||||||
|
For example, the options available for your blogs won't be the same as the options available for
|
||||||
|
your online store because each page serves a different purpose. Odoo provides the user with the
|
||||||
|
professional-grade options and features to enhance every single page, no matter what.
|
||||||
|
|
||||||
|
So, while building your website, be sure to go through the different pages, and adapt them to fit
|
||||||
|
this new audience/purpose. Focus on workflows and automatic pages (eCommerce checkout, blogs,
|
||||||
|
events, etc.), as there more options to be found there.
|
||||||
|
|
||||||
|
.. image:: publish/multi_website/customize-drop-down.png
|
||||||
|
:align: center
|
||||||
|
:alt: customize drop-down menu on the front-end of the website
|
||||||
|
|
||||||
|
Publish specific content per website
|
||||||
|
------------------------------------
|
||||||
|
|
||||||
|
Like static pages, any content created from the front-end (product page, blog post, etc.) is always
|
||||||
|
*only* published on that current website.
|
||||||
|
|
||||||
|
You can change that by editing the form in the back-end, and leaving the *Website* field blank.
|
||||||
|
This will publish it on all your websites.
|
||||||
|
|
||||||
|
.. image:: publish/multi_website/multi_website06.png
|
||||||
|
:align: center
|
||||||
|
:alt: publishing content on a specific website
|
||||||
|
|
||||||
|
Here are all the objects you can link to *any (or all)* websites:
|
||||||
|
|
||||||
|
1. Products
|
||||||
|
|
||||||
|
2. Product Categories (for eCommerce)
|
||||||
|
|
||||||
|
3. Blogs
|
||||||
|
|
||||||
|
4. Pages
|
||||||
|
|
||||||
|
5. Forums
|
||||||
|
|
||||||
|
6. Events
|
||||||
|
|
||||||
|
7. Job Positions
|
||||||
|
|
||||||
|
8. eLearning Courses
|
||||||
|
|
||||||
|
Publish on all websites
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
When a new static page is created, it's only made available on that current website. However, you
|
||||||
|
can duplicate it to other websites by going to :menuselection:`Website --> Configuration --> Pages`.
|
||||||
|
|
||||||
|
Then, select the page you wish to duplicate, click *Edit*, and leave the *Website* field empty.
|
||||||
|
|
||||||
|
If you want to duplicate it in just *one* other website, duplicate the page, and select your
|
||||||
|
desired website in the the *Website* field of the newly duplicated page.
|
||||||
|
|
||||||
|
.. image:: publish/multi_website/multi-website-pages.png
|
||||||
|
:align: center
|
||||||
|
:alt: placing a page onto another website
|
||||||
|
|
||||||
|
To efficiently (and quickly) manage your pages, you can click
|
||||||
|
:menuselection:`Pages --> Manage Pages` found on the front-end of the website.
|
||||||
|
|
||||||
|
.. image:: publish/multi_website/manage-pages-drop-down.png
|
||||||
|
:align: center
|
||||||
|
:alt: manage pages drop-down menu option
|
||||||
|
|
||||||
|
That takes you to a page with all your web pages and you can edit/modify them in a number of
|
||||||
|
different ways.
|
||||||
|
|
||||||
|
.. image:: publish/multi_website/multi-website-manage-pages.png
|
||||||
|
:align: center
|
||||||
|
:alt: the manage pages section on the front-end
|
||||||
|
|
||||||
|
.. tip::
|
||||||
|
By grouping pages by URL in the page manager, you quickly find the original page behind
|
||||||
|
each edited page.
|
||||||
|
|
||||||
|
.. image:: publish/multi_website/multi_website10.png
|
||||||
|
:align: center
|
||||||
|
:alt: detailed look at the manage pages section
|
||||||
|
|
||||||
|
Multiple companies
|
||||||
|
------------------
|
||||||
|
|
||||||
|
If you are working in a multi-company environment, each website can be linked to a specific
|
||||||
|
company in your system.
|
||||||
|
|
||||||
|
To link each website to a specific company, go to
|
||||||
|
:menuselection:`Website application --> Configuration --> Settings` and select which company
|
||||||
|
you'd like to link to this website, located in the *Website* section.
|
||||||
|
|
||||||
|
.. image:: publish/multi_website/multi_website16.png
|
||||||
|
:align: center
|
||||||
|
:alt: choose which website to designate to a company
|
||||||
|
|
||||||
|
With such a configuration in place, only company-related data will appear on that website (products,
|
||||||
|
jobs, events, etc.).
|
||||||
|
|
||||||
|
Website editors can only view and edit pages of records they have access to, which is typically
|
||||||
|
only the ones that belong to their current company (and to their subsidiaries, or child companies
|
||||||
|
in Odoo language).
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
If websites are multi-companies, you don’t change the company when switching websites. To
|
||||||
|
change the company, and see the related content, use the company selector in the menu.
|
||||||
|
|
||||||
|
.. image:: publish/multi_website/different-company-drop-down.png
|
||||||
|
:align: center
|
||||||
|
:alt: company selector drop-down menu
|
||||||
|
|
||||||
|
Configure eCommerce website
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
eCommerce is a crucial feature for any online business, especially one with multiple websites. Odoo
|
||||||
|
allows users to customize the entire flow (and shopping experience) to cater to the specific
|
||||||
|
audience found on each website.
|
||||||
|
|
||||||
|
Products only available on one website
|
||||||
|
--------------------------------------
|
||||||
|
|
||||||
|
Above, you learned how to publish a specific record on only one website. The process is similar
|
||||||
|
for eCommerce products, as well.
|
||||||
|
|
||||||
|
Simply modify the *Website* field in the eCommerce tab of the product form. And remember, an
|
||||||
|
empty field means it will be available on all websites.
|
||||||
|
|
||||||
|
.. image:: publish/multi_website/multi-website-ecommerce-tab.png
|
||||||
|
:align: center
|
||||||
|
:alt: the ecommerce tab of a pricelist template
|
||||||
|
|
||||||
|
Products available on select websites
|
||||||
|
-------------------------------------
|
||||||
|
|
||||||
|
To make a product available on some websites, but not all of them, you can duplicate the product,
|
||||||
|
and assign it to each website you want it to appear on.
|
||||||
|
|
||||||
|
If you need a unique reference to manage in your inventory, you should install *Manufacturing*
|
||||||
|
and create *Kits* BoMs (Bills of Materials).
|
||||||
|
|
||||||
|
Each kit will link each published “virtual” product to the main reference managed in your inventory.
|
||||||
|
That way, any item sold from your website will be converted into the storable item in the delivery
|
||||||
|
order.
|
||||||
|
|
||||||
|
Pricelists
|
||||||
|
----------
|
||||||
|
|
||||||
|
To manage specific prices by website, go to :menuselection:`Website app --> Configuration -->
|
||||||
|
Settings` and activate *Pricelists* and *Multiple Prices per Product* in the *Pricing* section.
|
||||||
|
Then, hit *Save*.
|
||||||
|
|
||||||
|
.. image:: publish/multi_website/pricelists-setting.png
|
||||||
|
:align: center
|
||||||
|
:alt: specific pricelists setting
|
||||||
|
|
||||||
|
Following that, go to :menuselection:`Website --> Products --> Pricelists` to create additional
|
||||||
|
pricelists. Or you can click on *--> Pricelists* located beneath the *Pricelists* option in the
|
||||||
|
*Pricing* section of the *Website* settings.
|
||||||
|
|
||||||
|
.. image:: publish/multi_website/various-routes-to-pricelists.png
|
||||||
|
:align: center
|
||||||
|
:alt: various routes to get to the pricelists page
|
||||||
|
|
||||||
|
After clicking a pricelist you wish to modify, simply select a website in the *Website* field
|
||||||
|
(found in the *Configuration* tab of the pricelist detail form), and that pricelist becomes
|
||||||
|
exclusively available on that website only.
|
||||||
|
|
||||||
|
.. image:: publish/multi_website/multi-website-pricelist.png
|
||||||
|
:align: center
|
||||||
|
:alt: designate which website is linked to which pricelist
|
||||||
|
|
||||||
|
Leaving the field empty means this pricelist will be available on *all* websites, but it will
|
||||||
|
only be visible to customers if *Selectable* is activated in the pricelist detail form, as well.
|
||||||
|
|
||||||
|
Otherwise, it's only available for backend operations in the *Sales* and *Point of Sale*
|
||||||
|
applications.
|
||||||
|
|
||||||
|
Payment Acquirers and Delivery Methods
|
||||||
|
--------------------------------------
|
||||||
|
|
||||||
|
By default, published payment acquirers and delivery methods are deployed in all websites.
|
||||||
|
|
||||||
|
You could use specific payment acquirers per country (using Geo IP) by defining countries in their
|
||||||
|
configuration. Or, you can do it per website by filling in the *Website* field.
|
||||||
|
|
||||||
|
Customer accounts
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
You can choose how to manage your customer accounts in the settings of the *Website* application.
|
||||||
|
Go to :menuselection:`Website --> Configuration --> Settings` and select *Specific User Account*
|
||||||
|
in the *Website* section.
|
||||||
|
|
||||||
|
Activating this feature forces your user to create a specific account for each of your websites.
|
||||||
|
This comes in handy if your websites shouldn't be related to each other in the visitor's mind.
|
||||||
|
However, you can allow customers to use one account for all your websites, by simply
|
||||||
|
deactivating that feature.
|
||||||
|
|
||||||
|
.. image:: publish/multi_website/multi_website17.png
|
||||||
|
:align: center
|
||||||
|
:alt: specific user account in website settings
|
||||||
|
|
||||||
|
Technical hints for customization
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
If you want to publish custom objects on the website, here are a few tips to make it work with
|
||||||
|
multiple websites:
|
||||||
|
|
||||||
|
- **Sitemap**: don’t forget the domain in the route to only publish available records in each
|
||||||
|
website's sitemap.
|
||||||
|
|
||||||
|
- **Access**: you should call the method *can_access_from_current_website* in the controller to
|
||||||
|
make sure the visitor can see a record in the current website.
|
||||||
|
|
||||||
|
- **Search**: when a list of records is displayed, don’t forget to specify the domain to *only*
|
||||||
|
display records available for the current website.
|
||||||
|
|
||||||
|
.. image:: publish/multi_website/multi_website11.png
|
||||||
|
:align: center
|
||||||
|
:alt: coding language of technical customization
|
||||||
|
|
||||||
|
Geo IP installation (on-premises database)
|
||||||
|
==========================================
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
Please note that the installation depends on your computer's operating system and distribution.
|
||||||
|
In this instance, we will assume that a Linux operating system is being used.
|
||||||
|
|
||||||
|
First, install `geoip2 <https://pypi.org/project/geoip2/>`__ Python library
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
pip install geoip2
|
||||||
|
|
||||||
|
Following that, you need to download the
|
||||||
|
`GeoLite2 City database <https://dev.maxmind.com/geoip/geoip2/geolite2/>`_.
|
||||||
|
|
||||||
|
You will end up with a file called ``GeoLite2-City.mmdb``. Then, move the file to the folder
|
||||||
|
``/usr/share/GeoIP/``
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
mv ~/Downloads/GeoLite2-City.mmdb /usr/share/GeoIP/
|
||||||
|
|
||||||
|
At this point, you need to restart the server.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
If you can't/don't want to locate the GeoIP database in ``/usr/share/GeoIP/``, you can use the
|
||||||
|
``--geoip-db`` option of the Odoo command line interface. This option takes the absolute path to
|
||||||
|
the GeoIP database file, and uses it as the GeoIP database. For example:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
./odoo-bin --geoip-db= ~/Downloads/GeoLite2-City.mmdb
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
- `CLI documentation <https://www.odoo.com/documentation/14.0/reference/cmdline.html>`_.
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
``GeoIP`` Python library can also be used. However, this version is discontinued since January
|
||||||
|
2019. See `GeoLite Legacy databases are now discontinued
|
||||||
|
<https://support.maxmind.com/geolite-legacy-discontinuation-notice/>`_
|
||||||
|
|
||||||
|
Test GeoIP Geolocation on Odoo website
|
||||||
|
--------------------------------------
|
||||||
|
|
||||||
|
Go to your website, and open the web page you want to test ``GeoIP``. Then, select
|
||||||
|
:menuselection:`Customize --> HTML/CSS/JS Editor`, and add the following piece of XML in the page:
|
||||||
|
|
||||||
|
.. code-block:: xml
|
||||||
|
|
||||||
|
<h1 class="text-center" t-esc="request.session.get('geoip')"/>
|
||||||
|
|
||||||
|
That leaves you with a dictionary indicating the location of the IP address.
|
||||||
|
|
||||||
|
.. image:: publish/geo_ip_installation/on-premise_geo-ip-installation01.png
|
||||||
|
:align: center
|
||||||
|
:alt: on premise geo-ip installation
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
If the curly braces are empty ``{}``, it can be for any of the following reasons :
|
||||||
|
|
||||||
|
- The browsing IP address is the localhost (``127.0.0.1``) or a local area network one
|
||||||
|
(``192.168.*.*``)
|
||||||
|
- If a reversed proxy is used, make sure to configure it correctly. See `--proxy-mode
|
||||||
|
<https://www.odoo.com/documentation/14.0/reference/cmdline
|
||||||
|
.html#cmdoption-odoo-bin-proxy-mode>`__
|
||||||
|
- ``geoip2`` is not installed, or the GeoIP database file wasn't found
|
||||||
|
- The GeoIP database was unable to resolve the given IP address
|
||||||
|
@ -1,120 +0,0 @@
|
|||||||
=============================
|
|
||||||
How to use my own domain name
|
|
||||||
=============================
|
|
||||||
|
|
||||||
By default, your Odoo Online instance and website have a *.odoo.com* domain name,
|
|
||||||
for both the URL and the emails.
|
|
||||||
But you can change to a custom one (e.g. www.yourcompany.com).
|
|
||||||
|
|
||||||
What is a good domain name
|
|
||||||
==========================
|
|
||||||
Your website address is as important to your branding as the name of your
|
|
||||||
business or organization, so put some thought into changing it for a proper
|
|
||||||
domain. Here are some tips:
|
|
||||||
|
|
||||||
- Simple and obvious
|
|
||||||
- Easy to remember and spell
|
|
||||||
- The shorter the better
|
|
||||||
- Avoid special characters
|
|
||||||
- Aim for a .com and/or your country extension
|
|
||||||
|
|
||||||
Read more: `How to Choose a Domain Name for Maximum SEO <https://www.searchenginejournal.com/choose-a-domain-name-maximum-seo/158951/>`__
|
|
||||||
|
|
||||||
How to buy a domain name
|
|
||||||
========================
|
|
||||||
Buy your domain name at a popular registrar:
|
|
||||||
|
|
||||||
- `GoDaddy <https://www.godaddy.com>`__
|
|
||||||
- `Namecheap <https://www.namecheap.com>`__
|
|
||||||
- `OVH <https://www.ovh.com>`__
|
|
||||||
|
|
||||||
.. note:: Steps to buy a domain name are pretty much straight forward.
|
|
||||||
In case of issue, check out those easy tutorials:
|
|
||||||
|
|
||||||
- `GoDaddy <https://roadtoblogging.com/buy-domain-name-from-godaddy>`__
|
|
||||||
- `Namecheap <https://www.loudtips.com/buy-domain-name-hosting-namecheap//>`__
|
|
||||||
|
|
||||||
Feel free to buy an email server to have email addresses using your domain name.
|
|
||||||
However don't buy any extra service to create or host your website.
|
|
||||||
This is Odoo's job!
|
|
||||||
|
|
||||||
.. _custom_domain:
|
|
||||||
|
|
||||||
|
|
||||||
How to apply my domain name to my Odoo instance
|
|
||||||
===============================================
|
|
||||||
First let's authorize the redirection (yourcompany.com -> yourcompany.odoo.com):
|
|
||||||
|
|
||||||
* Open your Odoo.com account from your homepage.
|
|
||||||
|
|
||||||
.. image:: media/domain_name01.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
* Go to the *Manage Databases* page.
|
|
||||||
|
|
||||||
.. image:: media/domain_name02.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
* Click on *Domains* to the right of the database you would like to redirect.
|
|
||||||
|
|
||||||
.. image:: media/domain_name03.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
* A database domain prompt will appear. Enter your custom domain
|
|
||||||
(e.g. www.yourcompany.com).
|
|
||||||
|
|
||||||
|
|
||||||
.. image:: media/domain_name04.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
We can now apply the redirection from your domain name's manager account:
|
|
||||||
|
|
||||||
* Log in to your account and search for the DNS Zones management page.
|
|
||||||
|
|
||||||
* Create a CNAME record *www.yourdomain.com* pointing to *mywebsite.odoo.com*.
|
|
||||||
If you want to use the naked domain (e.g. yourdomain.com), you need to redirect
|
|
||||||
*yourdomain.com* to *www.yourdomain.com*.
|
|
||||||
|
|
||||||
.. note:: Here are some specific guidelines to create a CNAME record:
|
|
||||||
|
|
||||||
- `GoDaddy <https://be.godaddy.com/fr/help/add-a-cname-record-19236>`__
|
|
||||||
- `Namecheap <https://www.namecheap.com/support/knowledgebase/article.aspx/9646/10/how-can-i-set-up-a-cname-record-for-my-domain>`__
|
|
||||||
- `OVH <https://www.ovh.co.uk/g1519.exchange_20132016_how_to_add_a_cname_record>`__
|
|
||||||
|
|
||||||
How to enable SSL (HTTPS) for my Odoo instance
|
|
||||||
==============================================
|
|
||||||
|
|
||||||
Until recently, Odoo users needed to use a third-party CDN service provider such as CloudFlare to enable SSL.
|
|
||||||
|
|
||||||
It is not required anymore: Odoo generates the certificate for you automatically, using integration with `Let's Encrypt Certificate Authority and ACME protocol <https://letsencrypt.org/how-it-works/>`__.
|
|
||||||
In order to get this, simply add your domain name in your customer portal (a separate certificate is generated for each domain name specified).
|
|
||||||
|
|
||||||
.. warning::
|
|
||||||
**Please note that the certificate generation may take up to 24h.**
|
|
||||||
|
|
||||||
If you already use CloudFlare or a similar service, you can keep using it or simply change for Odoo. The choice is yours.
|
|
||||||
|
|
||||||
|
|
||||||
How to make sure that all my URLs use my custom domain?
|
|
||||||
=======================================================
|
|
||||||
|
|
||||||
To set up the root URL of your website and of all the links sent in emails, you can ask an administrator of your database (any user in the *Settings* group) to perform a login from the login screen. It's as simple as that!
|
|
||||||
|
|
||||||
If you want to do it manually, you can go to :menuselection:`Settings --> Technical --> System Parameters` .
|
|
||||||
Find the entry called ``web.base.url`` (you can create it if it does not exist) and enter the full URL of your website, like ``https://www.myodoowebsite.com``.
|
|
||||||
|
|
||||||
.. warning::
|
|
||||||
The URL must include the protocol (``https://`` or ``http://``) and must not end by a slash (``/``).
|
|
||||||
|
|
||||||
If you want to block the root URL update when an administrator logs in, you can add a System Parameter called ``web.base.url.freeze`` with its value set to ``True``.
|
|
||||||
|
|
||||||
|
|
||||||
My website is indexed twice by Google
|
|
||||||
=====================================
|
|
||||||
|
|
||||||
If you set up a custom domain *mydomain.com* name for *mydatabase.odoo.com*,
|
|
||||||
Google indexes your website under both names. This is a limitation of the Odoo cloud platforms/
|
|
||||||
|
|
||||||
.. seealso::
|
|
||||||
|
|
||||||
* :doc:`/applications/productivity/discuss/advanced/email_servers`
|
|
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 6.7 KiB |
After Width: | Height: | Size: 8.0 KiB |
After Width: | Height: | Size: 38 KiB |
After Width: | Height: | Size: 44 KiB |
After Width: | Height: | Size: 165 KiB |
After Width: | Height: | Size: 39 KiB |
After Width: | Height: | Size: 207 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 154 KiB |
After Width: | Height: | Size: 71 KiB |
After Width: | Height: | Size: 73 KiB |
After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 61 KiB |
Before Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 116 KiB |
Before Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 8.5 KiB |
Before Width: | Height: | Size: 228 KiB |
Before Width: | Height: | Size: 5.2 KiB |
Before Width: | Height: | Size: 7.5 KiB |
Before Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 5.9 KiB |
Before Width: | Height: | Size: 73 KiB |
Before Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 9.9 KiB |
Before Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 181 KiB |
Before Width: | Height: | Size: 274 KiB |
@ -1,308 +0,0 @@
|
|||||||
=====================
|
|
||||||
Manage Multi Websites
|
|
||||||
=====================
|
|
||||||
|
|
||||||
.. image:: media/multi_website04.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
Odoo’s Multi-Websites opens up broad possibilities of diversification and
|
|
||||||
customer segmentation for your business. A multiplied audience and
|
|
||||||
boosted revenue are now just a few clicks away!
|
|
||||||
|
|
||||||
Each website can work in a fully independent way, with its theme,
|
|
||||||
branding, domain name, header & footer, pages, languages, products, blog
|
|
||||||
posts, forum, slides, events, live chat channels, etc. Let’s go for a
|
|
||||||
tour!
|
|
||||||
|
|
||||||
Setup
|
|
||||||
=====
|
|
||||||
|
|
||||||
To create a new website, go to :menuselection:`Website --> Configuration --> Settings`.
|
|
||||||
The button, *Create a new website*, lays in the first section.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.. image:: media/multi_website05.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
In the upcoming prompt, set a name for your new website and a specific
|
|
||||||
domain name. Leave empty to publish the new website under the default
|
|
||||||
domain of your Odoo database. You can later set some country groups to
|
|
||||||
redirect visitors to it using Geo IP.
|
|
||||||
|
|
||||||
.. image:: media/multi_website01.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
Then, select a theme. This new website might have an entirely different
|
|
||||||
purpose or audience than the first one. So feel free to go for a
|
|
||||||
different theme!
|
|
||||||
|
|
||||||
Once the theme is selected, you can start to build the homepage of your
|
|
||||||
website. Follow the purple drops; they will help you in the first steps.
|
|
||||||
|
|
||||||
.. image:: media/multi_website08.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
If you run Odoo Online, don’t forget to redirect any new domain name to your Odoo database
|
|
||||||
(``CNAME``) and to authorize it Odoo-side. See :doc:`domain_name`.
|
|
||||||
|
|
||||||
Create the menu
|
|
||||||
===============
|
|
||||||
|
|
||||||
The new website has a default menu with all the installed applications.
|
|
||||||
To edit it, click :menuselection:`Pages --> Edit Menu`. Moving forward you only edit
|
|
||||||
the menu of the current website.
|
|
||||||
|
|
||||||
Switch from one website to another
|
|
||||||
==================================
|
|
||||||
|
|
||||||
|
|
||||||
As easy as ABC! There is a website switcher in the right corner of the
|
|
||||||
edit bar. Switching to another website will connect to the domain of
|
|
||||||
this website. If you use another domain for the website, the user is
|
|
||||||
requested to sign in.
|
|
||||||
|
|
||||||
.. image:: media/multi_website03.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
When switching, you are redirected to the same domain path on the other website
|
|
||||||
(e.g., ``/shop/myproduct``). If this URL is not used, you will be redirected to a 404 page but
|
|
||||||
prompted to create a new page from there.
|
|
||||||
|
|
||||||
Add features
|
|
||||||
============
|
|
||||||
|
|
||||||
The website apps you install (e.g., Slides, Blogs) are made available on
|
|
||||||
all your websites. You can, of course, keep them hidden in one website by
|
|
||||||
removing the menu item.
|
|
||||||
|
|
||||||
Each website comes with a high range of specific options in the
|
|
||||||
settings. First, select the website to configure.
|
|
||||||
|
|
||||||
.. image:: media/multi_website15.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
Then, take a look at the options flagged with the earth icon. It means
|
|
||||||
they only impact the very website you are working on.
|
|
||||||
|
|
||||||
.. image:: media/multi_website12.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
You can, for instance, set specific :
|
|
||||||
|
|
||||||
- languages,
|
|
||||||
|
|
||||||
- domain names,
|
|
||||||
|
|
||||||
- social media links,
|
|
||||||
|
|
||||||
- customer portal mode (B2C vs. B2B),
|
|
||||||
|
|
||||||
- dedicated live chat channels,
|
|
||||||
|
|
||||||
- etc.
|
|
||||||
|
|
||||||
The other options are global and apply to all your websites.
|
|
||||||
|
|
||||||
Manage domain names
|
|
||||||
===================
|
|
||||||
|
|
||||||
As said earlier, your websites can either share the same domain name or
|
|
||||||
use a specific one. If you share it and want to adapt the content per
|
|
||||||
region, set country groups in the setting of each website. Visitors will
|
|
||||||
be redirected to the right website using GeoIP.
|
|
||||||
|
|
||||||
.. image:: media/multi_website18.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
Geo IP is installed by default in Odoo Online. If you run Odoo
|
|
||||||
on-premise, don’t forget to install *GeoIP* library.
|
|
||||||
See :doc:`on-premise_geo-ip-installation`
|
|
||||||
|
|
||||||
.. seealso::
|
|
||||||
- :doc:`domain_name`
|
|
||||||
|
|
||||||
Customize the visitor experience
|
|
||||||
================================
|
|
||||||
|
|
||||||
|
|
||||||
The customer experience can be customized very profoundly thanks to the menu
|
|
||||||
\*Customize\*. All the visual options available there are specific to
|
|
||||||
each website. Go through the different pages to adapt them to this new
|
|
||||||
audience. Focus on workflows, and automatic pages (eCommerce checkout,
|
|
||||||
blogs, events, etc.) as the number of available options is higher there.
|
|
||||||
|
|
||||||
.. image:: media/multi_website14.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
Publish specific content per website
|
|
||||||
------------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
Like static pages, any content created from the front-end (product, blog
|
|
||||||
post, etc.) is always only published in the current website. You can
|
|
||||||
change that from the edit form view in the backend and leave the
|
|
||||||
*Website* field blank. This will publish it in all the websites.
|
|
||||||
|
|
||||||
.. image:: media/multi_website06.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
Here are all the objects that you can link to *either one or all the
|
|
||||||
websites*:
|
|
||||||
|
|
||||||
1. Products
|
|
||||||
|
|
||||||
2. Product Categories for eCommerce
|
|
||||||
|
|
||||||
3. Blogs
|
|
||||||
|
|
||||||
4. Slide Channels
|
|
||||||
|
|
||||||
5. Forums
|
|
||||||
|
|
||||||
6. Events
|
|
||||||
|
|
||||||
7. Job Positions
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
When you create the record from the backend and publish it,
|
|
||||||
typically a product or an event, it is made available in all websites.
|
|
||||||
|
|
||||||
Publish a page in all websites
|
|
||||||
------------------------------
|
|
||||||
|
|
||||||
A new static page is created and only made available in the current
|
|
||||||
website. You can duplicate it to other websites from
|
|
||||||
:menuselection:`Website --> Configuration --> Pages`. To do so, leave the *Website* field empty.
|
|
||||||
|
|
||||||
If you want to duplicate it in just one other website, duplicate the
|
|
||||||
page and set the new website.
|
|
||||||
|
|
||||||
.. image:: media/multi_website09.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
When you edit the page again, the change only affects the current
|
|
||||||
website. A new page is duplicated and tied up to the website.
|
|
||||||
The original page still being linked to all websites.
|
|
||||||
|
|
||||||
.. tip::
|
|
||||||
By grouping pages by URL in the page manager, you quickly find
|
|
||||||
the original page behind each edited page.
|
|
||||||
|
|
||||||
.. image:: media/multi_website10.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
Multi-companies
|
|
||||||
===============
|
|
||||||
|
|
||||||
Each website can be linked to a specific company of your system, in a
|
|
||||||
multi-companies environment.
|
|
||||||
|
|
||||||
.. image:: media/multi_website16.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
With such a configuration, only company-related data appear on the
|
|
||||||
website (products, jobs, events, etc.).
|
|
||||||
|
|
||||||
Website editors can only view and edit the pages of the records they
|
|
||||||
have access to, typically the ones belonging to their current company
|
|
||||||
(and to their subsidiaries, or child companies in Odoo language). And so
|
|
||||||
is it for visitors.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
If websites are multi-companies, you don’t change company when switching websites. To change the company and see the related content, use the company selector in the menu.
|
|
||||||
|
|
||||||
.. image:: media/multi_website02.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
Configure your eCommerce website
|
|
||||||
================================
|
|
||||||
|
|
||||||
eCommerce is a crucial feature in the multi-websites environment. We made it
|
|
||||||
so that the entire flow can be customized to fit the very audience of
|
|
||||||
each website.
|
|
||||||
|
|
||||||
Products only available on one website
|
|
||||||
--------------------------------------
|
|
||||||
|
|
||||||
We already saw earlier how to publish a specific record in only one
|
|
||||||
website. You will find the \*Website\* field in the eCommerce tab of the
|
|
||||||
product edit form. Empty means available in all websites.
|
|
||||||
|
|
||||||
.. image:: media/multi_website13.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
Products available on *some* websites
|
|
||||||
-------------------------------------
|
|
||||||
|
|
||||||
To make a product available on some websites, but not all of them, you
|
|
||||||
should duplicate the product for each website.
|
|
||||||
|
|
||||||
If you need a unique reference to manage in your inventory, you should
|
|
||||||
install *Manufacturing\ and create *Kits* BoMs (bills of materials).
|
|
||||||
Each kit will link each published “virtual” product to the main
|
|
||||||
reference managed in your inventory. That way, any item sold from your
|
|
||||||
website will be converted into the storable item in the delivery order.
|
|
||||||
|
|
||||||
Pricelists
|
|
||||||
----------
|
|
||||||
|
|
||||||
To manage specific prices by websites, you can activate *Multiple Sales
|
|
||||||
Prices per Product* in Website settings.
|
|
||||||
|
|
||||||
Then, go to :menuselection:`Website --> Products --> Pricelists` to create additional
|
|
||||||
pricelists. See :doc:`../../ecommerce/maximizing_revenue/pricing`.
|
|
||||||
|
|
||||||
If you need help. Select a website to make a pricelist only available on
|
|
||||||
this website.
|
|
||||||
|
|
||||||
.. image:: media/multi_website07.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
Leaving the field empty means that you make it work in all websites if
|
|
||||||
*Selectable* is selected. Otherwise, it makes it only available for
|
|
||||||
backend operations of Sales and Point of Sale applications.
|
|
||||||
|
|
||||||
Payment Acquirers and Delivery Methods
|
|
||||||
--------------------------------------
|
|
||||||
|
|
||||||
By default, published payment acquirers and delivery methods are deployed in all websites.
|
|
||||||
You could already use specific payment acquirers per country using Geo
|
|
||||||
IP by defining countries in their configuration. Now you can also do it
|
|
||||||
per website by filling in the *Website* field.
|
|
||||||
|
|
||||||
Customer accounts
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
There is a setting to choose how to manage customer accounts in Website
|
|
||||||
settings. You can either allow customers to use one account through all
|
|
||||||
the websites or compel them to create one account for each website. This
|
|
||||||
last option is convenient if your websites shouldn’t be related to each
|
|
||||||
other in the visitor mind.
|
|
||||||
|
|
||||||
.. image:: media/multi_website17.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
Technical hints for customization
|
|
||||||
=================================
|
|
||||||
|
|
||||||
If you want to publish custom objects on the website, here are a few
|
|
||||||
tips to make it work with multi websites:
|
|
||||||
|
|
||||||
- Sitemap: don’t forget the domain in the route to only publish
|
|
||||||
available records in each website’s sitemap.
|
|
||||||
|
|
||||||
- Access: you should call the method
|
|
||||||
*can_access_from_current_website* in the controller to make
|
|
||||||
sure the visitor can see a record in the current website.
|
|
||||||
|
|
||||||
- Search: when a list of records is displayed, don’t forget to specify
|
|
||||||
the domain to only display records available for the current
|
|
||||||
website.
|
|
||||||
|
|
||||||
.. image:: media/multi_website11.png
|
|
||||||
:align: center
|
|
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 60 KiB |
After Width: | Height: | Size: 4.8 KiB |
After Width: | Height: | Size: 8.0 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 94 KiB |
After Width: | Height: | Size: 66 KiB |
After Width: | Height: | Size: 64 KiB |