Using a plugin to render a content fragment without site theme

I've been getting on quite well working through a bunch of Plugin examples as I get used to coding with Telligent.. so far so good. It's a nice change to be able to run a plugin build & see the changes within 20 seconds! 

One thing I'm doing as a proof-of-concept is render a widget via a contentFragmentPage XML definition.. this works pretty well as it stands.. giving me a custom page which renders the widget of my choosing into the page (nice to be able to do this via the plugin rather than relying on someone editing a page & dragging widgets into it). 

void INavigable.RegisterUrls(IUrlController controller)
{

	string debugUserWidget = @"<contentFragmentPage pageName=""common-home"" isCustom=""false"" layout=""Content"" themeType=""0c647246-6735-42f9-875d-c8b991fe739b"">
			<regions>
			  <region regionName=""Content"" >
				<contentFragments>
				  <contentFragment type=""Telligent.Evolution.ScriptedContentFragments.ScriptedContentFragment, Telligent.Evolution.Platform::b79ba25fa17048ba83bb844fc80bab5b"" showHeader=""False"" cssClassAddition=""no-wrapper with-spacing responsive-1"" isLocked=""False"" configuration="""" />
				</contentFragments>
			  </region>
			</regions>
			<contentFragmentTabs />
		  </contentFragmentPage>";

	// Render a widget into a custom page (which has a full site header + footer)
	controller.AddPage("e14-examples-widget", "examples/widget", null, null, "examples/widget", new PageDefinitionOptions
	{
		HasApplicationContext = false,
		SetCustomPageOutput = (context, outputController) => { },
		ParseContext = (context) => { },
		Validate = (context, accessController) => { }, 
		DefaultPageXml = debugUserWidget
	});

}

One thing I was wondering whether it's possible to do is render it without the site header + footer.. essentially using controller.AddRaw, but the RawDefinitionOptions don't have any property for me to pass the XML definition into.

Any ideas?

Parents Reply
  • Former Member
    +1 Former Member in reply to Matt

    Our functionality for changing a user avatar works like this.  The class that defines that functionality implements INavigable to define the page and IScriptablePlugin to define the widget used on the page.

    The page definition looks like this, which renders the content of the widget defined by the plugin to a modal.

    public void RegisterUrls(IUrlController controller)
    {
        controller.AddRaw("user_EditAvatar", "user/editavatar", null, null,
           (a, p) =>
           {
               CSContext.Current.IsModal = true;
               _widgetController.RenderContent(a.Response.Output, _widgetId, null);
           }, new RawDefinitionOptions());
    }

    There is an article here on defining an IScriptablePlugin.  community.telligent.com/.../using-widgets-to-render-content-from-plugins

Children