NikNak: ... wonder how I could have possibly worked them out ...
Try to fork Products module and you will find lost of goodies in Products and CGExtensions

.
More useful thing about all modules derived from CGExtensions, they all have {$actionid} available in templates AND there are Objects named as modules (Products, Cart, ...) so you can use them to access
public module methods (they are listed on "/modules/Module_name/Module_name.module.php"). The rest of modules have variable {$mod} so each time different module is called that variable is overwritten. To avoid that, you have to save module object to unique variable at the top of template.
Knowing this stuff you can get everything from module (not only {$mod->Lang('something')}), also build own action links and forms. E.G. this looks easy
but this one is simply godsend when you understand it
Code: Select all
<input type="text" name="{$actionid}cd_proddesc" size="25" maxlength="255" title="{$mod->Lang('search_description')}"/>
Regarding documentation, writing phpDocumentor friendly code and basic info on help page is enough. Writing everything to help page is inefficient and time-consuming. Wiki can be improved by people like you and me. And last thing, you did not hesitate to test my suggestions ( was it 4 times ? ) so finally you have a solution that works not only for me but also for you.