Forum CMS Made Simple FR

Version complète : tag {gallery} et javascript
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Citation :#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~
#~ Version du CMS: 1.9.2
#~ Nom de l'hébergeur : surftown.net
#~ Informations Système :
#~ ----------------------------------------------
#~ Cms Version: 1.9.2
#~ Installed Modules:
#~ * CMSMailer: 2.0
#~ * FileManager: 1.0.3
#~ * MenuManager: 1.7.4
#~ * ModuleManager: 1.4
#~ * News: 2.11
#~ * nuSOAP: 1.0.2
#~ * Printing: 1.1.1
#~ * Search: 1.6.8
#~ * ThemeManager: 1.1.3
#~ * TinyMCE: 2.8.2
#~ * FCKeditorX: 1.1.0
#~ * CGExtensions: 1.23
#~ * NMS: 2.3.2
#~ * DewPlayer: 0.2.1
#~ * avplayer: 1.3.1
#~ * jQuery: 1.1.2
#~ * FrontEndUsers: 1.12.8
#~ * CustomContent: 1.7.3
#~ * Thumbnails: 0.1.1
#~ * Gallery: 1.4.3
#~ * Uploads: 1.11.5
#~ Config Information:
#~ * php_memory_limit:
#~ * process_whole_template: false
#~ * output_compression: false
#~ * max_upload_size: 100000000
#~ * default_upload_permission: 664
#~ * 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.2.14
#~ * md5_function: On (Vrai)
#~ * gd_version: 2
#~ * tempnam_function: On (Vrai)
#~ * magic_quotes_runtime: Off (Faux)
#~ * E_STRICT: 0
#~ * memory_limit: 128M
#~ * max_execution_time: 3000
#~ * output_buffering: 4096
#~ * safe_mode: Off (Faux)
#~ * file_uploads: On (Vrai)
#~ * post_max_size: 100M
#~ * upload_max_filesize: 100M
#~ * session_save_path: Aucune vérification à cause de la restriction spécifiée par PHP open_basedir
#~ * session_use_cookies: On (Vrai)
#~ * xml_function: On (Vrai)
#~ Server Information:
#~ * Server Api: cgi-fcgi
#~ * Server Db Type: MySQL (mysql)
#~ * Server Db Version: 4.1.22
#~ ----------------------------------------------
#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~



Bonjour à tous,

j'ai installé le module gallery dans lequel j'ai crée plusieurs gallery... jusque là, tout va bien!
sur une page de contenu j 'ai crée des liens qui appellent ces galleries par l'intermédiaire de javascript afin de charger les galleries sans recharger la page.
les liens sont de la forme:
Code :
<a onclick="changefotos('Autour');return false;" href="#">Autour du show</a>
<a onclick="changefotos('show');return false;" href="#">Autour du show</a>

le problème, vient de la fonction javascript appelée.
je dois récupérer la variable et la ré-injecter dans mon tag {Gallery dir="MaVariable"}
Mon problème est comment la réinjecter?

J'ai fais plusieurs test pour vérifier que l'appel du tag se fait bien avec ce script:
Code :
<script type="text/JavaScript">
function changefotos(){
document.getElementById('diapo').innerHTML= '{/literal}{Gallery dir="Autour"}{literal}' ;
self.location.assign('index.php?page=references-en-photos#main');
}
</script>
maintenant en essayant de mettre la variable:
Code :
<script type="text/JavaScript">
function changefotos(fotos){
var fotal;
fotal = fotos;
if(typeOf (fotal) == "undefined"){fotal == "Autour";}
document.getElementById('diapo').innerHTML= '{/literal}{Gallery dir="{literal}'+fotal+'{/literal}"}{literal}' ;
self.location.assign('index.php?page=references-en-photos#main');
}
</script>
et là, ça part en sucette car m'a variable fotal n'est pas prise en compte en tant que variable.
Donc, si une bonne âme qui connait la solution au problème pouvait me filer un coup de pouce, ce serait super
merci beaucoup
Sans avoir été plus loin qu'un simple coup d'oeil, tu n'aurais pas inversé l'ouverture et la fermeture de {literal} ?
{/literal}{Gallery dir="Autour"}{literal}
devrait être {literal}{Gallery dir="Autour"}{/literal}, non ?
euuh non je pense pas :/
Non, a priori il n'y a pas d'inversion puisque le premier code sans la variable fonctionne trés bien.
je ferme le {literal} pour mettre le tag et je le ré-ouvre pour finir la fonction js: c'est dans le bon sens.
le second code avec variable est retranscrit comme ça en version html:
Code :
document.getElementById('diapo').innerHTML= '<div class="gallery"><h3>Autour du show</h3></div>"}'+fotal+'

