Remark: I don't know if this is really a FAQ. But this one disturbed me when making my page xhtml-valid.
There are two possible solutions. 1. make a tray with another formelement inside a module or 2. make the change systemwide which is much easier for the non-php-techie.
Look for function render in include/xoopsform/xoopsformhidden.php and the line which reads:
return "<input type='hidden' name='".$this->getName()."' id='".$this->getName()."' value='".$this->getValue()."' />";
Problem with this code is, that the input-field for hidden will inserted between the tr-lines of the table which is not xhtml-valid.
Just change the above line to:
return "<tr style='display:none;'><td colspan='2' style='display:none;'><input type='hidden' name='".$this->getName()."' id='".$this->getName()."' value='".$this->getValue()."' /></td></tr>";
What I did was just inserting another table-row. To prevent the new table-row from being displayed I used the style display:none.
That is all!
Problem with these solution
I had the same validation problem.
I made this update un the render function but these function seems to be used in (a least one) other places.
With this modification, when you want to update a module (after a template modification), the update and cancel buttons are placed just under the header...