This is one of the many undocumented aspects of Prestashop. If you ever need to render a template yourself, do something along those lines :

$tpl_dir = $this->context->smarty->getTemplateDir();
is_array($tpl_dir) && $tpl_dir = array_pop($tpl_dir); // Extract actuel template directory path from the retrieved array
$tpl_dir = preg_replace('#tpl(/|\\\\)$#', '', $tpl_dir); // Remove extra, non-existent tree level "tpl/"

$tpl = $this->context->smarty->createTemplate(
        // these are the variables we are feeding our template with
        // the following allows you to use Prestashop's $link methods
        'link' => $this->context->link

$html = $this->context->smarty->fetch($tpl);