// [FR]
// Plugin pour charger un template depuis le système de fichiers.
// Code original par heliotrope.
// A associer avec l'événement OnLoadWebDocument.
//
//
// [EN]
// Plugin to load a template from the file system.
// Original code by heliotrope.
$e = & $modx->Event;
switch($e->name){
case 'OnLoadWebDocument':
$tplContent = $modx->documentContent;
if( substr($tplContent,0,6) == "@FILE:"){
// Improvement by ALTIPOINT development (JR)
// Last update: July 21, 2009
//
// [FR]
// Permet de placer un chunk au début de la chaîne menant au modèle.
// Avantage : permet de rediriger dynamiquement vers
// un dossier correspondant à un sous-site.
//
// Au final, la chaîne vers le modèle doit être complète,
// incluant assets/templates si le modèle se trouve dans ces sous-dossiers.
//
// [EN]
// Allows to use a chunk at the beginning of the path to the template file.
// Benefit : useful to redirect to subsites.
//
// ---------------------------------------------
// Example:
// To load template from "main_site_root/subsite1/assets/templates/subsite.tpl"
// Put in the code text area of your template :
// @FILE:{{subsite1_root}}/assets/templates/subsite.tpl
//
// where the subsite1_root chunk contains "subsite1" (without the quotes).
if (substr($tplContent,6,2) == "{{") { // the path begins with a chunk
$chunkCloseBracketsPos = strpos($tplContent,'}}');
if ($chunkCloseBracketsPos > 9) { // chunk seems valid
$myChunk = substr($tplContent,8,$chunkCloseBracketsPos-8); // extract the chunk name
$myChunk = $modx->getChunk($myChunk);
$templatePath = $myChunk.substr($tplContent,$chunkCloseBracketsPos+2);
} else { // chunk is invalid
return 'Could not load template. Check path to template.';
}
} else { // the path to template is a standard path,
// i.e. not beginning with a chunk
$templatePath = substr($tplContent,6);
}
// ---- End of improvement ----
$toFile = $modx->config['base_path'].trim($templatePath);
if(is_file($toFile)){
//Start the buffer
ob_start();
include $toFile;
//get contents from the buffer
$ob_contents = ob_get_contents();
//and kill/delete the buffer
ob_end_clean();
//return it to MODx
$modx->documentContent = $ob_contents;
}else{
$modx->documentContent = "Erreur lors du chargement du template => ".$toFile;
}
}
break;
default:
break;
}
@FILE:helpPagesTemplate.tpl
@FILE:help_templates/helpInEnglish.tpl
/assets/templates/help_templates/helpInEnglish.tpl
@FILE:{{customer}}/assets/templates/template.tpl