When you create a new page node, a template is created named _page_node.x, where x is the node id. This template is used for HTML you may have placed in the Page Options->Template HTML text field.
If you want to display custom data from an add-on, then you need to have a class and method placed in the PHP callback fields that will be executed.
For example:
PHP:
class Icewind_IcewindDale_PageCallback_TrainingHall
{
public static function trainingHall(XenForo_ControllerPublic_Abstract $controller, XenForo_ControllerResponse_Abstract $response)
{
$visitor = XenForo_Visitor::getInstance()->toArray();
if ($visitor['user_id'])
{
$charData = array('blah' => 'blah blah', 'bug' => 'bug bug');
$response->params['char_data'] = $charData;
}
$response->templateName = 'icewinddale_training_hall';
}
}
In this example the params is passed to the template named icewinddale_training_hall, that I created to be used.
If your page node is to be used to interact with members, then you need to create a ControllerPublic class to handle any form data, clicks, etc.
After the data is saved, it will return a response pointing back to the page nodes route, something like this:
return $this->responseRedirect(
XenForo_ControllerResponse_Redirect::SUCCESS,
XenForo_Link::buildPublicLink('pages/training-hall'),
$charSavedResponse
);
or to another template:
return $this->responseView(
'IcewindDale_ViewPublic_Edit_User_Character',
'icewinddale_edit_user_character',
$viewParams
);