publish::handle_item (private)
publish::handle_item item_id [ args... ]
Defined in packages/acs-content-repository/tcl/publish-procs.tcl
- Parameters:
- Options:
- item_id (required)
- The id of the item to be rendered
- -revision_id
- {default The live revision} The revision which is to be used when rendering the item
- -no_merge
- Indicates that the item should NOT be merged with its template. This option is used to avoid infinite recursion.
- -refresh
- Re-render the item even if it exists in the cache. Use with caution - circular dependencies may cause infinite recursion if this option is specified
- -embed
- Signifies that the content should be statically embedded directly in the HTML. If this option is not specified, the item may be dynamically referenced, f.ex. using the <include> tag
- -html
- Extra HTML parameters to be passed to the item handler, in format {name value name value ...}
- Returns:
- The rendered HTML for the item, or an empty string on failure
- See Also:
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- No testcase defined.
Source code: template::util::get_opts $args variable revision_html # Process options if { ![info exists opts(revision_id)] } { set revision_id [::content::item::get_live_revision -item_id $item_id] } else { set revision_id $opts(revision_id) } if { [template::util::is_nil revision_id] } { ns_log warning "publish::handle_item: No live revision for $item_id" return "" } if { ![info exists opts(no_merge)] } { set merge_str "merge" } else { set merge_str "no_merge" } # Create a unique key set revision_key "$merge_str $revision_id" if { [info exists opts(html)] } { lappend revision_key $opts(html) } # Pull the item out of the cache if { ![info exists opts(refresh)] && [info exists revision_html($revision_key)] } { ns_log debug "publish::handle_item: Fetching $item_id from cache" return $revision_html($revision_key) } else { # Render the item and cache it ns_log debug "publish::handle_item: Rendering item $item_id" content::item::get -item_id $item_id -array_name item_info set item_handler [get_mime_handler $item_info(mime_type)] if { $item_handler eq "" } { ns_log warning "publish::handle_item: No mime handler for mime type $mime_info(mime_type)" return "" } # Call the appropriate handler function set code [list $item_handler $item_id {*}$args] # Pass the revision_id if { ![info exists opts(revision_id)] } { lappend code -revision_id $revision_id } set html [{*}$code] ns_log debug "publish::handle_item: Caching html for revision $revision_id" set revision_html($revision_key) $html return $html }Generic XQL file: packages/acs-content-repository/tcl/publish-procs.xql
PostgreSQL XQL file: packages/acs-content-repository/tcl/publish-procs-postgresql.xql
Oracle XQL file: packages/acs-content-repository/tcl/publish-procs-oracle.xql