contaobayern / contao-member-contact-settings

Contao开源内容管理系统会员联系方式设置扩展

1.1.0 2018-01-21 12:33 UTC

This package is auto-updated.

Last update: 2024-09-18 16:11:18 UTC


README

Contao开源内容管理系统会员联系方式设置扩展

概述

本模块通过添加控制注册前端用户允许的联系方式设置的字段,增强了核心模块RegistrationMemberData

通过Composer安装

搜索包contaobayern/contao-member-contact-settings,并按常规安装。对于Contao 4.4.x版本,请使用Contao Manager安装扩展。

手动安装

  1. 从GitHub仓库下载文件。将文件夹重命名为member-contact-settings,并保存到system/modules下。
  2. 更新您的数据库并清除内部缓存。

请注意

本模块的JavaScript不支持表格布局(即在模块定义中未勾选“无表格布局”)。这仅适用于Contao 3,因为Contao 4仅包含无表格布局的模板。因此,如果您想使用此扩展与表格布局一起使用,必须在注册和个人数据前端模块中取消选中“使用JavaScript控制字段依赖性”选项。

设置

前端模块(注册和会员数据)的设置相同

  1. 创建一个类型为“注册”或“会员数据”的新前端模块。
  2. 按常规定义表单。
  3. 使用新字段,您可以添加依赖项。例如,如果您添加“contactPhone”,则当用户勾选“contactPhone”时,“phone”字段将变为必填项。以下列出所有依赖项。
  4. 按您的意愿排序字段。将依赖字段直接放置在依赖它们的字段下方是有意义的。
  5. 默认情况下,字段依赖性通过客户端JavaScript(页面布局中必须启用jQuery)进行控制。如果您不想使用JavaScript设置必填状态,可以取消选中相应的选项。
  6. 使用“切换依赖字段可见性”选项,您可以选择在它们不是必填项时隐藏依赖字段(仅当启用JavaScript时可用)。

在tl_member中的新字段和依赖项

添加自己的依赖项

依赖项在tl_member DCA中定义。对于具有依赖项的每个字段,其eval数组中都有一个新条目dependents

$GLOBALS['TL_DCA']['tl_member']['fields']['contactLetter'] = [
    // ...
    'eval' => [
        // ...
        'dependents' => [
            'mandatory' => ['street', 'postal', 'city', 'country'],
            'visibility' => ['street', 'postal', 'city', 'country'],
        ],
        // ...
    ]
]

数组mandatory包含在父字段被勾选时应设置为必填的字段名称。数组visibility包含根据父字段应显示或隐藏的字段名称。

您可以在system\config\dcaconfig.php文件中添加或修改依赖项。

例如,如果您想将state添加到contactLetter的依赖项中,可以将以下代码添加到system\config\dcaconfig.php

$GLOBALS['TL_DCA']['tl_member']['fields']['contactLetter']['eval']['dependents']['mandatory'][] = 'state';
$GLOBALS['TL_DCA']['tl_member']['fields']['contactLetter']['eval']['dependents']['visibility'][] = 'state';

您还可以在需要的地方创建自己的字段的新依赖项。

$GLOBALS['TL_DCA']['tl_member']['fields']['myCheckbox']['eval']['dependents'] = [
    'mandatory' => ['fieldA', 'fieldB', 'fieldC'],
    'visibility' => ['fieldA', 'fieldB', 'fieldC'],
];

注意:默认为必填的字段不应放入任何依赖项列表中。否则,其必填状态将由父字段控制,这是不希望发生的,因为该字段始终应该是必填的。