Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
85 changes: 85 additions & 0 deletions website_canonical_url/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3

=====================
Website Canonical URL
=====================

In Website Builder, eCommerce, Blog, etc. Odoo add parameters in URLs, like category,
page or sorting. This is a bad thing for SEO because it creates DUST (Duplicate URL,
Same Text) and Duplicate Content. That is to say, multiple URLs that leads to the same
page search engine's index.

This module doesn't prevent Odoo to generate such URLs, but it helps to reduce the
search engine's index size by adding canonical URLs for each page :
It insert a HTML tag in the html header
that contains a `canonical URL <https://support.google.com/webmasters/answer/139066>`_
for the current page, no matter what query string is.
Additionally you'll have `rel=next and rel=prev links
<https://webmasters.googleblog.com/2011/09/pagination-with-relnext-and-relprev.html>`_
whenever a pager is found.


Configuration
-------------

Canonical URL is absolute. The domain name by default matches

"Settings / Technical / System Parameters / web.base.url"

This might not be enough to make sure that you have always one and only one URL
to access your resources.

You can force the domain by setting "Canonical domain" field into website settings.


How to verify
-------------

To check this on your website inspect the source of a page:
you'll find canonical and prev/next "<link />" elements inside "<head />".

On a demo site (like Runbot) you can go to "/page/website_canonical_url.canonical_demo"
and inspect page's source.


.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
:alt: Try me on Runbot
:target: https://runbot.odoo-community.org/runbot/186/10.0


Bug Tracker
===========

Bugs are tracked on `GitHub Issues
<https://github.com/OCA/website/issues>`_. In case of trouble, please
check there if your issue has already been reported. If you spotted it first,
help us smashing it by providing a detailed and welcomed feedback.

Credits
=======

Contributors
------------

* Thomas Rehn <thomas.rehn@initos.com>
* Rami Alwafaie <rami.alwafaie@initos.com>
* Jairo Llopis <jairo.llopis@tecnativa.com>
* Xavier Brochard <zeroheure@zeroheure.info>
* Simone Orsi <simone.orsi@camptocamp.com>

Maintainer
----------

.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org

This module is maintained by the OCA.

OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

To contribute to this module, please visit https://odoo-community.org.
4 changes: 4 additions & 0 deletions website_canonical_url/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Copyright initOS GmbH 2016
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

from . import models
23 changes: 23 additions & 0 deletions website_canonical_url/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Copyright initOS GmbH 2016
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

{
'name': "Website Canonical URL",
'summary': "Canonical URL in Website Headers",
'author': "initOS GmbH, Tecnativa, "
"Camptocamp, Odoo Community Association (OCA)",
'website': "https://github.com/OCA/website",
'category': 'Website',
'version': '11.0.1.0.0',
'license': 'AGPL-3',
'depends': [
'website',
],
'data': [
'views/website_views.xml',
'templates/layout.xml',
],
'demo': [
'demo/pages.xml',
],
}
32 changes: 32 additions & 0 deletions website_canonical_url/demo/pages.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2018 Simone Orsi <simone.orsi@camptocamp.com>
Copyright 2016 Jairo Llopis <jairo.llopis@tecnativa.com>
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<odoo>

<template id="canonical_demo_view"
name="Canonical URL and pager demo">
<t t-call="website.layout">
<!-- Add a fake pager to test the rel=prev/next links -->
<t t-set="pager"
t-value="website.pager(request.httprequest.path, 100, 2, url_args=request.httprequest.args)"/>
<h1>Check source code to see pager and canonical URL.</h1>
</t>
</template>

<record id="canonical_demo_page" model="website.page">
<field name="website_published">True</field>
<field name="url">/canonical-demo</field>
<field name="view_id" ref="canonical_demo_view" />
</record>

<record id="canonical_demo_menu" model="website.menu">
<field name="name">Canonical URL demo</field>
<field name="url">/canonical-demo</field>
<field name="parent_id" ref="website.main_menu" />
<field name="sequence" type="int">50</field>
<field name="website_id" ref="website.default_website"/>
<field name="page_id" ref="canonical_demo_page" />
</record>

</odoo>
59 changes: 59 additions & 0 deletions website_canonical_url/i18n/af.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * website_canonical_url
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-11-25 01:52+0000\n"
"PO-Revision-Date: 2016-11-25 01:52+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2016\n"
"Language-Team: Afrikaans (https://www.transifex.com/oca/teams/23907/af/)\n"
"Language: af\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. module: website_canonical_url
#: model:ir.model.fields,field_description:website_canonical_url.field_website_canonical_domain
#: model:ir.model.fields,field_description:website_canonical_url.field_website_config_settings_canonical_domain
msgid "Canonical domain"
msgstr ""

#. module: website_canonical_url
#: model:ir.model.fields,help:website_canonical_url.field_website_canonical_domain
#: model:ir.model.fields,help:website_canonical_url.field_website_config_settings_canonical_domain
msgid ""
"Canonical domain is used to build unique canonical URLs to make SEO happy."
msgstr ""

#. module: website_canonical_url
#: code:addons/website_canonical_url/models/website.py:23
#, python-format
msgid "Canonical domain must contain protocol `http(s)://`"
msgstr ""

#. module: website_canonical_url
#: model:ir.ui.view,arch_db:website_canonical_url.canonical_demo
msgid "Check source code to see pager and canonical URL."
msgstr ""

#. module: website_canonical_url
#: model:ir.model,name:website_canonical_url.model_website
msgid "Website"
msgstr "Webtuiste"

#. module: website_canonical_url
#: model:ir.ui.view,arch_db:website_canonical_url.view_website_config_settings
#: model:ir.ui.view,arch_db:website_canonical_url.view_website_form
msgid "https://mydomain.com"
msgstr ""

