pstaender/ kirby-uri-field
Kirby 3 uri字段,也可以分配给页面或文件。
Requires
- getkirby/cms: ^3.7
- getkirby/composer-installer: ^1.1
Requires (Dev)
- oblik/kirby-tester: ^1.2
- phpunit/phpunit: ^9.0
README
Kirby 3 字段,用于各种类型的链接 - 外部链接、页面、文件、电子邮件、电话。具有文本、弹出(true/false)和hash的设置。原始插件是这个,由Thomas Günther创建。
插件使用Kirby的页面、文件、url、电子邮件和tel原生字段。
如果在一个结构字段中使用,链接字段将获得一个漂亮的预览。页面和文件的链接将获得原生的页面/文件预览。
安装
使用Composer
composer require oblik/kirby-link-field
...或者查看其他插件安装方法。
蓝图
添加一个字段并将其类型设置为link
fields: myfield: type: link label: Link
要定义你想要的链接类型,请使用options
。可能的值有url
、page
、file
、email
和tel
。
fields: myfield: type: link label: Link options: - page - url
默认情况下,你也可以指定链接文本、弹出(true/false)和hash。你可以通过使用settings
值禁用这些选项或更改它们的显示方式。
fields: myfield: type: link label: Link settings: popup: width: 1/3 label: External Link help: Open link in a new tab? text: width: 2/3 hash: false
要完全禁用设置,请设置
settings: false
你也可以全局应用此类设置
config/config.php
return [ 'oblik.linkField' => [ 'options' => [ 'url', 'page' ], 'settings' => [ 'popup' => [ 'label' => 'External Link' ] ] ] ];
...
return [ 'oblik.linkField.settings' => false ];
页面/文件设置
你可以为页面/文件字段指定设置。例如
fields: myfield: type: link pages: query: page.siblings image: cover: true files: query: site.files text: '{{ file.id }}'
用法
要渲染链接,请使用提供的toLinkObject()
方法。它返回Link类的实例。
假设你有一个以下值的字段
Myfield:
type: page
value: home
text: My Text
popup: true
hash: heading-1
$link = $page->myfield()->toLinkObject();
$link->url()
返回包括hash的链接URL
http://localhost/home#heading-1
注意:对于email
和tel
链接,值是null
,因为它们不是实际的链接。
$link->href()
返回链接href
http://localhost/home#heading-1
如果链接类型是email
或tel
,则相应地具有mailto:
或tel:
。
注意:当你尝试将类转换为字符串时,会自动调用此方法,这意味着
echo $page->myfield()->toLinkObject();
...等同于
echo $page->myfield()->toLinkObject()->href();
$link->attr([$attributes])
返回链接属性,与可选的$attributes
合并
href="http://localhost/home#heading-1" rel="noopener noreferrer" target="_blank"
$link->tag([$attributes])
返回一个包含可选的$attributes
合并的完整<a>
标签
<a href="http://localhost/home#heading-1" rel="noopener noreferrer" target="_blank">My Text</a>
$link->title()
返回链接文本、页面标题、文件标题、文件名或最终值。用于为tag()
方法生成链接文本。
检索属性
你可以通过调用它们作为方法来获取链接的属性
echo $link->type(); // page echo $link->value(); // home echo $link->text(); // My Text echo $link->popup(); // true echo $link->hash(); // heading-1
从URL字段迁移
如果你之前使用过URL字段
fields: myfield: type: url
...你可以简单地将它更改为
fields: myfield: type: link
...并且它将工作。此外,toLinkObject()
方法可以处理TXT文件中的两种链接格式。如果你有
Myfield: https://example.com
...
Myfield:
type: url
value: https://example.com