newism / 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 auto-updated.
Last update: 2024-08-29 23:15:50 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
。
字段
地址
地址字段由谷歌的数据集提供支持(commerceguys/addressing)。
特性
- 由谷歌地点API提供支持的自动完成
- 由谷歌地图JavaScript API和谷歌地图地理编码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 }}
电话
电话字段由Google的电话号码库通过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提供