我使用类'website.seo.metadata'扩展我的模型。
在添加的模型中提交的无索引:
class service(models.Model):
_name = 'pr_filials.service'
_inherit = ['mail.thread', 'website.seo.metadata', 'website.published.mixin']
name = fields.Char(string="Name", required=True)
noindex = fields.Boolean(string="Noindex", default=False)
....
在模板中,我使用的是这样的视图:
<template id="assets_frontend_noindex" inherit_id="website.assets_frontend" name="Noindex">
<xpath expr="." position="inside">
<t t-if="main_object and 'noindex' in main_object">
<t t-if="main_object.index">
<meta name="robots" content="noindex" />
</t>
</t>
</xpath>
</template>
但是模板看不到字段noindex
我也尝试扩展class website.seo.metadata。什么都没改变。
在标题中提供以下信息:
<html lang="ru-RU" data-website-id="1" data-editable="1" data-view-xmlid="882" data-main-object="pr_filials.service(13,)" data-oe-company-name="SiteName">
如果我尝试连接名称字段,则一切正常-显示其中的数据。
如何从标题的 noindex 字段中获取数据?
更新: 我扩展了 ir.ui.view :
class view(osv.osv):
_name = "ir.ui.view"
_inherit = "ir.ui.view"
_columns = {
'noindex': fields.boolean("Noindex"),
}
在类服务中添加了以下代码:
@api.onchange('noindex')
def _set_noindex(self):
self.website_meta_noindex = self.noindex
url = u'/uslugi/' + self.url_name
_logger.warning('URL: %s', url)
self.write_to_ui_view(url=url, noindex=self.noindex)
def write_to_ui_view(self, cr, uid, url, noindex=False, ispage=True, template='pr_filials.servicepage', context=None):
_logger.error('write_to_ui_view')
context = context or {}
imd = self.pool.get('ir.model.data')
view = self.pool.get('ir.ui.view')
template_module, template_name = template.split('.')
# completely arbitrary max_length
page_name = url
page_xmlid = "%s.%s" % (template_module, page_name)
_, template_id = imd.get_object_reference(cr, uid, template_module, template_name)
website_id = context.get('website_id')
key = template_module+'.'+page_name
page_id = None
if view.search(cr, openerp.SUPERUSER_ID, [('key', '=', key)]):
page_id = view.search(cr, openerp.SUPERUSER_ID, [('key', '=', key)])[0]
else:
page_id = view.copy(cr, uid, template_id, {'website_id': website_id, 'key': key}, context=context)
page = view.browse(cr, uid, page_id, context=dict(context, lang=None))
page.write({
'arch': page.arch.replace(template, page_xmlid),
'name': page_name,
'page': ispage,
'noindex': noindex
})
return page_xmlid
现在,我可以使用main_Object中的noindex了。但是每次返回False。在DB中显示True,但提交noindex返回False ...
我尝试检查页面上的noindex值。为此,我在标头中添加了元标记,并将noindex转换为字符串:
<meta name="RB" content="noindex" ><t t-raw="str(main_object.noindex)"/></meta>
答案 0 :(得分:0)
保持简单...
我使用qweb模板保留它:
<template id="layout" inherit_id="website.layout">
<xpath expr="html/head" position="inside">
<t t-if="page_data.noindex">
<meta name="robots" content="noindex" />
</t>
</xpath>
</template>
<template id="servicepage">
<t t-call="pr_filials.layout">...</t>
</template>
我不需要任何修改过的类。