Forum CMS Made Simple FR

Version complète : [RESOLU] Plusieurs galeries dans {content}
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: 1.11.3
#~ Url du site :
#~ Hébergeur / Soft : planethoster
#~ Informations Système :
#~ ----------------------------------------------
#~ Cms Version: 1.11.2.1
#~ Installed Modules:
#~ CMSMailer: 5.2.1
#~ CMSPrinting: 1.0.3
#~ FileManager: 1.4.1
#~ MenuManager: 1.8.4
#~ MicroTiny: 1.2.3
#~ ModuleManager: 1.5.5
#~ News: 2.12.9
#~ Search: 1.7.7
#~ ThemeManager: 1.1.7
#~ CGExtensions: 1.31.1
#~ TinyMCE: 2.9.11
#~ Gallery: 1.6
#~ CGSmartImage: 1.9.5
#~ CGFBApp: 1.0.7
#~ Config Information:
#~ php_memory_limit:
#~ process_whole_template:
#~ output_compression:
#~ max_upload_size: 128000000
#~ 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.13
#~ md5_function: On (Vrai)
#~ gd_version: 2
#~ tempnam_function: On (Vrai)
#~ magic_quotes_runtime: Off (Faux)
#~ E_STRICT: 0
#~ E_DEPRECATED: 0
#~ memory_limit: 256M
#~ max_execution_time: 30
#~ output_buffering: On
#~ safe_mode: Off (Faux)
#~ file_uploads: On (Vrai)
#~ post_max_size: 64M
#~ upload_max_filesize: 128M
#~ session_save_path: /var/lib/sessionsphp (1777)
#~ session_use_cookies: On (Vrai)
#~ xml_function: On (Vrai)
#~ xmlreader_class: On (Vrai)
#~ Server Information:
#~ Server Api: litespeed
#~ Server Db Type: MySQL (mysqli)
#~ Server Db Version: 5.1.65
#~ Server Db Grants: Trouvé un privilège "GRANT ALL" qui semble être adapté
#~ ----------------------------------------------
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~

Bonjour à tous,

De retour dans le coin pour un nouveau problème...

Je suis en train de refaire mon site internet et pour celà, je souhaite intégrer plusieurs galeries dans ma balise {content}

Pourquoi?

Il y'a en fait 2 galeries, l'une sert de menu et l'autre de diaporama.
La première galerie est le dossier parent de la seconde... ça me permet d'avoir un accès direct aux sous-galeries sans passer par un lien "retour à la galerie parente".

Il faut donc, qu'à chaque clic dans la première galerie (elle n'affiche que des sous-galeries, donc des liens) , la page se mette à jour en ré-affichant la première galerie et en mettant à jour la seconde.

la manière la plus simple que j'ai trouvé, est de créer un template spécifique pour la première et la seconde galerie, puis de les appeler dans un 3ème template, celui qui s'affiche est qui est définit par défaut pour toutes mes sous-galeries.

Le premier sopucis rencontré est lors de l'appel de la première galerie dans le 3e gabarit, mes variables étaient écrasées et donc, le seconde galerie affichait la première une seconde fois donc, je suis passé par l'utilisation d'UDT pour afficher ces galeries dans le 3e template et là, ça fonctionne.

Le seul soucis et c'est là que ça coince, c'est qu'un clic sur 2 l'actionid dans l'url change et mon affichage aussi.
un clic sur 2 ma seconde galerie s'affiche en double et je ne vois pas où elle est appelé 2 fois.

Si quelqu'un pouvait m'aiguiller pour trouver la solution ce serait au top!!!

merci beaucoup




Un peu de code...


Template 1
Code :
[== Indéfini ==]
<section class="texte">
   {$gallerycomment}
</section>

<div class="galerie">
<h1 class='titre'>GALERIES</h1>
{foreach from=$images item=image}

      {if $image->isdir}
            <a href="{$image->file}" title="{$image->titlename}">
               {CGSmartImage src=$image->thumb filter_croptofit="80,120" alt=$image->titlename}
               <div class="caption">{$image->titlename}</div>
            </a>
      {/if}

