Pages

Thursday, March 22, 2012

Rendertag, Project Performance, Product Support

Project performance is closely tied to rendertag usage.  Here are some rendertag usage best practices that should be taken into consideration when implementing a project.

Store:Set( key, val )
This is a rendertag that allows storage of variable, but it is unofficial and unsupported. Should projects experience performance or content output issues while using this rendertag, product support may be denied or delayed due to slow priority since it not a product issue but an implementation issue.

Additionally, upon full site publish or multiple users accessing the same Store value may experience a race condition since everyone is trying to write and read from the same variable.  For example, generated link for Page B links to Page A because the link value was read milliseconds before it was updated.

.Elements.GetElement(), .GetPathArray()
A page object get loaded into memory prior to any page info marshaling/inspection call, wide usage in project cause the server to use up memory much quicker.  Since the memory garbage collector in .NET could not keep up with the clean up, server tend to become unresponsive more often.

Another issue with rendertag and this rendertag in particular is caching.  Content retrieve via rendertag get cached, but the cache do not get update notification upon targeted content change, hence rendertag continues to display old content.  Please note, this issue do not occur if rendertag is used within navigation template.

Foreach and Store
Content retrieved within foreach rendertag will experience caching issue.  Content output within foreach rendertag via Store rendertag will experience race condition upon heavy multiple access.

Wednesday, March 21, 2012

Find Page By Guid 2

Download

Screenshot


Compatibility
  • 7.x
  • 9.x
  • 10.x
  • 11.x

Description
  1. Find page by guid

Accessibility
  • In SmartTree, Start -> Administer Project Structure -> Project, Action Menu, Find Page By Guid

Check Multiple Page Connections

Download

Screenshot



Compatibility
  • 7.x
  • 9.x
  • 10.x
  • 11.x

Description
  1. Search all page instances of a content classes for pages with multiple page connections
  2. Option to fix pages with multiple connections should the connection is not a main link and connected to an anchor

Accessibility
  • In SmartTree, Select content class, Action Menu, Check Multi Page Connection

Tuesday, March 20, 2012

Auto Order Elements 2

Download

Screenshot


Compatibility
  • 7.x
  • 9.x
  • 10.x
  • 11.x

Description
  1. Allow user to quickly reorder elements according to element order in page, making edit elements via form more user friendly
  2. Allow user to quickly inspect, find, and delete unused elements within content class

Accessibility
  • In SmartTree, Select content class, Action Menu, Auto Order Elements

Wednesday, March 14, 2012

Algorithm for Converting Old Navigation to Navigation Manager

This appears to be a frequently asked question for projects that are using the old list pull through container navigation method (the one with a connector page with a list and a container insider another container), so I am going to give out the algorithm I use.
  1. Lock down system from editors prior to running algorithm
  2. Create lst_navigation for all foundation content classes
  3. Make all foundations with lst_navigation a master page
  4. Review navigation connector page (the little page with a list that goes into a container) logic and rewrite it into navigation templates and navigation areas
  5. Foreach page instance of navigation connector, reconnect pages connected to the navigation connector list to lst_navigation of the parent page (the page with container), and delete navigation connector page instance
  6. Go into navigation manager, in the right pane, right click, click "disconnected pages" and then right click, "import pages"
  7. Depending on the size of the site, wait 30 to 45 minutes
  8. Go into navigation manager, in the right pane, right click, click "disconnected pages", find the root nood of your site, right click, "adopt page"
  9. Done
Cautionary Notes:
Old sites use the list container method so they can have separate publication package for each branch.  Also, each branch’s landing page is named index.htm.  These landing pages must be renamed or at least considered to avoid file overwrite.

Also, one must set expectation with the customer that the publishing file path for landing pages will be different since all landing pages will share the same lst_navigation and publication package.

Monday, March 12, 2012

AssignIt

Download

Screenshot


Compatibility
  • 7.x
  • 9.x
  • 10.x
  • 11.x

Description
  1. Assign a draft page from user A to user B
  2. Reassign a draft page because current owner is away
  3. Collaboration and communicate via built in email functionality (email server must be configured in server manager)
  4. Accessible in SmartTree and SmartEdit
  5. Easy to install

Accessibility
  • In SmartTree, Select Page, Action Menu, AssignIt.
  • In SmartEdit, please see readme.txt within plugin zip for easy installation instructions.

Monday, March 5, 2012

Breadcrumb: Rendertag Vs Placeholder

Generally, there are two ways to generate a breadcrumb

Method #1: Rendertag
<%!! Navigation:OutputArea(Breadcrumb) !!%>

Method #2: Placeholder
<!IoRangeBreadCrumb><%anc_breadcrumb%> &raquo; <!/IoRangeBreadCrumb> <%hdl_title%>

Instead of using rendertag, it is best practice to use native placeholder to generate the breadcrumb for the following reasons:
  1. When using rendertag to generate breadcrumb, the page must be in navigation structure.  For performance reasons, it is unwise to have a page in navigation structure for the sole purpose having a breadcrumb because this will not scale for sites with 200+ pages.  Large navigation structure = slow project.
  2. Hiding a page from breadcumb requires additional rendertag logic, which is another performance cost.  Whereas using breacrumb placeholder, simply select page, click "edit properties", and enable "Do not use for breadcrumb"