Five New Optimizely Certifications are Here! Validate your expertise and advance your career with our latest certification exams. Click here to find out more

Grzegorz Wiecheć
Jul 24, 2020
  8181
(10 votes)

Episerver Labs - LinkProperty

We would like to introduce a new Episerver Labs add-on. LinkProperty is a simple extension that allows editors to work with a single LinkItem instance.

The property is just a new UI Editor that still use PropertyLinkCollection as a backing type. It means that in the database it is a LinkItemCollection property with just one item.

The new editor looks similar to the ContentReference editor:

NewEditor1.jpg

When editing a link, the same dialog as for LinkItemCollection property is displayed:

NewEditor2.jpg

Using LinkProperty addon

To use LinkItemCollection as model type, you just need to annotate the LinkItemCollection property with a LinkItemProperty attribute:

[ContentType(GUID = "19671657-B684-4D95-A61F-8DD4FE60D559"]
public class StartPage : PageData
{
    [LinkItemProperty]
    public virtual LinkItemCollection IntranetLink { get; set; }
}

To use LinkItem as a model type, additionally you have to add BackingTypeAttribute attribute and override default getter and setter. These are extension methods, so it is just two lines of code:

[ContentType(GUID = "19671657-B684-4D95-A61F-8DD4FE60D559"]
public class StartPage : PageData
{
    [LinkItemProperty]
    [BackingType(typeof(PropertyLinkCollection))]
    public virtual LinkItem Link
    {
        get => this.GetLinkItemPropertyValue(nameof(Link));
        set => this.SetLinkItemPropertyValue(nameof(Link), value);
    }
}

LinkItem property model

For LinkItem as a model, you can additionally use a custom property renderer. It requires adding EPiServer.Labs.LinkItemProperty.LinkItemRendering.Tag tag when rendering:

@using AlloyTemplates
@model PageViewModel<TestPage>

@Html.PropertyFor(x => x.CurrentPage.Link, new { Tag = EPiServer.Labs.LinkItemProperty.LinkItemRendering.Tag })

NewEditor3.jpg

To add a new link, you can use the edit button, drag-and-drop content from the page tree or from other reference properties on the page.

The only limitation is that you have to use Episerver CMS 11.26.0 or higher, because it contains a fix necessary to make LinkProperty work.

The add-on is available as a NuGet package.

Jul 24, 2020

Comments

Drew Null
Drew Null Jul 27, 2020 10:11 PM

🙌

K Khan
K Khan Jul 28, 2020 05:52 PM

:) very much desired behaviour

Jonas Carlbaum
Jonas Carlbaum Aug 3, 2020 11:56 AM

Nice... 👍👌

Daniel Ovaska
Daniel Ovaska Aug 10, 2020 09:36 AM

worth waiting for :)

K Khan
K Khan Aug 10, 2020 11:14 AM

couldn't find it on git, Is it on Git?

Grzegorz Wiecheć
Grzegorz Wiecheć Aug 28, 2020 06:13 AM

It's now on github: https://github.com/episerver/EPiServer.Labs.LinkitemProperty

Please report bugs releated with LinkItemProperty as issues on Github.

K Khan
K Khan Aug 28, 2020 09:37 AM

Thanks

Please login to comment.
Latest blogs
Category Management - Going old school & trying not to break anything.

You wait a hour for a bus and then 3 come at once. The same thing happened to me recently where multiple clients with ageing websites (Opti 11) and...

Matt Pallatt | Apr 7, 2025

Show/hide blocks and properties based on selected site in multi-site solution

Optimizely PaaS CMS has a great support for multi-site solutions which can additionally be extended with the custom code. For example, we can enhan...

Tomek Juranek | Apr 6, 2025

Experimentation strategies with Optimizely: Web, Edge, and Feature Experimentation

Experimentation is a cornerstone of data-driven decision-making, and Optimizely offers multiple ways to run experiments across your digital...

Minesh Shah (Netcel) | Apr 5, 2025

Tracking UTM Parameters in Optimizely CMS Forms

When you are spending your marketing dollars on social media / CPC campaigns, correctly attributing your leads is everything so you know where to...

Allan Thraen | Apr 3, 2025 |

TinyMCE 7 editor upgrade

Today we released a new version of the TinyMCE editor. The EPiServer.CMS.TinyMce 5.0.0 package includes integration with the latest version of the ...

Grzegorz Wiecheć | Apr 1, 2025