What is best practice for achieving the following;
I want to represent external data as memory based pages in EPiServer. These new pages should be visible in the menu and get a unique URL that can be revoked at any time and trigger recreation of the dynamic page.
I'm trying the following:
I have an entry point that is a pagetype reading the external data and dynamically creating new pages. These pages become children of the entry point and are ment to be visible in the menu. When clicking a dyn.page meny point another pagetype will be called with a URL prm. identifying the external data to be visualized.
I have pretty much achieved most of this but the 'visible in menu' part. When I navigate to the entry point all menus are viped out (I'm using the sample project for testing). The code I use for page creation;
PageData _dynPage = new EPiServer.Core.PageData();
_dynPage.Property["PageName"] = new PropertyString("dummy");
_dynPage.Property["PageVisibleInMenu"] = new PropertyBoolean(true);
_dynPage.Property["PageLink"] = new PropertyPageReference(EPiServer.Core.PageReference.EmptyReference);
_dynPage.Property["PageParentLink"] = new PropertyPageReference((EPiServer.Core.PageReference) _parentPage["PageLink"]);
_dynPage.Property["PagePendingPublish"] = new PropertyBoolean(false);
_dynPage.Property["PageTypeName"] = new PropertyString("Ordinary web page");
_dynPage.Property["PageTypeID"] = new PropertyPageType(3);
_dynPage.Property["PageLinkURL"] = new PropertyString(_pageURL);
_dynPages.Add(_dynPage);
The entry point is set as parent page for the created pages. Created pages are returned as a PagaDataCollection from the entry points GetChildren;
public override PageDataCollection GetChildren(PageReference pageLink)
{
return memoryPages.GetPages;
}
What's missing to fix the menu problem? Are there other (and better) approaches to this?
PageData _dynPage = new EPiServer.Core.PageData(); _dynPage.Property["PageName"] = new PropertyString("dummy"); _dynPage.Property["PageVisibleInMenu"] = new PropertyBoolean(true); _dynPage.Property["PageLink"] = new PropertyPageReference(EPiServer.Core.PageReference.EmptyReference); _dynPage.Property["PageParentLink"] = new PropertyPageReference((EPiServer.Core.PageReference) _parentPage["PageLink"]); _dynPage.Property["PagePendingPublish"] = new PropertyBoolean(false); _dynPage.Property["PageTypeName"] = new PropertyString("Ordinary web page"); _dynPage.Property["PageTypeID"] = new PropertyPageType(3); _dynPage.Property["PageLinkURL"] = new PropertyString(_pageURL); _dynPages.Add(_dynPage);
The entry point is set as parent page for the created pages. Created pages are returned as a PagaDataCollection from the entry points GetChildren;public override PageDataCollection GetChildren(PageReference pageLink) { return memoryPages.GetPages; }
What's missing to fix the menu problem? Are there other (and better) approaches to this?