[FIX] website.layout hreflangs

- First line is not correct due to url_for() refactoring's leftover
- href's should be full urls with domain name
- Use short language for hreflang if possible
This commit is contained in:
Fabien Meghazi 2014-08-22 08:30:29 +02:00
parent c27bd90bfc
commit 18068a5e79
2 changed files with 28 additions and 5 deletions

View File

@ -233,7 +233,31 @@ class website(osv.osv):
return [(lg.code, lg.name) for lg in website.language_ids]
def get_languages(self, cr, uid, ids, context=None):
return self._get_languages(cr, uid, ids[0])
return self._get_languages(cr, uid, ids[0], context=context)
def get_alternate_languages(self, cr, uid, ids, req=None, context=None):
langs = []
if req is None:
req = request.httprequest
default = self.get_current_website(cr, uid, context=context).default_lang_code
uri = req.path
if req.query_string:
uri += '?' + req.query_string
shorts = []
for code, name in self.get_languages(cr, uid, ids, context=context):
lg_path = ('/' + code) if code != default else ''
lg = code.split('_')
shorts.append(lg[0])
lang = {
'hreflang': ('-'.join(lg)).lower(),
'short': lg[0],
'href': req.url_root[0:-1] + lg_path + uri,
}
langs.append(lang)
for lang in langs:
if shorts.count(lang['short']) == 1:
lang['hreflang'] = lang['short']
return langs
def get_current_website(self, cr, uid, context=None):
# TODO: Select website, currently hard coded

View File

@ -83,10 +83,9 @@
<title><t t-esc="title"/></title>
<t t-set="languages" t-value="website.get_languages() if website else None"/>
<t t-if="request and request.website_multilang">
<t t-foreach="languages" t-as="lg">
<t t-set="force_lang" t-value="lg[0] if website and lg[0] != website.default_lang_code else None"/>
<link rel="alternate" t-att-href="url_for(request.httprequest.path + '?' + keep_query(), lang=force_lang)" t-att-hreflang="lg[0].replace('_', '-').lower()" />
<t t-if="request and request.website_multilang and website">
<t t-foreach="website.get_alternate_languages(request.httprequest)" t-as="lang">
<link rel="alternate" t-att-hreflang="lang['hreflang']" t-att-href="lang['href']"/>
</t>
</t>