bigfork/silverstripe-linkset

Silverstripe模块,允许轻松将链接添加到CMS

安装: 2

依赖: 0

建议者: 0

安全: 0

星星: 0

关注者: 3

分支: 0

开放问题: 0

类型:silverstripe-vendormodule

2.0.0 2023-08-18 08:24 UTC

This package is auto-updated.

Last update: 2024-09-18 10:37:45 UTC


README

向CMS添加易于实现的链接选项

功能

  • 从以下选项中选择:无、页面、文件、URL
  • 可选择移除不适用于您实现的应用字段
  • 可以直接输出链接到模板

安装

$ composer require bigfork/silverstripe-linkset

如何使用

您需要在数据对象上创建一个$has_one关系

private static array $has_one = [
    'ButtonLink' => LinkSet::class,
];

然后添加LinksetField到您的字段列表

$fields->addFieldsToTab(
    'Root.Main',
    [
        ...otherFields,
        LinksetField::create($this, 'ButtonLink'),
        ...otherFields,
    ]
);

LinkSetField构造函数接受五个参数

  • DataObject $data - 该关系所在的对象 $this
  • string $name - 字段名称应与关系键匹配
  • ?string $title (可选) - 字段标题,将在字段上方设置标题
  • array $fieldsToRemove (可选) - 要从字段列表中移除标题,请传入数组,例如['Title']。可能的移除选项有
    • 标题
    • 链接类型
    • 链接URL
    • 链接目标
    • 链接页面ID
    • 链接文件
  • array $typesToRemove (可选) - 从单选框中移除链接类型,要移除“无”选项,请传入数组,例如['None']。可能的移除选项有
    • 页面
    • 文件
    • URL

使用所有参数,您的代码可能看起来像

$fields->addFieldsToTab(
    'Root.Main',
    [
        ...otherFields,
        LinksetField::create($this, 'ButtonLink', 'Button link', ['Title'], ['None']),
        ...otherFields,
    ]
);

在模板中使用

您可以通过调用关系在模板中输出链接

{$ButtonLink.AddExtraClass('button button--primary')}

这将输出一个简单的锚标签,包含在LinkSetField组中设置的 所有字段。

可以通过访问字段来执行自定义锚点,就像通过关系一样

<% with $ButtonLink %>
  <a 
    href="{$Link} 
    class="button"
    <% if $LinkTarget %> target="{$LinkTarget}"<% end_if %>
    <% if $LinkType = 'File' %> download<% end_if %>
  >
    {$Title}
  </a>
<% end_with %>