]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - doc/bugs/wrong_rendering_of_templatebody.mdwn
I like it, I encourage it to be merged.
[git.ikiwiki.info.git] / doc / bugs / wrong_rendering_of_templatebody.mdwn
index 91c86d2c6174e36452906cb05c91ff63bca23e81..1a9377b68845dacf169d8fbd6d5aa2e27e5e4ea1 100644 (file)
@@ -3,14 +3,69 @@ Debian wheezy backports) to the version 5.20141016 which I built from git, by
 pulling the tag. One of the new things I have now is the templatebody
 directive.
 
+> Not directly relevant to this bug, but if you want the latest ikiwiki release
+> for a Debian derivative, you can fetch it from Debian unstable (normally)
+> or Debian experimental (during the Debian release freeze, e.g. now) -
+> the correct way is to get the (signed) source package with `dget`
+> or similar, check the GPG signature (which should be from me or Joey), and
+> rebuild it for your distribution. Just getting the binary `.deb` from Debian
+> is a little more risky, depending how far your distribution has diverged from
+> Debian, but in the case of ikiwiki it should usually work fine in practice.
+> --[[smcv]]
+
 I started using it in my templates, and I suddenly notice strange behavior: one
 of my templates renders as the *rest* of the template page when used, instead of
 the body part. In other words, it renders exactly the part it should hide (the
 description) and ignores the body itself (which is inside \[[!templatebody]]).
 
+> With a hint from [[kjs]] on [[templates/discussion]], I was able to reproduce
+> this bug. It seems to have been caused by an optimization: please try applying
+> [commit 5fd863b5](http://source.ikiwiki.branchable.com/?p=source.git;a=commitdiff;h=5fd863b5b05449669ec56c6798d836e3302386e2)
+> to your Render.pm. A follow-up commit partially brings back the optimization
+> (only for rebuilds). So I think this is [[done]]? (remove that link if
+> not) --[[smcv]]
+
 When I manually re-generate the wiki, it suddenly renders right. As soon as the
 page gets rebuilt automatically after some git push, it renders the wrong way.
 
+> Where did you install the newer ikiwiki? `/usr/local`? Somewhere else?
+>
+> It sounds to me as though manual re-generation is using ikiwiki ≥ 3.20140916
+> with the `templatebody` directive enabled, but the git hook is using
+> ikiwiki < 3.20140916 and/or has the `templatebody` disabled. This might
+> result from having a different `PERL5LIB` environment variable in
+> the two situations, for instance.
+>
+> It might help to debug this if you edit your older and newer ikiwiki's
+> `IkiWiki.pm`, `IkiWiki/Render.pm` and/or `IkiWiki/Plugin/templatebody.pm`
+> so they do `print STDERR "loaded (old/new) (whatever).pm"` at some fairly
+> early stage - I would suggest `getsetup()`, `refresh()` and `import()`
+> respectively. --[[smcv]]
+
+>> Yes, I installed in `/usr/local`, but I also removed the deb package. So I
+>> only have 1 ikiwiki version now.
+>>
+>> I also noticed the following behavior. I created a set of pages, each of them
+>> containing several occurences of a certain template. Then I created another
+>> page, which inlines all of them. All good. Then, I edited that main page to do
+>> different sorting (using inline directive's sort option). After comitting the change,
+>> suddenly all the inlined pages have the templates inside them contain the
+>> template info instead of template body. How is that even related to the minor
+>> change I did - change the sorting? :-P
+>>
+>> I'll look at the templatebody.pm file and try debug prints. I hope I can see them in
+>> the git push output, because rendering the wiki from command line doesn't have this
+>> problem.
+>>
+>> One more thing, my setup uses the pingee plugin. When doing a git push, it browses to
+>> the wiki page using wget with `?do=ping` parameter, and then ikiwiki responds by rebuilding
+>> the necessary pages.
+>>
+>> Thanks for the pointers.
+>>
+>> --[[fr33domlover]]
+
+
 [[This|http://www.rel4tion.org/languages/haskell/]] is the page, and
 [[this|http://www.rel4tion.org/templates/wikitag/]] is a template it uses. Right
 now the template is rendered on that page exactly like the template page itself.