3

I'm trying to implement Bart's Flickr ECL provider to get content from Flickr. Successfully configured to Tridion, Flickr images are now exposed to Tridion. I'm testing on how ECL Components rendering and publishing works. When I preview any ECL Component, I'm getting a resolving error.

Does it require any custom templating code to handle? And I see a Stub Component is created on my first preview, is that created by ECL?

Error:

An error occurred while trying to resolve URI: ecl:114-flickr-23456784322_132f30e3bc_312476681231231242-img-file.ecl
Cannot access a closed Stream.
  Component: Tridion.ContentManager.CoreService Errorcode: 834 User: NT AUTHORITY\NETWORK SERVICE  StackTrace Information Details:
   at System.IO.Stream.CopyTo(Stream destination)
   at System.IO.Stream.CopyTo(Stream destination)
   at Tridion.ExternalContentLibrary.TcmExtension.EclBinaryContentProvider.WriteContentToStream(Uri uri, Stream outStream)
   at Tridion.ContentManager.ContentManagement.BinaryContent.WriteContentToStream(Uri fileUri, Stream binaryStream)
   at Tridion.ContentManager.ContentManagement.BinaryContent.WriteContentToStream(Uri fileUri, Stream binaryStream)
   at Tridion.ContentManager.ContentManagement.BinaryContent.WriteToStream(Stream binaryStream)
   at Tridion.ContentManager.ContentManagement.BinaryContent.GetByteArray()
   at Tridion.ContentManager.Templating.Engine.CreateMultimediaItem(Package package, Component component)
   at Tridion.ContentManager.Templating.Package.CreateMultimediaItem(Component component)
   at Tridion.ContentManager.Templating.Templates.ExtractBinariesFromHtmlTemplate.ResolveTemplateBinaries(Engine engine, Package package, TcmUri baseItemTcmUri, ExtractBinariesContentWrapper contentWrapper)
   at Tridion.ContentManager.Templating.Templates.ExtractBinariesFromHtmlTemplate.Transform(Engine engine, Package package)
   at Tridion.ContentManager.Templating.Dreamweaver.DreamweaverMediator.RegisterTemplateBinaries(Package package, String baseItemTcmUri, String templateString)
   at Tridion.ContentManager.Templating.Dreamweaver.DreamweaverMediator.Transform(Engine engine, Template templateToTransform, Package package)
   at Tridion.ContentManager.Templating.Engine.ExecuteTemplate(Template template, Package package)
   at Tridion.ContentManager.Templating.Engine.InvokeTemplate(Package package, TemplateInvocation templateInvocation, Template template)
   at Tridion.ContentManager.Templating.Engine.InvokeTemplate(Package package, TemplateInvocation templateInvocation)
   at Tridion.ContentManager.Templating.Compound.CompoundTemplateMediator.Transform(Engine engine, Template templateToTransform, Package package)
   at Tridion.ContentManager.Templating.Engine.ExecuteTemplate(Template template, Package package)
   at Tridion.ContentManager.Templating.Engine.InvokeTemplate(Package package, TemplateInvocation templateInvocation, Template template)
   at Tridion.ContentManager.Templating.Engine.TransformPackage(Template template, Package package)
   at Tridion.ContentManager.Templating.Engine.TransformItem(Template template, IdentifiableObject itemToRender)
   at Tridion.ContentManager.Templating.TemplatingRenderer.Render(ResolvedItem resolvedItem, PublishInstruction instruction, PublicationTarget target, RenderedItem renderedItem, RenderContext renderContext)
   at Tridion.ContentManager.Publishing.Rendering.RenderEngine.Render(ResolvedItem resolvedItem, PublishInstruction instruction, PublicationTarget target, RenderContext context)
   at Tridion.ContentManager.Publishing.Rendering.RenderEngine.Render(IdentifiableObject item, Template template, PublishInstruction instruction, PublicationTarget target, RenderContext context)
   at Tridion.ContentManager.Publishing.Rendering.RenderEngine.Render(IdentifiableObject item, Template template, PublishInstruction instruction, PublicationTarget target)
   at Tridion.ContentManager.CoreService.CoreServiceBase.RenderItem(TcmUri itemId, IdentifiableObjectData itemDeltaData, TcmUri templateId, TemplateData templateDeltaData, PublishInstructionData publishInstruction, String publicationTargetIdOrPurpose)
   at Tridion.ContentManager.CoreService.CoreServiceBase.RenderItem(String itemId, String templateId, PublishInstructionData publishInstruction, String publicationTargetIdOrPurpose)
   at SyncInvokeRenderItem(Object , Object[] , Object[] )
   at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)
   at Tridion.ContentManager.CoreService.CoreServiceInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)
   at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)