#. module: website_canonical_url
#: model:ir.model,name:website_canonical_url.model_website_config_settings
msgid "website.config.settings"
msgstr ""
60 changes: 60 additions & 0 deletions website_canonical_url/i18n/ar.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * website_canonical_url
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-11-25 01:52+0000\n"
"PO-Revision-Date: 2016-11-25 01:52+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2016\n"
"Language-Team: Arabic (https://www.transifex.com/oca/teams/23907/ar/)\n"
"Language: ar\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"

#. module: website_canonical_url
#: model:ir.model.fields,field_description:website_canonical_url.field_website_canonical_domain
#: model:ir.model.fields,field_description:website_canonical_url.field_website_config_settings_canonical_domain
msgid "Canonical domain"
msgstr ""

#. module: website_canonical_url
#: model:ir.model.fields,help:website_canonical_url.field_website_canonical_domain
#: model:ir.model.fields,help:website_canonical_url.field_website_config_settings_canonical_domain
msgid ""
"Canonical domain is used to build unique canonical URLs to make SEO happy."
msgstr ""

#. module: website_canonical_url
#: code:addons/website_canonical_url/models/website.py:23
#, python-format
msgid "Canonical domain must contain protocol `http(s)://`"
msgstr ""

#. module: website_canonical_url
#: model:ir.ui.view,arch_db:website_canonical_url.canonical_demo
msgid "Check source code to see pager and canonical URL."
msgstr ""

#. module: website_canonical_url
#: model:ir.model,name:website_canonical_url.model_website
msgid "Website"
msgstr "الموقع"

#. module: website_canonical_url
#: model:ir.ui.view,arch_db:website_canonical_url.view_website_config_settings
#: model:ir.ui.view,arch_db:website_canonical_url.view_website_form
msgid "https://mydomain.com"
msgstr ""

#. module: website_canonical_url
#: model:ir.model,name:website_canonical_url.model_website_config_settings
msgid "website.config.settings"
msgstr ""
59 changes: 59 additions & 0 deletions website_canonical_url/i18n/bg.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * website_canonical_url
#
# Translators:
# Kaloyan Naumov <kaloyan@lumnus.net>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-11-25 01:52+0000\n"
"PO-Revision-Date: 2016-11-25 01:52+0000\n"
"Last-Translator: Kaloyan Naumov <kaloyan@lumnus.net>, 2016\n"
"Language-Team: Bulgarian (https://www.transifex.com/oca/teams/23907/bg/)\n"
"Language: bg\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. module: website_canonical_url
#: model:ir.model.fields,field_description:website_canonical_url.field_website_canonical_domain
#: model:ir.model.fields,field_description:website_canonical_url.field_website_config_settings_canonical_domain
msgid "Canonical domain"
msgstr ""

#. module: website_canonical_url
#: model:ir.model.fields,help:website_canonical_url.field_website_canonical_domain
#: model:ir.model.fields,help:website_canonical_url.field_website_config_settings_canonical_domain
msgid ""
"Canonical domain is used to build unique canonical URLs to make SEO happy."
msgstr ""

#. module: website_canonical_url
#: code:addons/website_canonical_url/models/website.py:23
#, python-format
msgid "Canonical domain must contain protocol `http(s)://`"
msgstr ""

#. module: website_canonical_url
#: model:ir.ui.view,arch_db:website_canonical_url.canonical_demo
msgid "Check source code to see pager and canonical URL."
msgstr ""

#. module: website_canonical_url
#: model:ir.model,name:website_canonical_url.model_website
msgid "Website"
msgstr "Уебсайт"

#. module: website_canonical_url
#: model:ir.ui.view,arch_db:website_canonical_url.view_website_config_settings
#: model:ir.ui.view,arch_db:website_canonical_url.view_website_form
msgid "https://mydomain.com"
msgstr ""

#. module: website_canonical_url
#: model:ir.model,name:website_canonical_url.model_website_config_settings
msgid "website.config.settings"
msgstr ""
60 changes: 60 additions & 0 deletions website_canonical_url/i18n/bs.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * website_canonical_url
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-11-25 01:52+0000\n"
"PO-Revision-Date: 2016-11-25 01:52+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2016\n"
"Language-Team: Bosnian (https://www.transifex.com/oca/teams/23907/bs/)\n"
"Language: bs\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"

#. module: website_canonical_url
#: model:ir.model.fields,field_description:website_canonical_url.field_website_canonical_domain
#: model:ir.model.fields,field_description:website_canonical_url.field_website_config_settings_canonical_domain
msgid "Canonical domain"
msgstr ""

#. module: website_canonical_url
#: model:ir.model.fields,help:website_canonical_url.field_website_canonical_domain
#: model:ir.model.fields,help:website_canonical_url.field_website_config_settings_canonical_domain
msgid ""
"Canonical domain is used to build unique canonical URLs to make SEO happy."
msgstr ""

#. module: website_canonical_url
#: code:addons/website_canonical_url/models/website.py:23
#, python-format
msgid "Canonical domain must contain protocol `http(s)://`"
msgstr ""

#. module: website_canonical_url
#: model:ir.ui.view,arch_db:website_canonical_url.canonical_demo
msgid "Check source code to see pager and canonical URL."
msgstr ""

#. module: website_canonical_url
#: model:ir.model,name:website_canonical_url.model_website
msgid "Website"
msgstr "Web stranica"

#. module: website_canonical_url
#: model:ir.ui.view,arch_db:website_canonical_url.view_website_config_settings
#: model:ir.ui.view,arch_db:website_canonical_url.view_website_form
msgid "https://mydomain.com"
msgstr ""

#. module: website_canonical_url
#: model:ir.model,name:website_canonical_url.model_website_config_settings
msgid "website.config.settings"
msgstr ""
Loading