一个链接字段,统治一切。

安装: 121,387

依赖关系: 0

建议者: 0

安全: 0

星级: 28

关注者: 4

分支: 19

开放问题: 44

类型:craft-plugin


README

Linkit

为Craft 4提供的Linkit插件

一个链接字段,统治一切...

此插件添加了一个自定义字段类型,支持链接到电子邮件地址、电话号码、URL、Craft元素类型等。

Craft 4的新功能

  • GraphQL支持
  • 预加载支持

要求

此插件需要Craft CMS 4.0.0或更高版本。

安装

插件商店

登录到您的控制面板,点击“插件商店”,搜索此插件并安装。

Composer

打开终端,转到您的Craft项目文件夹,并使用composer加载此插件。加载完成后,您可以通过Craft控制面板安装,转到设置→插件,找到插件并点击“安装”。

cd /path/to/project
composer require presseddigital/linkit

配置Linkit

安装完成后,创建一个新的字段并选择Linkit字段类型。然后您可以选择为该字段配置哪些链接类型将可用。

以下链接类型可用

基本

  1. 电子邮件地址
  2. 电话号码
  3. URL

社交

  1. 推特
  2. Facebook
  3. Instagram
  4. 领英

元素

  1. 条目
  2. 分类
  3. 用户
  4. 资产
  5. 产品

每种链接类型都有额外的选项,允许进一步自定义。例如,用户链接类型允许您设置默认路径...

Linkit

您还可以自定义字段上出现的下拉标签。

Linkit

使用Linkit

模板变量(基本使用)

输出自定义字段以获取预构建的HTML链接...

{{ entry.linkItField | raw }}

或完整...

{{ entry.linkItField.link }} or {{ entry.linkItField.getLink() }}

创建自定义HTML链接...

{% set attributes = {
    title: 'Custom Title',
    target: '_self',
    class: 'my-class',
    "data-custom": 'custom-data-attribute'
} %}
{{ entry.linkItField.link(attributes) }}

模板变量(高级使用)

每个Linkit字段返回一个Linkit模型,以下是一些标签...

{{ entry.linkItField.url }} or {{ entry.linkItField.getUrl() }}
{{ entry.linkItField.text }} or {{ entry.linkItField.getText() }}

{{ entry.linkItField.type }}
{{ entry.linkItField.typeHandle }}

{{ entry.linkItField.hasElement }}
{{ entry.linkItField.available }} or {{ entry.linkItField.isAvailable() }}

{{ entry.linkItField.target }}
{{ entry.linkItField.targetString }}
{{ entry.linkItField.linkAttributes }}
{{ entry.linkItField.customText }}

如果您的链接是元素链接,您还可以访问以下...

{{ entry.linkItField.element }} or {{ entry.linkItField.getElement() }}

或通过特定元素类型...

{{ entry.linkItField.entry }} or {{ entry.linkItField.getEntry() }}
{{ entry.linkItField.asset }} or {{ entry.linkItField.getAsset() }}
{{ entry.linkItField.category }} or {{ entry.linkItField.getCategory() }}
{{ entry.linkItField.user }} or {{ entry.linkItField.getUser() }}
{{ entry.linkItField.product }} or {{ entry.linkItField.getProduct() }}

示例用法

如果您创建了一个名为'linkItField'的字段,其链接类型如下...

Linkit

{{ entry.linkItField.link }}

将输出 <a href="/profile/USERNAME">访问个人资料</a>,这是在设置中创建的默认用户路径,用户将在以下位置可用...

{{ entry.linkItField.user }}

GraphQL

Linkit支持使用GraphQl查询子字段,以下字段可用,请查看Craft GraphQL探索器以查看返回值

myLinkitField {
  label
  type
  typeHandle
  available
  link
  url
  text
  target
  element {
    id
    title
  }
}

关于元素状态的一则笔记

为了匹配第一方元素字段类型,Linkit现在在元素链接类型中链接并允许用户选择禁用的元素,我们添加了一个新方法,允许您确定链接是否对当前站点可用(启用),因此以下将返回布尔值

{{ entry.linkItField.avialable }} or {{ entry.linkItField.isAvialable() }}

您可以使用此信息确定是否显示链接

{% if entry.linkItField.available %}
    {{ entry.linkItField.link | raw }}
{% endif %}

您仍然可以访问链接元素和其他属性,如果需要访问禁用元素

{# So long as it exists the link is always returned irrelevant of status #}
{% set element = entry.linkItField.element %}
{% if element %}
    {{ element.title }} - {{ element.url }}
{% endif %}

自定义链接类型

您可以轻松创建自己的链接类型

完整文档即将推出,目前请查看models文件夹。每种链接类型都是一个单独的模型,只需扩展Link或ElementLink,根据您的需求,一切都会为您设置好。

在您的插件(或模块)的init()中连接要求并注册自定义链接类型...

<?php

...

use presseddigital\linkit\Linkit;
use presseddigital\linkit\events\RegisterLinkTypesEvent;
use presseddigital\linkit\services\LinkitService;

use developer\plugin\models\CustomType;

...

public function init()
{
    parent::init();

    Event::on(LinkitService::class, LinkitService::EVENT_REGISTER_LINKIT_FIELD_TYPES, function (RegisterLinkTypesEvent $event) {
        $event->types[] = new CustomType();
    });

}

如果您认为它们非常实用,并且您同意我们可以考虑将它们添加到核心插件中供大家使用。

Pressed Digital 提供