I figured out why I was having some of the problems last night. I was using a different template for the NewsPublisher snippet, and calling the WebLogin snippet from within the document content. As long as I call it from the template and not in the document content, it’s OK.
I’m also using the [*lang*] TV as the value for the id argument in the ListMenuX snippet. This works in the template. It does not work in a document’s content; value of 0 is used instead, which is a bit odd since the default is documentIdentifier, and the ID of the document this is tested on is 26. Even the default for the TV is site_start, in this case 1. Coding the TV to echo its value shows the correct value.
What’s really weird is that I added lines to echo the $id variable in the WebLogin snippet itself, and it’s displaying the correct values. So where is the 0 that it’s using coming from
I put a print_r($params) in the document parser, line 664, where it parses snippets and gets an array of params. For the ListMenuX snippet that is called in the document body, it shows [*lang*] as the id value. The other two menus, called from the template, are fine, as is the WebLogin args, also called from the template. So in the document content, the TV call inside the snippet call is not getting parsed, but is being passed verbatim as the param value.
After playing around with links and other stuff, TVs in general work fine. They just don’t get parsed if they are used as an argument value for a snippet call in the document content.