A powerful DatoCMS plugin for advanced link and button management. Create fully configurable link fields with support for records, assets, URLs, telephone numbers and email addresses — including styling variants, icons, custom titles, aria-labels, nofollow and target control.

> Fork notice: This plugin is forked from Better Linking by Colin Dorr. It extends the original with additional features such as icon selection, nofollow control, a redesigned responsive grid layout, and has been migrated to Vite, React 19 and DatoCMS Plugin SDK v2. Full credit to Colin Dorr for the original plugin concept and implementation.
_blank togglerel="nofollow" toggle (appears when "Open in new window" is active)formatted summary for GraphQL queries
When querying a Button Extended field via GraphQL, the full JSON object is returned. The most useful part is the formatted object, which contains a clean summary of the link configuration:
{ "formatted": { "isValid": true, "type": "url", "text": "Made by App Bis Web", "ariaLabel": "Based on Better Linking", "url": "app-bis-web.de", "target": "_blank", "rel": "nofollow", "noFollow": true, "class": "cta", "icon": "gift" }}| Field | Type | Description |
|---|---|---|
isValid | boolean | Whether the link has both a URL and text |
type | string | Link type: record, asset, url, tel, or email |
text | string | Display text (custom title or fallback from link data) |
ariaLabel | string | Accessibility label |
url | string | null | The resolved URL |
target | string | _blank or _self |
rel | string | null | "nofollow" when enabled, otherwise null |
noFollow | boolean | Whether nofollow is active |
class | string | null | CSS class from the selected styling variant |
icon | string | null | Icon identifier from the selected icon option |
{ "linkType": { "label": "URL", "value": "url" }, "stylingType": { "label": "CTA", "value": "cta", "allowIcons": true }, "iconType": { "label": "Gift", "value": "gift" }, "record": {}, "asset": {}, "url": { "title": "URL", "url": "app-bis-web.de" }, "tel": {}, "email": {}, "formatted": { "isValid": true, "type": "url", "text": "Made by App Bis Web", "ariaLabel": "Based on Better Linking", "url": "app-bis-web.de", "target": "_blank", "rel": "nofollow", "noFollow": true, "class": "cta", "icon": "gift" }, "custom_text": "Made by App Bis Web", "aria_label": "Based one Better Linking", "open_in_new_window": true, "nofollow": true, "isValid": true}| Dependency | Version |
|---|---|
| DatoCMS Plugin SDK | v2.x |
| DatoCMS React UI | v2.x |
| React | 19.x |
| Vite | 8.x |
| TypeScript | 5.x |
| Node.js | >= 20 |
npm installnpm run devThe dev server starts at http://localhost:5173. Add this URL as the entry point in your DatoCMS private plugin settings.
npm run build # Production build (outputs to dist/)npm test # Run testsThis plugin is based on Better Linking by Colin Dorr. The original plugin provided the foundation for link type management, styling variants, custom text, aria-labels and target control within DatoCMS.
Button Extended builds on top of this by adding:
rel="nofollow") toggleJan Luther — app-bis-web.de
This project is licensed under the GNU General Public License v3.0.