diff --git a/website/optimize/media/seo02.png b/website/optimize/media/seo02.png index 44e0c2ad7..f0c5b7dce 100644 Binary files a/website/optimize/media/seo02.png and b/website/optimize/media/seo02.png differ diff --git a/website/optimize/media/seo03.png b/website/optimize/media/seo03.png index 61a4e8a8d..8bf0fd2e5 100644 Binary files a/website/optimize/media/seo03.png and b/website/optimize/media/seo03.png differ diff --git a/website/optimize/media/seo04.png b/website/optimize/media/seo04.png index a04c95455..034498fa0 100644 Binary files a/website/optimize/media/seo04.png and b/website/optimize/media/seo04.png differ diff --git a/website/optimize/media/seo05.png b/website/optimize/media/seo05.png index b05f1d99c..564ace262 100644 Binary files a/website/optimize/media/seo05.png and b/website/optimize/media/seo05.png differ diff --git a/website/optimize/media/seo06.png b/website/optimize/media/seo06.png index 477ead319..b3e14be7d 100644 Binary files a/website/optimize/media/seo06.png and b/website/optimize/media/seo06.png differ diff --git a/website/optimize/media/seo10.png b/website/optimize/media/seo10.png index 23bb053ce..664314e45 100644 Binary files a/website/optimize/media/seo10.png and b/website/optimize/media/seo10.png differ diff --git a/website/optimize/media/seo11.png b/website/optimize/media/seo11.png deleted file mode 100644 index 760e6ec92..000000000 Binary files a/website/optimize/media/seo11.png and /dev/null differ diff --git a/website/optimize/seo.rst b/website/optimize/seo.rst index 7cb675a87..4697ec976 100644 --- a/website/optimize/seo.rst +++ b/website/optimize/seo.rst @@ -13,22 +13,20 @@ Some examples of SEO rules: your web pages should load faster, your page should have one and only one title ``

