esign/craft3-fields

CraftCMS的地址、电话和电子邮件字段

安装: 12

依赖关系: 0

建议者: 0

安全: 0

星标: 0

关注者: 0

分支: 16

类型:craft-plugin

1.0.1 2024-05-08 15:07 UTC

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密钥
  • 如果您嵌入Instagram,则需要一个API密钥
  • 如果您嵌入Facebook,则需要一个API密钥

将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 }}

Address Demo

电话

电话字段由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 }}

Telephone Demo

电子邮件

功能

  • 使用Yii验证进行电子邮件验证

Email Demo

嵌入

功能

  • 直接从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 }}

Embed Demo

人名

具有以下内容的人名字段

  • 尊称前缀
  • 给定名
  • 附加名
  • 姓氏
  • 尊称后缀

Person Name Demo

性别

具有以下内容的无性别字段

  • 性别
  • 身份

Gender

路线图

一些要完成的事情,以及潜在功能的想法

  • 将每个字段拆分为自己的插件。保持此插件作为单个composer文件,该文件包含所有字段
  • 提交时的地址验证/地理编码
  • 在字段中显示地址文本,并提供“编辑”选项以减少UI中的字段大小
  • 当发布下一个稳定版本时更新commerceguys/addressing

致谢

Newism提供