newism / craft3-fields

该软件包已被废弃,不再维护。没有建议的替代软件包。

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

安装次数: 30,626

依赖项: 0

建议者: 0

安全: 0

星标: 54

关注者: 3

分支: 16

开放问题: 14

类型:craft-plugin

2.1.0 2023-10-10 22:22 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

字段

地址

地址字段由谷歌的数据集提供支持(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 }}

Address Demo

电话

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

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提供