' ;
donc je comprends pas
J'ai essayé un autre system qui me parait pt'être mieux mais reste un problème...
donc, je suis passé par un system ajax plus traditionnel

dans ma page de contenu j'appelle le code ajax:
Code :
{literal}<script type="text/JavaScript">
function makeObject(){
       var x;
       if (window.ActiveXObject) {
          x = new ActiveXObject("Microsoft.XMLHTTP");
       }else if (window.XMLHttpRequest) {
          x = new XMLHttpRequest();
       }
       return x;
    }
    
        
    var request = makeObject();

function changefotos(fotos){
          
        the_fotos = fotos;
        
        request.open('get', 'diapo.php?id=' + the_fotos, true);        
    request.onreadystatechange = parseCheck_contenu;
    request.send('');
}
    
function parseCheck_contenu(){
    
    if(request.readyState == 4){
            
    var c = document.getElementById('diapo');
        c.innerHTML = request.responseText;
                
    var allscript = c.getElementsByTagName('script');
        for(var i=0;i< allscript.length;i++){
        eval(allscript[i].text);}
    if(the_first != "accueil"){ return false; }else{change_text();}
                      
           }
    }

</script>
{/literal}

avec mes liens toujours de la forme:
Code :
<ul>
<li><a onclick="changefotos('Autour');return false;" href="#">Autour du show</a></li>
<li><a onclick="changefotos('show');return false;" href="#">Le show</a></li>
</ul>

puis j'ai crée une balise utilisateur insérée dans mon gabarit pour l'include de la page diapo.php
Code :
include 'diapo.php';

Maintenant reste le problème de la page diapo lorsque je fais:
Code :
<?php
        $id = $_GET['id'];
        if (empty($id)){$id = "Autour";}
    echo =  $id;
?>

j'ai bien ma variable qui s'affiche sur la page à la place du diaporama
par contre, si j'essaye de mettre ma balise {Gallery dir=$id}
y'a rien et mon template fout le camps.
donc comment insérer ma balise {Gallery} avec ma variable dans cette page php pour qu'elle soit prise en compte et affiche le diaporama?

merci
évolution du code...
je viens de trouver un début de réponse:
maintenant la pahge diapo.php contient le code suivant pour utiliser la balise {Gallery} avec la variable
Code :
<?php
        $id = $_GET['id'];
        if (empty($id)){$id = "Autour";}
        
        echo $id;    
        global $gCms;
        $smarty = &$gCms->GetSmarty();
        $smarty_data = '{Gallery dir="'.$id.'"}';
        $smarty->_compile_source('temporary template', $smarty_data, $_compiled );
        @ob_start();
        $smarty->_eval('?>' . $_compiled);
        $_contents = @ob_get_contents();
        @ob_end_clean();
        echo $_contents;
?>
ce qui permet que la galerie s'affiche bien lors de du premier chargement de page
par contre lors de l'appel ajax, ça marche plus,
le "echo $id;" affiche bien la variable désirée par contre, la suite du code ne semble pas être pris en compte, comme si $_contents était vide.
donc à priori, le chargement par l'ajax fait que le script n'est pas interprété.

Si quelqu'un à une idée, je pourrais pt'être enfin résoudre ce problème qui dure!
merci