bencarr / statamic-hyperlink
Hyperlink是一个Statamic插件,用于增强链接字段,它可以存储链接文本和目标选项,支持在单个字段中存储多个链接,并允许您设置可重复使用的由配置驱动的字段设置。
Requires
- php: ^8.1
- statamic/cms: ^5.0
Requires (Dev)
- nunomaduro/collision: ^7.0 || ^8.0
- orchestra/testbench: ^8.0 || ^9.0
- pestphp/pest-plugin-laravel: ^2.0
README
Hyperlink是一个Statamic插件,用于增强链接字段,它可以存储链接文本和目标选项,支持在单个字段中存储多个链接,并允许您设置可重复使用的由配置驱动的字段设置。
Hyperlink非常适合CTA、呼吁和英雄按钮,并提供了您需要的所有功能,以实现流畅的作者和开发者体验。
- 在单个字段中包含多个链接,以简化您的蓝图并避免需要复制作图或单独的字段来存储多个链接。
- 链接到任何内容,包括条目、URL、电子邮件地址、资产、分类术语和电话号码。
- 多站点支持以本地化链接。
- 灵活的模板选项,适用于Antlers和Blade。
- 可重复使用的字段配置,跨蓝图使用配置驱动的配置文件。
入门
安装
您可以从Statamic控制面板的工具 → 插件中找到并安装Hyperlink,或者通过项目根目录使用Composer进行安装。
composer require bencarr/statamic-hyperlink
升级指南
您可以通过重新要求包的新版本字符串从版本1.x或2.x升级到3.x。
composer require bencarr/statamic-hyperlink:^3.0
就这样!简单地安装v3后,不需要对您的内容或模板进行任何即时更改。
更新字段以支持多个链接
如果您想在现有的Hyperlink字段中利用多个链接,您可以更新字段配置以设置“最小链接数”和“最大链接数”选项。
如果您为字段配置使用配置文件,您可以在配置文件数组中调整min_items和max_items键。
一旦您已更新字段以支持多个链接,您的模板将需要更新以处理接收一个数组而不是单个超链接。请参阅模板部分以获取示例。
配置
通过从“关系”或“特殊”组中选择它,将Hyperlink字段添加到您的蓝图。
配置文件
配置文件允许您在多个蓝图之间重用Hyperlink配置。您可以在配置文件中设置配置文件,然后选择每个字段应使用的配置文件。未来的更改可以在配置文件配置中做出,而无需更新每个字段的设置。
自定义默认配置文件
通过发布hyperlink-config标签开始自定义配置文件。
php artisan vendor:publish --tag=hyperlink-config
您可以在config/statamic/hyperlink.php中找到已发布的配置。
添加额外的配置文件
通过向profiles数组中添加新键来提供额外的配置文件。
<?php return [ 'profiles' => [ 'default' => [ // ... ], 'hero' => [ // ... ], ], ];
配置文件选项
每个配置文件可以使用以下选项进行自定义。
小贴士 — 您还可以通过调整个人资料中
types数组的顺序来重新排列链接类型下拉菜单。例如,要使“资产”选项显示在第一位,将types属性设置为['asset', 'entry', 'url', 'email', 'term', 'tel']。
字段特定设置
要绕过个人资料并为特定字段使用一次性配置,请在字段设置面板中选择“自定义”个人资料,这样在 UI 中会显示相同的 个人资料配置选项,并将设置保存到蓝图本身。
注意 — 使用“自定义”个人资料时,无法重新排列启用的链接类型。
模板
超链接与 Antlers 和 Blade 都能很好地配合工作,并内置了方便的选项,让您可以完全控制模板标记。
Antlers
在您的 Antlers 模板中,像其他字段一样引用字段值,以返回带有所有必要信息的普通超链接。例如,如果您的字段处理程序是 cta
{{ cta }} <!-- Output --> <a href="https://statamic.com">Rad Button Text</a>
注意 — 当勾选“在新窗口中打开?”开关时,将自动添加
target属性。
为了获得最大的灵活性,您可以访问超链接字段的任何 可用数据。
<a href="{{ cta.url }}" target="{{ cta.target }}" class="button"> {{ svg src="{cta.type}" }} {{ cta.text }} </a>
如果您的字段配置支持多个链接,请将字段值视为一个集合。例如,如果您的字段处理程序是 buttons
{{ buttons }} <a href="{{ url }}" target="{{ target }}">{{ text }}</a> {{ /buttons }}
Blade
在您的 Blade 模板中,像其他字段一样引用字段值,以返回带有所有必要信息的普通超链接。例如,如果您的字段处理程序是 cta
{{ $page->cta }} <!-- Output --> <a href="https://statamic.com">Rad Button Text</a>
注意 — 当勾选“在新窗口中打开?”开关时,将自动添加
target属性。
对于像添加类或属性这样的简单标记修改,您可以像 Blade 组件属性 一样链接 class 和 attributes 方法。
{{ $page->cta->class('button')->attributes(['x-on:click' => 'doSomething' ]) }} <!-- Output --> <a href="https://statamic.com" class="button" x-on:click="doSomething">Rad Button Text</a>
为了获得最大的灵活性,您可以访问超链接字段的任何 可用数据。
<a href="{{ $page->cta->url }}" target="{{ $page->cta->target }}" class="button"> @svg($page->cta->type) {{ $page->cta->text }} </a>
如果您的字段配置支持多个链接,请将字段值视为一个集合。例如,如果您的字段处理程序是 buttons
@foreach($page->buttons as $button) <a href="{{ $button->url }}" target="{{ $button->target }}">{{ $button->text }}</a> @endforeach
可用数据
超链接字段的字段值是一个 HyperlinkData 对象,它在模板中就像一个数组一样工作。在内部,您有权访问您需要的一切,以完全自定义您的展示。
注意 — 当链接到术语时,超链接将生成一个指向 全局术语视图 的 URL。如果您想链接到特定集合中的术语,您需要使用
term属性在模板中生成该特定集合的 URL。
默认文本值
如果没有提供自定义文本,超链接将根据所选的链接类型使用合理的默认值。
验证
通常,超链接字段只需要一个链接值。链接文本是可选的,如果没有提供自定义文本,将使用基于链接类型的默认值(有关更多信息,请参阅上面的 默认文本值)。如果超链接字段在蓝图中的是可选的,则会添加一个“无”选项到可用的链接类型中,以便作者明确留空字段(对于新条目,这是默认设置)。
特定类型的验证
一些链接类型也会进行条件验证
- URL — 如果值不以
#、.或/开头,则使用 Laravel 的url验证规则(因此像#contact这样的锚点和像./sub-page这样的相对路径都可以正常工作) - 电子邮件 — 使用 Laravel 的
email验证规则 - 电话 — 使用 Laravel 的
regex验证规则,具有广泛模式/[\d,.+\-()]/,旨在防止大错误,同时适应tel:链接中允许的各种格式
模式
超链接数据以简单的 YAML 结构存储。例如,如果你的字段处理名为 cta
--- title: My Entry cta: type: url link: 'https://statamic.com' text: 'Rad Button Text' newWindow: false ---
条目、资产和术语链接使用 ID 引用存储,因此即使相关项的 URL 发生变化,链接也能保持最新
--- title: My Entry cta: type: entry link: 'entry::AAA111B2-3333-4444-C555-D6E7FGH8I910' text: 'Rad Entry Link' newWindow: false ---
如果你的字段配置支持多个链接,则 YAML 结构将为数组。例如,如果你的字段处理名为 buttons
--- title: My Entry buttons: - type: entry link: 'entry::AAA111B2-3333-4444-C555-D6E7FGH8I910' text: 'Rad Entry Link' newWindow: false - type: url link: 'https://statamic.com' text: 'Even More Rad Link' newWindow: true ---
许可证
超链接是一个商业插件。
在开发过程中你可以免费使用它,但在实际网站上使用则需要许可证。了解更多信息或购买许可证,请访问 Statamic 市场place!