sheadawson / silverstripe-linkable
一些方便的表单字段和对象,用于在DataObjects上管理外部和内部链接
Requires
- embed/embed: ^4.0
- silverstripe/framework: ^4.0 || ^5.0
- unclecheese/display-logic: *
Requires (Dev)
- phpunit/phpunit: ^5.7
Suggests
- silverstripe/cms: To allow for a linking of the SiteTree data object.
- 2.1.2
- 2.1.1
- 2.1.0
- 2.0.x-dev
- dev-master / 2.0.x-dev
- 2.0.0
- 1.3.x-dev
- 1.3.7
- 1.3.6
- 1.3.5
- 1.3.4
- 1.3.3
- 1.3.2
- 1.3.1
- 1.3.0
- 1.2.x-dev
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.x-dev
- 1.1.1
- 1.1.0
- 1.0.x-dev
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- 0.1.0
- dev-dependabot/npm_and_yarn/qs-6.5.3
- dev-dependabot/npm_and_yarn/moment-2.29.4
- dev-dependabot/npm_and_yarn/async-2.6.4
- dev-dependabot/npm_and_yarn/lodash-es-4.17.21
- dev-dependabot/npm_and_yarn/validator-13.7.0
- dev-dependabot/npm_and_yarn/path-parse-1.0.7
- dev-dependabot/npm_and_yarn/merge-2.1.1
- dev-dependabot/npm_and_yarn/hosted-git-info-2.8.9
- dev-dependabot/npm_and_yarn/ua-parser-js-0.7.28
- dev-dependabot/npm_and_yarn/node-sass-4.14.1
- dev-dependabot/npm_and_yarn/tar-2.2.2
- dev-dependabot/npm_and_yarn/elliptic-6.5.4
- dev-dependabot/npm_and_yarn/ini-1.3.8
- dev-dependabot/npm_and_yarn/extend-3.0.2
- dev-dependabot/npm_and_yarn/is-my-json-valid-2.20.5
- dev-dependabot/npm_and_yarn/lodash.mergewith-4.6.2
- dev-templates
This package is auto-updated.
Last update: 2024-09-01 22:20:05 UTC
README
此模块不再维护。请查看以下优秀的替代方案
需求
- SilverStripe 4.x
- 显示逻辑
查看1.x分支/releases以获取SilverStripe 3.x的支持
维护者
描述
此模块包含一些方便的表单字段/数据对象,用于在DataObjects上管理外部和内部链接,包括oEmbed链接。
使用Composer安装
composer require "sheadawson/silverstripe-linkable"
链接/链接字段
链接对象可以链接到URL、电子邮件、电话号码、SilverStripe实例中的内部页面或文件。例如,页面这样的数据对象可以有多个链接对象,通过网格字段管理,或者使用链接字段管理一个链接。
示例用法
class Page extends SiteTree { private static $has_one = [ 'ExampleLink' => 'Link', ]; public function getCMSFields() { $fields = parent::getCMSFields(); $fields->addFieldToTab('Root.Link', LinkField::create('ExampleLinkID', 'Link to page or file')); return $fields; } }
在您的模板中,您可以使用以下方式渲染链接的锚标签
$ExampleLink
为链接添加自定义类
您可以通过将类字符串传递到模板中的setCSSClass()
方法来渲染带有您选择的类或类的锚标签。
$ExampleLink.setCSSClass(your-css-class)
自定义链接模板
链接标签使用Link.ss模板渲染。您可以通过将其复制到您的主题或项目文件夹并按需修改来覆盖此模板。
您还可以通过调用renderWith函数并传递自定义模板的名称来指定用于渲染任何链接的任何自定义模板。
$ExampleLink.renderWith(Link_button)
最后,您可以选择性地为CMS用户提供选择模板列表的能力,允许他们选择链接的渲染方式。要启用此功能,请创建您的自定义模板文件并在您的site config.yml文件中注册它们,如下所示。
Sheadawson\Linkable\Models\Link: templates: button: Description of button template # looks for Link_button.ss template iconbutton: Description of iconbutton template # looks for Link_iconbutton.ss template
限制允许的链接类型
限制每个字段的链接类型。
LinkField::create('ExampleLinkID', 'Link Title')->setAllowedTypes(array('URL','Phone'))
您还可以全局限制链接类型。要限制类型,请将其定义在您的site config.yml文件中,如下所示。
Sheadawson\Linkable\Models\Link: allowed_types: - URL - SiteTree
默认可用的类型包括
URL: URL Email: Email address Phone: Phone number File: File on this website SiteTree: Page on this website
添加自定义链接类型
有时您可能有一些自定义数据对象类型,您希望CMS用户能够创建链接。这可以通过向链接数据对象添加数据扩展来实现,以下示例演示了如何使产品对象可链接。
class CustomLink extends DataExtension { private static $has_one = [ 'Product' => 'Product', ]; private static $types = [ 'Product' => 'A Product on this site', ]; public function updateCMSFields(FieldList $fields) { // update the Link Type dropdown to contain your custom Link types $fields->dataFieldByName('Type')->setSource($this->owner->config()->types); // Add a dropdown field containing your ProductList $fields->addFieldToTab( 'Root.Main', DropdownField::create('ProductID', 'Product', Product::get()->map('ID', 'Title')->toArray()) ->setHasEmptyDefault(true) ->displayIf('Type')->isEqualTo('Product')->end() ); }
在您的config.yml中
Sheadawson\Linkable\Models\Link: extensions: - CustomLink
请参阅wiki以获取更多自定义示例。
嵌入对象/字段
使用EmbeddedObject/Field轻松将oEmbed内容添加到数据对象或页面。
示例用法
class Page extends SiteTre { private static $has_one = [ 'Video' => 'EmbeddedObject', ]; public function getCMSFields() { $fields = parent::getCMSFields(); $fields->addFieldToTab('Root.Video', EmbeddedObjectField::create('Video', 'Video from oEmbed URL', $this->Video())); return $fields; } } ...
在您的模板中,您可以使用具有一个has_one关系的名称渲染对象
$Video
您还可以通过以下方式访问对象的其它元数据
<h1>$Video.Title</h1> $Video.Description $Video.ThumbURL
请参阅EmbeddedObject.php以获取在$db中保存的属性列表。
自定义查询参数
有时您可能需要向获取LinkEditForm
的GET请求中添加自定义查询参数。这在您希望根据特定情况自定义表单时非常有用。自定义查询参数是向LinkEditForm
提供上下文的一种方式。
要添加自定义参数,您需要添加data-extra-query
。
$linkField->setAttribute('data-extra-query', '¶m1=value1');
然后,您可以使用updateLinkForm扩展点并使用以下代码提取参数值
$param1 = Controller::curr()->getRequest()->requestVar('param1');
开发
前端使用预处理并需要使用Yarn
。