Sujet fermé
Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5

[Résolu] Recharger un div avec un fichier contenant un module smarty
#1

Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: 1.11.4
#~ Url du site : http://cogitools.fr/cmsms/index.php?page=slide
#~ Hébergeur / Soft : OVH
#~ Informations Système :
#~ ----------------------------------------------
#~ Cms Version: 1.11.4
#~ Installed Modules:
#~ CMSMailer: 5.2.1
#~ CMSPrinting: 1.0.3
#~ FileManager: 1.4.3
#~ MenuManager: 1.8.5
#~ MicroTiny: 1.2.5
#~ ModuleManager: 1.5.5
#~ News: 2.12.10
#~ Search: 1.7.7
#~ ThemeManager: 1.1.7
#~ Gallery: 1.6.1
#~ TinyMCE: 2.9.12
#~ CGExtensions: 1.32.2
#~ FrontEndUsers: 1.21.2
#~ SelfRegistration: 1.7.4
#~ FEUMailer: 0.9.4
#~ CGSimpleSmarty: 1.6
#~ CGFeedback: 1.5.11
#~ CustomContent: 1.8.3
#~ AdvancedContent: 0.9.4.3
#~ Showtime: 3.3
#~ AjaxMadeSimple: 0.4.0
#~ Config Information:
#~ php_memory_limit:
#~ process_whole_template:
#~ output_compression:
#~ max_upload_size: 64000000
#~ url_rewriting: none
#~ page_extension:
#~ query_var: page
#~ image_manipulation_prog: GD
#~ auto_alias_content: true
#~ locale:
#~ default_encoding: utf-8
#~ admin_encoding: utf-8
#~ set_names: true
#~ Php Information:
#~ phpversion: 5.3.16
#~ md5_function: On (Vrai)
#~ gd_version: 2
#~ tempnam_function: On (Vrai)
#~ magic_quotes_runtime: Off (Faux)
#~ E_STRICT: 0
#~ E_DEPRECATED: 8192
#~ memory_limit: 128M
#~ max_execution_time: 120
#~ output_buffering: 4096
#~ safe_mode: Off (Faux)
#~ file_uploads: On (Vrai)
#~ post_max_size: 64M
#~ upload_max_filesize: 64M
#~ session_save_path: /tmp (1777)
#~ session_use_cookies: On (Vrai)
#~ xml_function: On (Vrai)
#~ xmlreader_class: On (Vrai)
#~ Server Information:
#~ Server Api: cgi-fcgi
#~ Server Db Type: MySQL (mysqli)
#~ Server Db Version: 5.1.49
#~ Server Db Grants: Impossible de trouver un privilège "GRANT ALL". Cela peut signifier que vous pourriez avoir des problèmes pour installer ou retirer des modules, ou encore l 'ajout et la suppression d'éléments, y compris les pages.
#~ ----------------------------------------------
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~



Bonjour à tous,

Depuis mon dernier post (id=4555) j'ai bien appris et je suis parvenue à recharger un div avec un fichier html en cliquant sur un lien grâce à javascript et ajax.
Maintenant je souhaite aller plus loin et afficher un module dans ce div. Je procède de la même manière que pour l'affichage d'un fichier html mais en appelant un fichier .tpl contenant la balise de mon module.
Il affiche bien le contenu de mon fichier .tpl mais sans interpréter la balise smarty.

Mon script :
Code :
[== JavaScript ==]
<script type="text/javascript">
function getFileSimple(id,adr) {
$.ajax({
"url":adr,
"success":function (data){
$("#zone_de_rechargement").empty().hide();
//on affecte les resultats au div
$("#zone_de_rechargement").append(data);
//on affiche les resultats avec la transition
$('#zone_de_rechargement').fadeIn(2000);
}
});
}
</script>

Mon fichier .tpl :
Code :
[== Indéfini ==]
{Showtime show='1'}

J'ai essayé en passant par un fichier .php qui affiche mon fichier .tpl, dans ce cas j'ai une erreur de tag non défini.

Je ne comprends pas ce que je dois faire pour que smarty interprète la balise contenue dans mon fichier appelé.
Si vous pouviez m'aiguiller...

PS : ce site est une zone de test en ligne et me sert à bricoler, ne vous attachez pas à la forme ni au contenu !
#2

Bonjour,

Si tu ne fais que charger directement le tpl, c'est comme charger un fichier texte : le contenu est repris tel quel, et ce n'est pas javascript qui va l'interpréter.

Il faut obligatoirement passer à un moment où un autre par l'interface de module de CMSMS.

Pour cela, la solution qui me parait la plus simple est :
  1. Créer une page vide nommée par exemple "showtime-jax"
  2. Y inclure ta balise ou le contenu que tu veux récupérer via javascript
  3. Appeler cette nouvelle page en ajax, en ajoutant &showtemplate=false à la fin de l'url pour ne pas afficher tout le gabarit

Essaye et dis-nous si cela fonctionne bien !
#3

Mais c'est bien sûr ! J'ai bien essayé en passant par un fichier php qui lui même appelait un fichier tpl mais je n'avais pas pensé à appeler directement une page !

Donc, après essai : cette méthode fonctionne !
Sauf que j'ai eu des soucis avec &showtemplate=false (l'affichage du slide est tout pourri du coup), donc j'ai créé un gabarit épuré au maximum juste pour cette page qui fait appel à mon module. Et ça marche !
Bon, l'affichage est un peu long (environ 3s) et je pense que ça va plomber mon Yslow mais c'est ultra puissant et j'ai déjà plein d'idées d'application !

Merci Airelibre !!! Résolu ;-)
#4

Ok super Smile Pour le slide, peut etre qu'effectivement il aurait fallu déporter le javascript et le css dans le gabarit principal. Plusieurs options sont possibles
Je ferme le sujet, bonne continuation !
Sujet fermé


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)