Update

After Resolve ECL items V2 added to Component Template,we're getting below Error on ECL Item preivew

Engine: The item called 'Output' was not found in the package Component: Templating Errorcode: 0 User: NT AUTHORITY\NETWORK SERVICE

Is this because of default ItemName value in Parameter schema for Resolve ECL items V2 ?

What exactly ItemName is expecting?

In addition any info on rendering and publishing ECL Items to deploying into a desired location ?

  • 1
    I edited your question to make it a bit more readable but wondering if I understand what you are actually doing? Can you edit your question and provide a few more details, like are you just trying to use the Flickr provider, or have you modified it to actually copy the content into Tridion? Please note for the latter I also have created an example, see github.com/bkoopman/sdl-tridion-world/tree/master/ECL%20Import/… – Bart Koopman Jan 24 '18 at 8:58
  • @BartKoopman I have configured ECL Provider, now am testing on how ECL Components rendering and publishing works. When I preview any ECL component then I see some exception. Does it require any custom templating to handle ? – USER1287 Jan 24 '18 at 9:51
  • Please edit your question and update it with this information, rather than using a comment which nobody will read. Also you don't want to answer to me, you want to clarify your question for the entire community, I'm not the only person that can answer your question ;o). – Bart Koopman Jan 24 '18 at 9:59
  • Is that ECL component item is created in the Stubfolder? – Velmurugan Jan 24 '18 at 10:28
  • @Velmurugan are you asking previewing component , no I made a preview on Images from Flicker in Tridion. – USER1287 Jan 24 '18 at 10:34
3

I think your question is still a bit unclear in the terminology you are using, you mention "Flickr images are now imported", but I guess what you mean is that you see them available in the Flickr mountpoint in the CME.

The External Content Library is a module for exposing multimedia contained in an external system in SDL Web so that you can use the media in SDL Web-driven Web sites. It doesn't actually import anything, it just allows you to use external references. Apart from using my example Flickr provider, I advise you to also read up on the ECL topic in the SDL Web 8 documentation, and take a look at the source code of my example provider, so you get a better understanding of what it does and what is actually happening.

Then onto your question, do you need any custom Templating code to handle ECL items? The answer is basically yes (see also the documentation on the ECL API), and I have written an example TBB that deals with it. However, you mention you are using Web 8, and actually on there, a TBB (quite similar to my example) for resolving ECL items is delivered as part of the Default Template Building Blocks. In case you don't have the default TBBs, check out the documentation on how to create them. The TBB you are looking for will be in a Folder SDL External Content Library and named Resolve ECL items V2. Add this to your Component Template and it will deal with the ECl item, if you want specific handling, you should create your own TBB, and can use them example I mentioned as a basis.

  • Hi Bart, I made a try to create Default Templates using Template Builder, but didnt get any TBB related to the SDL ECL items. – USER1287 Feb 9 '18 at 11:02
  • @USER1287 if you didn't get the SDL External Content Library Folder in your Default Templates Folder, then it sounds like ECL wasn't installed as part of the installer options. Or perhaps somebody removed the SetupExternalContentLibraryTemplates.xml file from the SDL Web\config folder – Bart Koopman Feb 9 '18 at 11:44
  • Thanks Bart, Just verified Web\config folder , I see SetupExternalContentLibraryTemplates.xml exists – USER1287 Feb 9 '18 at 12:18
  • Then when you create the Default Templates through the Template Builder you should get them. – Bart Koopman Feb 9 '18 at 12:21
  • I tried to generate default TBB's in an orphan publication and now I see ecl TBB's under SDL External Content Library . Used them in ECL CT,on ECL Item Preivew i see a different error ... – USER1287 Feb 13 '18 at 7:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.