[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:
parent
c27bd90bfc
commit
18068a5e79
|
@ -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
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
Loading…
Reference in New Issue