{/foreach}

</div>


Template 2 (non finalisé)
Code :
[== Indéfini ==]
<div class="gallery">

<h1 class='titre'>{$gallerytitle}</h1>

<section class="texte">
   {$gallerycomment}
</section>

{foreach from=$images item=photo}
    <div class="img">
    {if $photo->isdir}
        <a href="{$photo->file}" title="{$photo->titlename}"><img src="{$photo->thumb|escape:'url'|replace:'%2F':'/'}" alt="{$photo->titlename}" /></a><br />
        {$photo->titlename}
    {else}
   <a class="group" href="{$photo->file|escape:'url'|replace:'%2F':'/'}" title="{$photo->comment}" rel="prettyPhoto[{$galleryid}]"><img src="{$photo->thumb|escape:'url'|replace:'%2F':'/'}" alt="{$photo->titlename}" /></a>
    {/if}
    </div>
{/foreach}
<div class="galleryclear">&nbsp;</div>
</div>


Template 3
Code :
[== Indéfini ==]
{Menu_diapo}

{diapo}


UDT 1 (non finalisé)
Code :
[== Indéfini ==]
$smarty = cmsms()->GetSmarty();
$smarty_test = "{Gallery dir='portefolio/photographie/Portraits'}";
echo $smarty->display('string:'.$smarty_test) ;


UDT 2 (non finalisé à cause du changement de la variable dans l'url)
Code :
[== PHP ==]
$smarty = cmsms()->GetSmarty();

$url1 = $_GET['m0e9b3dir'];
$url2 = $_GET['m0adbedir'];

if($url1){
   $dossier = $url1;
}
elseif($url2){
   $dossier = $url2;
}
else {
  $dossier = "portefolio/photographie/Portraits/afrique";
}

echo $dossier;

$smarty_data = "{Gallery dir='".$dossier."' template='photographie'}";
echo $smarty->display('string:'.$smarty_data) ;


Appel content
Code :
[== Indéfini ==]
{Gallery dir='portefolio/photographie/Portraits/afrique'}



Ps: la version de cmsms a été mise à jour entre-temps...
Histoire résolue!

Une fois les pretty url mises en place, la logique a changé et du coup il a fallu modifier les udt pour avoir les galeries voulues, ce qui donne:


UDT 1
Code :
[== Indéfini ==]
$smarty = cmsms()->GetSmarty();

$url = $_GET['page'];

$dir = explode('/',$url);

if($dir[2]){

$dossier = $dir[1].'/'.$dir[2].'/'.$dir[3];

}
else{

$dossier = 'portefolio/'.$dir[0].'/'.ucfirst(strstr($dir[1],'.html',true));

}

echo $dossier;

$menu_diapo = "{Gallery dir='".$dossier."'}";
echo $smarty->display('string:'.$menu_diapo) ;


UDT 2
Code :
[== Indéfini ==]
$smarty = cmsms()->GetSmarty();
$db = cmsms()->GetDB();

$url = $_GET['page'];

$dir = explode('/',$url);

if($dir[2]){

$dossier = $dir[1].'/'.$dir[2].'/'.$dir[3].'/'.$dir[4];

}
else{

$parent = 'portefolio/'.$dir[0].'/'.ucfirst(strstr($dir[1],'.html',true)).'/';

$query = "SELECT filename FROM " . cms_db_prefix() . "module_gallery WHERE filepath=? AND active = 1 ORDER BY fileorder LIMIT 1";
$result = $db->Execute($query, array($parent));

if ( $result && $result->RecordCount() > 0 ){
   while ( $row=$result->FetchRow() ){
      $dossier = $parent.strstr($row['filename'],'/',true);
   }
}

}

$smarty_data = "{Gallery dir='".$dossier."' template='photographie'}";
echo $smarty->display('string:'.$smarty_data) ;


Comme toutes mes galeries et sous-galeries sont structurées de la même façon, tout est ok... pour le moment!