IP.Board 3.1.0 and earlier contain a bug which prevents all of the "hooks" assigned to deal with some types of requests from running. The following file edit can be applied in order to fix this (it will need to be applied after any upgrade as well, until such time as IP.Board itself is fixed).
Note that below instructions are based on IP.Board 3.0.5, for IP.Board 3.1.0, the line numbers may need changing.
In /admin/sources/classes/output/publicOutput.php, find this line (approximately line 3035):
$thisContents = str_replace( "(~id~)", "_{$id}", $thisContents );
And add below it the following line:
if ( $classname != '' ) $thisContents = str_replace( $name."_{$id}", $classname, $thisContents );