esign / craft3-fields
CraftCMS的地址、电话和电子邮件字段
Requires
- commerceguys/addressing: ^1.0
- craftcms/cms: ^4.0.0
- embed/embed: ^4.0
- giggsey/libphonenumber-for-php: ^8.3
- nyholm/psr7: ^1.2
This package is not auto-updated.
Last update: 2024-09-26 14:55:20 UTC
README
安装
打开命令行控制台,进入您的项目目录,并执行以下命令以下载此插件的最新稳定版本
$ composer require newism/craft-fields && ./craft plugin/install nsm-fields
配置
将API密钥添加到您的环境中,并在插件设置中设置。请参阅:https://craftcms.com/docs/3.x/config/#environmental-configuration
或者...
将src/config.php
复制到CRAFT_CONFIG_PATH
,并将文件重命名为nsm-fields.php
。
字段
地址
地址字段由Google的dataset提供支持 (commerceguys/addressing)。
功能
- 由Google Place API提供支持的自动完成
- 由Google Maps Javascript API和Google Maps Geocoding API提供支持的地图
- 基于国家的地址表单格式化由commerceguys/addressing提供支持
- 提交时的验证/地理编码(待办事项)
模板标签
normalizeValue
方法始终返回一个AddressModel
。所有公共属性都是可用的
假设entry.address
是您的字段...
See: https://github.com/commerceguys/addressing/blob/master/src/AddressInterface.php
{{ entry.address.countryCode }}
{{ entry.address.administrativeArea }}
{{ entry.address.locality }}
{{ entry.address.dependentLocality }}
{{ entry.address.postalCode }}
{{ entry.address.sortingCode }}
{{ entry.address.addressLine1 }}
{{ entry.address.addressLine2 }}
{{ entry.address.organization }}
{{ entry.address.recipient }}
{{ entry.address.locale }}
See: https://github.com/commerceguys/addressing/blob/master/src/Country/Country.php
{{ entry.address.country.countryCode }}
{{ entry.address.country.name }}
{{ entry.address.country.threeLetterCode }}
{{ entry.address.country.numericCode }}
{{ entry.address.country.currencyCode }}
{{ entry.address.country.locale }}
{{ entry.address.placeData }}
{{ entry.address.latitude }}
{{ entry.address.longitude }}
{{ entry.address.mapUrl }}
电话
电话字段由Googles phone number library通过giggsey/libphonenumber-for-php实现
功能
- 根据国家代码验证电话号码
- 将电话号码格式化为E164、国际、国家或RFC3966
- 存储电话模型和原始用户输入
模板标签
假设entry.telephone
是您的字段...
{{ entry.telephone }}
以国际格式输出电话号码。
您还可以选择特定的格式
{{ entry.telephone.format('E164') }}
{{ entry.telephone.format('international') }}
{{ entry.telephone.format('national') }}
{{ entry.telephone.format('RFC3966') }}
用户的原始输入也是可用的
{{ entry.telephone.rawInput }}
电子邮件
功能
- 使用Yii验证进行电子邮件验证
嵌入
功能
- 直接从URL嵌入社交媒体帖子/媒体
- 实时预览
模板标签
假设entry.embedField
是您的字段...
{{ entry.embedField.embedData }}
输出返回的嵌入对象。{{ entry.embedField.embedData.code | raw }}
输出返回的嵌入javascript代码。
附加数据
{{ entry.embedField.embedData.authorName }} // The resource author
{{ entry.embedField.embedData.authorUrl }} // The author url
{{ entry.embedField.embedData.cms }} // The cms used
{{ entry.embedField.embedData.code.html }} // The code to embed the image, video, etc
{{ entry.embedField.embedData.code.width }} // The exact width of the embed code (if exists)
{{ entry.embedField.embedData.code.height }} // The exact height of the embed code (if exists)
{{ entry.embedField.embedData.code.aspectRatio }} // The aspect ratio (width/height)
{{ entry.embedField.embedData.description }} //The page description
{{ entry.embedField.embedData.favicon }} // The favicon of the site (an .ico file or a png with up to 32x32px)
{{ entry.embedField.embedData.feeds }} // The RSS/Atom feeds
{{ entry.embedField.embedData.icon }} // The big icon of the site
{{ entry.embedField.embedData.image }} // The thumbnail or main image
{{ entry.embedField.embedData.keywords }} // The page keywords
{{ entry.embedField.embedData.language }} // The language of the page
{{ entry.embedField.embedData.languages }} // The alternative languages
{{ entry.embedField.embedData.license }} // The license url of the resource
{{ entry.embedField.embedData.providerName }} // The provider name of the page (Youtube, Twitter, Instagram, etc)
{{ entry.embedField.embedData.providerUrl }} // The provider url
{{ entry.embedField.embedData.publishedTime }} // The published time of the resource
{{ entry.embedField.embedData.redirect }}
{{ entry.embedField.embedData.title }} //The page title
{{ entry.embedField.embedData.url }} //The canonical url
{{ entry.embedField.embedData.ombed }} // oembed data
{{ entry.embedField.embedData.linkedData }} // json-LD data
注意:使用v1保存的嵌入数据将HTML保存到{{entry.embedField.embedData.code}}
。在v2中,{{ entry.embedField.embedData.code }}
更改为数组。您的模板需要考虑两种版本...例如
{{ (entry.embedField.embedData.code.html|default ?: entry.embedField.embedData.code|default) | raw }}
人名
具有以下内容的人名字段
- 尊称前缀
- 给定名
- 附加名
- 姓氏
- 尊称后缀
性别
具有以下内容的无性别字段
- 性别
- 身份
路线图
一些要完成的事情,以及潜在功能的想法
- 将每个字段拆分为自己的插件。保持此插件作为单个composer文件,该文件包含所有字段
- 提交时的地址验证/地理编码
- 在字段中显示地址文本,并提供“编辑”选项以减少UI中的字段大小
- 当发布下一个稳定版本时更新commerceguys/addressing
致谢
由Newism提供