Il est très simple à l’aide de TYPO3 de créer des menus ou de liens pointant vers une autre page. Mais parfois nous avons simplement envie de récupérer le contenu de cette page et de l’afficher en Ajax, sans être obligé de faire rafraichir toute la page de l’internaute.
Le principe est simple :
- Appeler en Ajax la page du plugin avec l’id de la page souhaitée (http://vorte_site.com?eid=ajaxContent&id=5).
- Votre plugin reçoit la requête en POST ou GET et va chercher la page en question.
- Le problème à ce moment est que vous avez tout le design de la page, vous pouvez alors l’épurer à l’aide d’une expression régulière.
Voici un exemple de fonction permettant le renvoie du contenu d’une page. Bien sur il faut en plus de cet exemple créer une petite extension, intégrer la page contenant le code ci-dessous au système Ajax de TYPO3 et réaliser la function Ajax en Javascript.
//on va chercher la page en question à l'aide de l'id passé en post ou get
$returned_content = get_data($_SERVER['SERVER_NAME'].'/index.php?id='.$_REQUEST['id']);
//ici il est aussi possible de chercher des valeurs créer par exemple par templavoila et dans les retourné dans un tableau json
$array['html'] = $returned_content;
echo json_encode($array) ;
//cette fonction fait un curl et épure le code de retour pour n’avoir que le contenu qui nous intéresse
function get_data($url)
{
$ch = curl_init();
$timeout = 5;
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
$data = curl_exec($ch);
curl_close($ch);
//ce preg_match doit être remplacé ou modifié en fonction de votre design
preg_match(‘/\(.*?)\/s’, $data, $content);
return $content[1];
}
?>