Link to SiteTree Pages, External URLs, YouTube Videos, &c. from a single, flexible SilverStripe field.
Link to SiteTree Pages, External URLs, YouTube Videos, &c. from a single, flexible SilverStripe field.
SilverStripe 3+
See silverstripe-flexichoice for a similar text input field.
FlexiLink
field types to your DataObject
(s)class BlockContentHeading extends DataObject {
private static $db = array(
'Title' => 'Varchar',
'Content' => 'Text',
'Link' => 'FlexiLink', // <--- here
'LinkText' => 'FlexiChoice',
);
Trigger the environment builder (/dev/build) after extending objects --
You will now see the FlexiLinkField
appear in the CMS when editing your
object.
FlexiLink
provides the following public template methods
<div class="block-heading">
<h1>$Title</h1>
$Content
<% if Link.exists %>
<div class="link">
<% if Link.Type == 'YouTubeID' %>
<a class="button" href="$Link.URL" target="_blank">WATCH <span>MOVIE</span></a>
<% else %>
<a class="button" href="$Link.URL">$LinkText</a>
<% end_if %>
</div>
<% end_if %>
</div>
---
Name: mysite
After:
- 'framework/*'
- 'cms/*'
---
# YAML configuration for SilverStripe
# See http://doc.silverstripe.org/framework/en/topics/configuration
# Caution: Indentation through two spaces, not tabs
SSViewer:
theme: 'site'
FlexiLinkField:
allowed_types:
- Page
- Google
field_types:
Google:
field: TextField
description: TestTest
This example adds a custom 'Google' field type, and limits the dropdown
selection to 'Page' and 'Google' (hides the built-in YouTubeID and ExternalURL).
Remember, ?flush=all after YML configuration changes to register them in
the manifest.
Module rating system helping users find modules that are well supported. For more on how the rating system works visit Module standards
Score not correct? Let us know there is a problem