Description
Sometimes you have blocks that should be preserved although they are  empty (no placeholder replaced). Think of a shopping basket. If it's  empty you have to show a message to the user. If it's filled you have  to show the contents of the shopping basket. Now where to place the  message that the basket is empty? It's not a good idea to place it  in you application as customers tend to like unecessary minor text  changes. Having another template file for an empty basket means that  one fine day the filled and empty basket templates will have different  layouts.
So blocks that do not contain any placeholders but only messages like  "Your shopping basked is empty" are intoduced. Now if there is no  replacement done in such a block the block will be recognized as "empty"  and by default ($removeEmptyBlocks = true) be stripped off. To avoid this  you can call touchBlock()