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

SoftLinks and getting links to Blocks

Vote:
 

I'm trying to create a 'cross-reference' for a page where I show any content referenced by the page (pages, blocks, media and external links), and also any content referencing the page.

For content referenced by the page, I can use the following method to retrieve soft links:

IList slc = ServiceLocator.Current.GetInstance().Load()

Then for each SoftLink in the collection, I can obtain a link to the referenced content for blocks and pages as follows (sl is an instance of SoftLink) (UrlResolver.Current.GetUrl(sl.ReferencedContentLink) always returns null for blocks, but works for media and pages):

            UrlResolver instance = ServiceLocator.Current.GetInstance();
            var urlB = new UrlBuilder(sl.Url);
            string contentUrl = instance.GetUrl(urlB, ContextMode.Edit);

However, when I get referencing softlinks by using the following method:

IList slc = ServiceLocator.Current.GetInstance().Load(true)

The SoftLink's Url property now points to the current page which is correct as this is now the 'source' of the softlink, but now I can't get the URL for blocks, as UrlResolver.Current.GetUrl doesn't work for block content references.

So is there a way to get a URL to a block, just knowing its content reference?

#113302
Nov 18, 2014 12:08
Vote:
 

Hi Mark,

Did you find a solution to this? I'm interested in getting a URL to a block as well.

Mark

#114790
Dec 22, 2014 12:09
Vote:
 

One key characteristic of blocks is that they have no public URL (that is a key difference between pages and blocks) meaning they can not be rendered on its own, instead are they rendered as parts of other content e.g. when used in a contentarea.

You can however get a preview or edit url to a block, in that case is the block rendered in the preview template.

The url can be retrieved from

UrlResolver.Current.GetUrl(blockLink, null, new VirtualPathArguments { ContextMode = ContextMode.Preview });

#114826
Dec 23, 2014 14:02
* You are NOT allowed to include any hyperlinks in the post because your account hasn't associated to your company. User profile should be updated.