Forum OpenACS Q&A: Re: Xowiki Categories Includelet Rendering Connundrum

Posted by Gustaf Neumann on
The parameter "cacheable" is not setable on the includelet instance level, but on the includelet class level. This means that you have to alter in xowiki/tcl/includelet-procs.tcl the value of this flag from "true" to "false":
  ::xowiki::IncludeletClass create categories \
      -superclass ::xowiki::Includelet \
      -cacheable true -personalized false -aggregating true \
      -parameter {
        {title "Categories"}
        {parameter_declaration {
          {-tree_name ""}
          {-tree_style:boolean 1}
          {-no_tree_name:boolean 0}
          {-count:boolean 0}
          {-summary:boolean 0}
          {-locale ""}
          {-open_page ""}
          {-order_items_by "title,asc"}
          {-style "mktree"}
          {-category_ids ""}
          {-except_category_ids ""}
          {-allow_edit false}
The values under "parameter_declaration" are the ones that can be specified on a per-includelet instance level (when the includelet is instantiated, e.g. between curly brackets).

Note that when you change this definition, you should flush the page fragment cache via http://YOURHOST/xotcl/cache?cache=xowiki_cache (or restart the server).

Some more background: xowiki has various kinds of caches. The categories includelet can be cached in the so called "page fragment cache". The xowiki infrastructure supports various kinds of caching for page fragments, which can be specified as follows

  • cacheable: turn caching on/off for this includelet
  • aggregating: cached page fragments are flushed, when items in this instance are added/edited/deleted. This is useful, when altering content item in this instance might cause a different output from this includelet (this is the case for the categories includelet)
  • localized: different cached values are kept for every locale; useful, when an includelet returns different values depending on the locale
  • personalized: different cached values are kept per user-id; useful, when an includelet returns different values per user.
To understand caching, it helps to look at the cached values in the page fragment cache as indicated above.

Hope this helps

-gustaf neumann