``, your website should have a ``/sitemap.xml`` file, etc. -The Odoo Website Builder is probably the most SEO-ready CMS out there. -We consider SEO a top priority. To guarantee Odoo Website and Odoo +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. -Page speed +Page Speed ========== Introduction ------------ -The time to load a page is an important criteria for Google. A faster -website not only improves your visitor's experience, but Google gives -you a better page ranking if your page loads faster than your -competitors. Some studies have shown that, if you divide the time to +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 @@ -45,11 +43,11 @@ your website ranks using these two tools: - `Pingdom Website Speed Test `__ -Static resources: CSS +Static Resources: CSS --------------------- All CSS files are pre-processed, concatenated, minified, compressed and -cached (server side and browser side). The result: +cached (server-side and browser-side). The result: - only one CSS file request is needed to load a page @@ -59,13 +57,29 @@ cached (server side and browser side). The result: - this CSS file is optimized to be small -**Pre-processed:** The CSS framework used by Odoo 9 is bootstrap 3. +**Pre-processed:** The CSS framework used by Odoo is Bootstrap. Although a theme might use another framework, most of `Odoo themes `__ extend and customize -bootstrap directly. Since Odoo supports Less and Sass, so you can modify -CSS rules, instead of overwriting them through extra CSS lines, +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 ** **What the visitor gets (only one file)** ================================= ============================================= @@ -81,22 +95,6 @@ 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, blog, theme, 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 that are 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! - 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 @@ -108,8 +106,8 @@ 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 - 8. But most themes fit below this limit. + 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. @@ -126,40 +124,35 @@ CSS is minified to reduce its size. The final result is then compressed, before being delivered to the browser. -Then, a cached version is stored on the server side (so we do not have -to pre-process, concatenate, minify at every request) and the browser -side (so the same visitor will load the CSS only once for all pages he -will visit). +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). -.. note:: - If you are in debug mode, the CSS resources are neither - concatenated nor minified. That way, it's easier to debug (but it's much - slower) - -Static resources: Javascript +Static Resources: Javascript ---------------------------- As with CSS resources, Javascript resources are also concatenated, -minified, compressed and cached (server side and browser side). +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, …) + effects, form validation, etc.) - One for common Javascript code shared among frontend and backend - (bootstrap) + (Bootstrap) - One for backend specific Javascript code (Odoo Web Client interface for your employees using Odoo) -Most visitors to your website will only need the first two bundles, +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 in debug mode, the CSS and javascript are neither + If you work in debug 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. @@ -167,9 +160,9 @@ same visitor will not load any other Javascript resource. Images ------ -When you upload new images using the website builder, Odoo automatically -compresses them to reduce their sizes. (lossless compression for .PNG -and .GIF and lossy compression for .JPG) +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 @@ -236,7 +229,7 @@ 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. +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 @@ -252,21 +245,17 @@ code: Responsive Design ----------------- -As of 2015, websites that are not mobile-friendly are negatively -impacted in Google Page ranking. All Odoo themes rely on Bootstrap 3 to -render efficiently according to the device: desktop, tablet or mobile -phone. +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/seo08.png :align: center As all Odoo modules share the same technology, absolutely all pages in -your website are mobile friendly. (as opposed to traditional CMS which -have mobile friendly themes, but some specific modules or pages are not -designed to be mobile friendly as they all have their own CSS -frameworks) +your website are mobile friendly. -Browser caching +Browser Caching --------------- Javascript, images and CSS resources have an URL that changes @@ -287,19 +276,17 @@ Scalability ----------- In addition to being fast, Odoo is also more scalable than traditional -CMS' and eCommerce (Drupal, Wordpress, Magento, Prestashop). The +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. +eCommerce compared to Odoo when it comes to high query volumes: +`*https://www.odoo.com/slides/slide/197* `__ -- `*https://www.odoo.com/slides/slide/197* `__ - -Here is the slide that summarizes the scalability of Odoo eCommerce and -Odoo CMS. (based on Odoo version 8, Odoo 9 is even faster) +Here is the slide that summarizes the scalability of Odoo Website & eCommerce. .. image:: media/seo09.png :align: center -URLs handling +URLs Handling ============= URLs Structure @@ -307,7 +294,7 @@ URLs Structure A typical Odoo URL will look like this: -https://www.mysite.com/fr\_FR/shop/product/my-great-product-31 +- https://www.mysite.com/fr\_FR/shop/product/my-great-product-31 With the following components: @@ -315,23 +302,21 @@ With the following components: - **www.mysite.com** = your domain name -- **/fr\_FR** = the language of the page. This part of the URL is +- **/fr\_FR** = page language. This part of the URL is removed if the visitor browses the main language of the website - (english by default, but you can set another language as the main - one). Thus, the English version of this page is: + 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). This name can not be customized to avoid conflicts - in different URLs. + 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) + product category, etc.). - **-31** = the unique ID of the product @@ -345,32 +330,23 @@ an example, the following URLs all do a 301 redirect to the above URL: - http://mysite.com/fr\_FR/shop/product/other-product-name-31 (old product name) -This could be useful to easily get shorter version of an URL and handle -efficiently 301 redirects when the name of your product changes over -time. - Some URLs have several dynamic parts, like this one (a blog category and -a post): +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 +- *Company News* is the title of the blog -- The Odoo Story: is the title of a specific blog post +- *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: +by search engines. Example: - https://www.odoo.com/blog/page/3 -.. note:: - Having the language code as fr\_FR is not perfect in terms of SEO. - Although most search engines treat now "\_" as a word separator, it has - not always been the case. We plan to improve that for Odoo 10. - Changes in URLs & Titles ------------------------ @@ -392,32 +368,30 @@ Will automatically redirect to : 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 works for links coming from external website. (with a 301 -redirect to not lose the SEO link juice) +old link still works for links coming from external websites, with a 301 +redirect to not lose the SEO link juice. HTTPS ----- -As of August 2014, Google started to add a ranking boost to secure -HTTPS/SSL websites. So, by default all Odoo Online instances are fully +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 +Links: Nofollow Strategy ------------------------ -Having website that links to your own page plays an important role on -how your page ranks in the different search engines. The more your page -is linked from external and quality websites, the better is it for your -SEO. +The more a page is linked from external and quality websites, +the better it is for your SEO. -Odoo follows the following strategies to manage links: +Here are Odoo strategies to manage links: -- Every link you create manually when creating page in Odoo is +- 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 created by a contributor (forum post, blog comment, ...) +- 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 @@ -426,19 +400,19 @@ Odoo follows the following strategies to manage links: 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 a + can be trusted. In such case, their links will not have any ``rel="nofollow"`` attribute. -Multi-language support +Multi-Language Support ====================== -Multi-language URLs +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 (English version = default) +- 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) @@ -446,38 +420,36 @@ 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 +Language Annotation ------------------- -To tell Google that the second URL is the French translation of the +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 - section of the English version, Odoo automatically adds a link -element pointing to the other versions of that webpage; + section of the main version, Odoo automatically adds a link +element pointing to the translated versions of that webpage; - With this approach: -- Google knows the different translated versions of your page and will - propose the right one according to the language of the visitor - searching on Google +- Search engines will redirect to th right language according to the + visitor language. -- You do not get penalized by Google if your page is not translated - yet, since it is not a duplicated content, but a different +- 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 +Language Detection ------------------ -When a visitor lands for the first time at your website (e.g. -yourwebsite.com/shop), his may automatically be redirected to a -translated version according to his browser language preference: (e.g. -yourwebsite.com/fr\_FR/shop). +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). -Odoo redirects visitors to their prefered language only the first time -visitors land at your website. After that, it keeps a cookie of the -current language to avoid any redirection. +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: @@ -494,38 +466,25 @@ Titles, Keywords and Description Every web page should define the ````, ``<description>`` and ``<keywords>`` meta data. These information elements are used by search engines to rank and categorize your website according to a specific search query. So, it -is important to have titles and keywords in line with what people search -in Google. +is important to have titles and keywords in line with what people seek. -In order to write quality meta tags, that will boost traffic to your -website, Odoo provides a **Promote** tool, in the top bar of the website -builder. This tool will contact Google to give you information about -your keywords and do the matching with titles and contents in your page. +In order to write quality content and boost your traffic, Odoo provides +a keyword finder. For each keyword, you see how it is used through 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/seo10.png :align: center .. note:: If your website is in multiple languages, you can use the Promote - tool for every language of a single page; - -In terms of SEO, content is king. Thus, blogs play an important role in -your content strategy. In order to help you optimize all your blog post, -Odoo provides a page that allows you to quickly scan the meta tags of -all your blog posts. - -.. image:: media/seo11.png - :align: center - -.. note:: - This /blog page renders differently for public visitors that are - not logged in as website administrator. They do not get the warnings and - keyword information. + tool for every language of a single page. Sitemap ------- -Odoo will generate a ``/sitemap.xml`` file automatically for you. For +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 @@ -541,20 +500,20 @@ Every sitemap entry has 4 attributes that are computed automatically: - ``<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 + 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) + 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 to understand your content and +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: @@ -572,18 +531,28 @@ and rating of a product: robots.txt ---------- -Odoo automatically creates a ``/robots.txt`` file for your website. Its -content is: +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 -Content is king +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 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. + +Content is King =============== When it comes to SEO, content is usually king. Odoo provides several -modules to help you build your contents on your website: +modules to help you build your website contents: - **Odoo Slides**: publish all your Powerpoint or PDF presentations. Their content is automatically indexed on the web page. Example: @@ -603,23 +572,41 @@ modules to help you build your contents on your website: .. 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. + the top content of your website when visitors get lost in invalid URLs. Social Features =============== -Twitter Cards -------------- +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 does not implement twitter cards yet. It will be done for the next -version. +Odoo embeds several tools to share content through social media: Social Network -------------- -Odoo allows to link all your social network accounts in your website. -All you have to do is to refer all your accounts in the **Settings** menu of -the **Website Admin** application. +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. + +Social Share +------------ + +Drop the building block *Share* on any page you want your visitors to share. + +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 =================