CTA field plugin for Craft
Requirements
This plugin requires Craft CMS 3.0.0 or later., (*1)
Installation
To install the plugin, follow these instructions., (*2)
-
Open your terminal and go to your Craft project:, (*3)
cd /path/to/project
-
Then tell Composer to load the plugin:, (*4)
composer require statikbe/craft-cta-field
-
In the Control Panel, go to Settings → Plugins and click the “Install” button for Link Field., (*5)
Templating
Link fields on your models will return an instance of cta\models\Link
. Rendering a link
field directly within a template will return the url the field is pointing to., (*6)
<a href="{{ item.myLinkField }}">Link</a>
You can use the following accessors to get the different properties of the link:, (*7)
{{ item.myLinkField.getElement() }}
{{ item.myLinkField.getTarget() }}
{{ item.myLinkField.getText() }}
{{ item.myLinkField.getUrl() }}
{{ item.myLinkField.hasElement() }}
{{ item.myLinkField.isEmpty() }}
Use the getLink
utility function to render a full html link:, (*8)
{{ item.myLinkField.getLink() }}
You can pass the desired content of the link as a string, e.g., (*9)
{{ entry.linkField.getLink('Imprint') }}
You may also pass an array of attributes. When doing this you can override
the default attributes href
and target
. The special attribute text
will be used as the link content., (*10)
{{ entry.linkField.getLink({
class: 'my-link-class',
target: '_blank',
text: 'Imprint',
}) }}
To get the CTA as a span (eg to use in clickable blocks), you can use the getSpan()
function., (*11)
{{ entry.linkField.getSpan({
class: 'my-link-class',
text: 'Imprint',
}) }}
Configuration
Custom classes
Add custum classes to the dropdown menu., (*12)
- Add cta.php to /config
- Declare your classes:
<?php
return [
'classes' => [
'btn' => 'Primary',
'btn btn--secondary' => 'Secondary'
]
];
Linking between sites
By default, linking to entries from another site is not enabled. To make this work, you can use this config setting:, (*13)
<?php
return [
'crossSiteLinking' => true
];
Credits
Heavily inspired by sebastian-lenz/craft-linkfield., (*14)