内置模块
Website_form 基础模块,实现了采集信息,发送Email
Website_crm 使用采集的信息创建 线索 crm.lead
Website_form_project 使用采集的信息创建项目任务 project.task
Website_sale 使用采集的信息创建 客户
Website_hr_recruitment 使用采集的信息创建 应聘
后端
为了让 model 支持 website form,需要为 model 和相关字段 fields 增加 信息
Model ir.model
例如,为 mail 增加
<record id="mail.model_mail_mail" model="ir.model">
<field name="website_form_key">send_mail</field>
<field name="website_form_default_field_id" ref="mail.field_mail_mail__body_html" />
<field name="website_form_access">True</field>
<field name="website_form_label">Send an E-mail</field>
</record>
Fields ir.model.fields
例如,将需要在 form使用的 mail 字段 加入 白名单
<function model="ir.model.fields" name="formbuilder_whitelist">
<value>mail.mail</value>
<value eval="[
'subject',
'body_html',
'email_to',
'email_from',
'record_name',
'attachment_ids',
]"/>
</function>
前端
为了在 website 显示 发送邮件表单, 需要在 表单编辑器注册表 登记相关字段
FormEditorRegistry.add('send_mail', {
formFields: [{
type: 'char',
custom: true,
required: true,
name: 'Your Name',
}, {
type: 'tel',
custom: true,
name: 'Phone Number',
}, {
type: 'email',
modelRequired: true,
name: 'email_from',
string: 'Your Email',
}, {
type: 'char',
custom: true,
name: 'Your Company',
}, {
type: 'char',
modelRequired: true,
name: 'subject',
string: 'Subject',
}, {
type: 'text',
custom: true,
required: true,
name: 'Your Question',
}],
fields: [{
name: 'email_to',
type: 'char',
required: true,
string: _t('Recipient Email'),
defaultValue: 'info@yourcompany.example.com',
}],
});
FAQ:
- Q:登记在自定义字段的数据存在哪里?
A:保存在 website_form_default_field_id 所指定的默认字段
- Q:固定植字段
A: 例如, Recipient Email 字段 在 FormEditorRegistry 登记为 fields
Q:如何让自定义页面,可以拖入 block
A: 在 模块放置 一个空的 div,名为 <div class="oe_structure" />