THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline


Bonjour a tous,comme l'indique le titre je souhaite réaliser un diaporama (slideshow) en javascript  des images de certains produits (les promos les nouveautés etc)

je suis partie de slideshow
mais j'ai un souci : je n'arrive pas a me débarrasser de l'url de l'image...

j'explique :

Voici le script

<link rel="stylesheet" type="text/css" href="css/slideshow.css" media="screen" />
<script type="text/javascript" src="js/mootools.js"></script>
<script type="text/javascript" src="js/slideshow.js"></script>


<script type="text/javascript">   
   
    //<![CDATA[
      window.addEvent('domready', function(){
      // Load your images here
       // var data = [ "img01.jpg", "img02.jpg", "img03.jpg"];

       var data = [<THELIA_PRODnew type="PRODUIT"  nouveaute="1" stockmini="1">
        <THELIA_IMAGEnew type="IMAGE" num="1" produit="#ID" >
            "#IMAGE",
        </THELIA_IMAGEnew>
        </THELIA_PRODnew>];
       
     // Initialize the Slideshow instance
        var myShow = new Slideshow('show', data, { height: 300, hu: 'client/gfx/photos/produit/', width: 400 });
      });
    //]]>
   
    </script>

et apres on l'appelle comme ça :

<div id="show" class="slideshow">
    <!-- Add your default image here -->
        <THELIA_PRODnew type="PRODUIT" aleatoire="1" nouveaute="1" num="1" stockmini="1">
        <a href="#REWRITEURL">
        <THELIA_IMAGEnew type="IMAGE" num="1" produit="#ID" >
            <img src="#IMAGE" alt="#PRODTITRE" id="#PRODREF" title="#PRODTITRE" width="200" height="200" />
        </THELIA_IMAGEnew>
        </a>
        </THELIA_PRODnew>
  </div>


bon le probleme c'est que ma var data appelle bien mes images mais avec leur chemin complet (client/gfx/photos/produit/img.jpg) et que le script n'accepte que le img.jpg, le chemin etant indiqué dans les options du var slideshow par hu:'client/gfx/photos/produit/'

Et bien sur si je vire le chemin defini par hu, ça ne marche pas, ni meme si je le laisse par defaut a rien ou juste' /'.

j'ai aussi essayé de twister un peu en rajoutant une variable intermediaire avec un substring pour virer l'url, genre :
var filename = data.substring(26,(data.indexOf('_', 26)));
mais la il me vire aussi le .jpg et ne traite que la premiere image, donc marche pas non plus...

bref quelqu'un peut il m'aider a me depatouiller avec ça (ça fait une semaine que je m'enerve la dessus) ou me conseiller un autre script qui s'adapterai mieux a thelia ?

d'avance merci a tout ceux qui m'aiderons ! o)


