Hello,
You can use addBreak to add page breaks or addSection to add new sections. With both methods new pages are added.
Using templates you can replace template placeholders and also add new contents with the same methods as creating the DOCX from scratch. New contents are added at the end of the document by default.
For example, using addBreak to insert a page break and an image in a DOCX template (sample files available in the package):
$docx = new CreateDocxFromTemplate('examples/files/TemplateSimpleText.docx');
$docx->addBreak(array('type' => 'page'));
$options = array(
'src' => 'examples/img/image.png'
);
$docx->addImage($options);
$docx->createDocx('output');
Another sample using addSection:
$docx = new CreateDocxFromTemplate('examples/files/TemplateSimpleText.docx');
$docx->addSection('nextPage', 'letter');
$options = array(
'src' => 'examples/img/image.png'
);
$docx->addImage($options);
$docx->createDocx('output');
With both sample scripts a new page is generated and an image is added. Adding a page break is the easiest approach, and addSection allows generating complex layouts.
Regarding your code, please note that DOCXPath methods, such as insertWordFragment, allow to do specific tasks such as insert WordFragments in specific positions, move contents, use DOMXPath queries... In your code you are inserting a WordFragment after all content types with the body tag as parent, because you are not adding any reference node. You don't need to use DOCXPath methods to accomplish the requested task.
On https://www.phpdocx.com/documentation/introduction/docxpath you can read more information about DOCXPath methods.
Regards.