Dynamic content library item
The dynamic content library item provides a way to produce HTML content using HelpNDoc's built-in scripting methods and API. Dynamic content placed within topics are interpreted at generation time to produce content which is then integrated in the final documentation file. It can be useful in multiple situations:
- Produce personalized documentation based on some conditions, such as topic properties, build settings...
- Topic-specific content display, such as listing children topics, or associated keywords
- Time-sensitive updates, which are only displayed based on the current generation date and time
- Content formatting, such as converting external JSON or XML files to human-readable tables
- And more...
Note: Even though they are based on HTML and scripts, dynamic content are compatible with every documentation formats supported by HelpNDoc, including Word and PDF formats.
Overview of the user interface
1. Library item name
Choose a unique name for that library item.
2. Source
Choose if the content is stored within the project or loaded from an external file at generation time
3. Dynamic content editor
Specify the dynamic content's HTML-based script using the built-in editor. Use the "Build" button to check that the syntax is valid.
4. Build output
Once built, any information, warning or error messages produced during the build process are displayed in the build output log.
Sample dynamic content scripts
List of children topics
When placed within a topic, the following script produces a lists of links to access all its generated direct children topics:
<%
var aChildrenTopicList := HndTopicsEx.GetTopicDirectChildrenListGenerated(HndTopics.GetCurrentTopic());
if (aChildrenTopicList.Length > 0) then
begin
%>
<ul>
<% for var nTopic := 0 to aChildrenTopicList.Length - 1 do begin %>
<li><a href="hnd-topic://<%= aChildrenTopicList[nTopic].id %>"><%= aChildrenTopicList[nTopic].Caption %></a></li>
<% end; %>
</ul>
<% end; %>
List of associated keywords
Place this dynamic content in a topic to produce a list of all keywords attached with this topic:
<%
var aKeywordsList := HndTopicsKeywords.GetKeywordsAssociatedWithTopic(HndTopics.GetCurrentTopic());
for var nKeyword := 0 to aKeywordsList.Length - 1 do
begin
%>
<span style="background-color: #eee"><%= HndKeywords.GetKeywordCaption(aKeywordsList[nKeyword]) %></span>
<%
end;
%>