{TETE DE LARD} Concept store/Galerie {Designer toys, Livres d'art, Badges, T-shirts et curiosités...}

Offline


ah oui deuxieme chose etrange : en faisant des tests 'ai constaté que si
- je met directement le noms des images (débarrasées de l'url) et que je fait un fichier a part genre slideshow.html (ou en le chargeant par un php) cela marche, mais la meme chose copié dans mon index.html ne marche pas, ni meme en inclure.

et ça je ne vois pas du tout pourquoi !


{TETE DE LARD} Concept store/Galerie {Designer toys, Livres d'art, Badges, T-shirts et curiosités...}

Offline


Salut

Pour le slideshow, j'ai utiliser jcaroussel http://sorgalla.com/.

Je ne sais si cela correspond à tes besoins, mais c'est pas mal et personnalisable.

Patbonf

Offline


merci patbonf,
ce n'est exactement ce que je souhaite, mais je vais voir ce que je peux en faire tout de meme.


{TETE DE LARD} Concept store/Galerie {Designer toys, Livres d'art, Badges, T-shirts et curiosités...}

Offline


Re moi... je ne comprend pas comment utiliser jcarroussel avec thelia, aurais tu un exemple en ligne ?

Ou me dire dans quelle partie du code je dois inserer ma boucle qui va chercher les images ?

(je sais, je me fait l'effet d'etre tres nulle aussi, et je m'en excuse)


{TETE DE LARD} Concept store/Galerie {Designer toys, Livres d'art, Badges, T-shirts et curiosités...}

Offline


Bonjour

Désolé j'avais pas vu ta demande, je te met le code:
Dans le head:

 <script language="javascript">

// permet le positionnement du jcarroussel sur la diapo cliquer
<?php 
if ($_GET["start"]!=""){
 echo "var start2 =". $_GET["start"].";";
}else{
  echo "var start2 = 1;";
}
?>
// initialisation paramétrage du script
<script type="text/javascript">
function mycarousel_initCallback(carousel)
{
    // Disable autoscrolling if the user clicks the prev or next button.
    carousel.buttonNext.bind('click', function() {
        carousel.startAuto(0);
    });

    carousel.buttonPrev.bind('click', function() {
        carousel.startAuto(0);
    });

    // Pause autoscrolling if the user moves with the cursor over the clip.
    carousel.clip.hover(function() {
        carousel.stopAuto();
    }, function() {
        carousel.startAuto();
    });
};

jQuery(document).ready(function() {
    jQuery('#mycarousel').jcarousel({
		scroll: 1,
		start: start2,
    visible:4,

    initCallback: mycarousel_initCallback
	});
});
</script>

Dans le body:

<div id="droite_haut" align="center">
            <ul id="mycarousel" class="jcarousel-skin-tango">
            <THELIA_PROD type="PRODUIT" rubrique="#RUBRIQUE_ID" caracteristique="#CARACTERISTIQUE_ID" caracdisp="#CARACTERISTIQUE_DISP">
            <?php $nb=#COMPT?>
            <THELIA_IMAGE type="IMAGE" produit="#ID" num="1" largeur="112">
    			<li><a href="produit.php?id_rubrique=#RUBRIQUE&id_produit=#PRODUIT&p=collections&start=<?php echo $nb?>"><img src="#IMAGE"  alt="#PRODTITRE Ref:#PRODREF" title="#PRODTITRE Ref:#PRODREF" border="0" width="112" height="112"/></a></li>
			</THELIA_IMAGE>
            </THELIA_PROD>
  			</ul>
</div>

et bien sur ne pas oublier d'intégrer les javascripts nécessaires.

Patbonf

Offline


Bonjour,
Merci patbonf pour ce code qui semble être vraiment intéressant mais je rencontre quelques difficultés, je'arrive à afficher les images (en forme de liste <ul>) mais le diaporama ne marche pas, je n'ai même pas les boutons de navigations. Peut-être ai-je eu un soucis au niveau de l'intégration de fichiers javascripts ou CSS ?
(J'ai téléchargé la version 0.2.3 de jCarousel)
Merci

Offline


Oui, merci patbonf... mais malheureusement dès qu'on essaie de l'incorporer ça marche pas. ??

Offline


Bonjour

En effet, j'ai un peu galéré pour le mettre en place.
Je ne sais plus comment j'avais fait, mais j'ai toujours le code.
Voila les includes que j'ai mis dans le head:

<link href="styles.css" rel="stylesheet" type="text/css" />
<link rel="stylesheet" type="text/css" href="jquery.jcarousel.css" />
<link rel="stylesheet" type="text/css" href="tango/skin.css" />
<script type="text/javascript" src="lib/js/jquery-1.2.3.js"></script>
<script type="text/javascript" src="lib/js/chili-1.7.pack.js"></script>
<script type="text/javascript" src="lib/js/jquery.jcarousel.pack.js"></script>	
<script type="text/javascript" src="lib/js/jquery.easing.js"></script>
<script type="text/javascript" src="lib/js/jquery.dimensions.js"></script>
<script type="text/javascript" src="lib/js/jquery.accordion.js"></script>
 <script language="javascript">

// permet le positionnement du jcarroussel sur la diapo cliquer
<?php 
if ($_GET["start"]!=""){
 echo "var start2 =". $_GET["start"].";";
}else{
  echo "var start2 = 1;";
}
?>
// initialisation paramétrage du script
<script type="text/javascript">
function mycarousel_initCallback(carousel)
{
    // Disable autoscrolling if the user clicks the prev or next button.
    carousel.buttonNext.bind('click', function() {
        carousel.startAuto(0);
    });

    carousel.buttonPrev.bind('click', function() {
        carousel.startAuto(0);
    });

    // Pause autoscrolling if the user moves with the cursor over the clip.
    carousel.clip.hover(function() {
        carousel.stopAuto();
    }, function() {
        carousel.startAuto();
    });
};

jQuery(document).ready(function() {
    jQuery('#mycarousel').jcarousel({
        scroll: 1,
        start: start2,
    visible:4,

    initCallback: mycarousel_initCallback
    });
});
</script>

Attention ils ne sont pas tous nécessaires car j'ai aussi mis un menu aacordéon sur mon site.

De plus il faut aussi adapter les css à votre site.
voila le css de jquery.jcarrousel.css

.jcarousel-container {
    position: relative;
}

.jcarousel-clip {
    z-index: 2;
    padding: 0;
    margin: 0;
    overflow: hidden;
    position: relative;
}

.jcarousel-list {
    z-index: 1;
    overflow: hidden;
    position: relative;
    top: 0;
    left: 0;
    margin: 0;
    padding: 0;
}

.jcarousel-list li,
.jcarousel-item {
    float: left;
    list-style: none;
    /* We set the width/height explicitly. No width/height causes infinite loops. */
    width: 112px;
    height: 112px;
}

/**
 * The buttons are added dynamically by jCarousel before
 * the <ul> list (inside the <div> described above) and
 * have the classnames "jcarousel-next" and "jcarousel-prev".
 */
.jcarousel-next {
    z-index: 3;
    display: none;
}

.jcarousel-prev {
    z-index: 3;
    display: none;
}

Voila le css partiel dans style.css

body {
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 1em;
	margin: 0;
	padding: 0;
	background-color: #000000;

}
#header {
	height: 30px;
}
#conteneur {
	position: relative;
	width: 1280px;
	margin: 0 auto;
	height: 663px;
	background-image: url(image/fond_home.jpg);
	background-repeat: no-repeat;
}
#centre {
	margin-left: 400px;
	margin-right: 720px;
	height: 573px;
	background-image: url(image/fond_menu.jpg);
	background-repeat: no-repeat;
	padding-top: 15px;
	padding-bottom: 15px;
	padding-left: 15px;
	padding-right: 15px;
	color: #FFFFFF;
}
#gauche {
	position: absolute;
	left:0;
	height: 588px;
	padding-left: 80px;
	width: 310px;
	padding-right: 10px;
	padding-bottom: 15px;
}
#droite {
	position: absolute;
	right:3px;
	overflow:hidden;
	zoom:1;
	width: 535px;
	height: 573px;
	background-image: url(image/fond_carre.jpg);
	background-repeat: no-repeat;
	padding-top: 15px;
	padding-bottom: 15px;
	padding-left: 15px;
	padding-right: 170px;
}
#droite_haut {
	width: 535px;
	height: 130px;
	border-bottom-color: #CCCCCC;
	border-bottom-style: solid;
	border-bottom-width: thin;
}

Dans le body

<div id="droite">
<div id="droite_haut" align="center">
            <ul id="mycarousel" class="jcarousel-skin-tango">
            <THELIA_PROD type="PRODUIT" rubrique="#RUBRIQUE_ID" caracteristique="#CARACTERISTIQUE_ID" caracdisp="#CARACTERISTIQUE_DISP">
            <?php $nb=#COMPT?>
            <THELIA_IMAGE type="IMAGE" produit="#ID" num="1" largeur="112">
                <li><a href="produit.php?id_rubrique=#RUBRIQUE&id_produit=#PRODUIT&p=collections&start=<?php echo $nb?>"><img src="#IMAGE"  alt="#PRODTITRE Ref:#PRODREF" title="#PRODTITRE Ref:#PRODREF" border="0" width="112" height="112"/></a></li>
            </THELIA_IMAGE>
            </THELIA_PROD>
              </ul>
</div>
</div>

Sinon je ne peux pas donner de lien vers le site car il n'est pas accessible au public.

Donner moi des nouvelles, envoyer moi votre code, je regarderai.