THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

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

Offline


Bonsoir à tous,

Est ce que quelqu'un a réussi à ajouter un article au panier sans passer par la page panier.php avec Thelia 1.5.

Merci pour votre aide.


Pour être simple, il faut beaucoup apprendre.

Offline


Bonjour,

sur ergonoshop il y a un exemple de panier ajax qui te conviendra peut être comme base de travail ou exemple

http://www.ergonoshop.com/composants-gr … 95440.html

bon courage ;-)


WebHamster

Offline


Bonsoir

C'est effectivement dans l'esprit de ce que je recherche mais Thelia 1.5 refuse d'installer ce plugin (erreur 107) dans le B.O.

Je vais plancher sur le sujet en m’appuyant sur cette exemple.

Je suis preneur de vos astuces si vous en avez.


Merci Mist. GraphX pour ton aide.


Pour être simple, il faut beaucoup apprendre.

Offline


Thelia 1.5 refuse d'installer ce plugin

Et pour cause : ce n'est pas un plugin, mais un complément au template de base pour les version 1.4

Last edited by roadster31 (20-09-2011 22:03:07)


OpenStudio Toulouse

Offline


ok, merci pour cette précision.


Pour être simple, il faut beaucoup apprendre.

Offline


Bonsoir,

Je l'ai fait il y a quelques jours mais pas le temps de le mettre dans un papier cadeau, donc pour t'éviter de chercher( et au cas où vous trouveriez des améliorations)

Transformer les liens "ajouter au panier" ( par exemple dans le fichier produit.html ) comme cela :
( remplacer monsite.com par votre nom de domaine )

	<p><a class="acheter" href="http://monsite.com/thelia-svn/?fond=ajout_panier&id_produit=#PRODUIT_ID" onclick="javascript:ajout_panier('#REF'); return false;" rel="superbox[iframe][700x500]"><span><span>::ajouterpanier::</span></span></a></p>

Dans produit.html, insérer le javascript (la fonction ajout_panier )qui suit après le code que vous avez déjà pour la superbox

	<script type="text/javascript">
		$(function(){
			$.superbox.settings = {
				overlayOpacity: .8,
				closeTxt: "::fermer::",
				loadTxt: "::chargement::...",
				nextTxt: "::imgsuiv::",
				prevTxt: "::imgprec::"
			};
			$.superbox();

		});
		
		function ajout_panier($ref,$prix,$titre){
		//Ajout du produit
    $.ajax({
            type: "GET",
            url: "index.php?fond=panier",
            data: { action : "ajouter" , ref : $ref},
            success: function(html){ // this happen after we get result
			            var obj = null;
									function checkHover() {
									if (obj) {
									obj.find('ul').fadeOut('fast');
									} //if
									} //checkHover

									$('#contenuPanier > li').live('hover', function() {
									if (obj) {
									obj.find('ul').slideUp('fast');
									obj = null;
									} //if
									$(this).find('ul').slideDown('fast');
									}, function() {
									obj = $(this);
									setTimeout(
									"checkHover()",
									0); // si vous souhaitez retarder la disparition, c'est ici
									});

            }
        })
$("#monPanier").load("index.php?fond=petit_panier");
		};

		</script>

Créer le fichier ajout_panier.html dans template ( c'est le template du contenu de la popup qui va s'ouvrir, vous pouvez la modifier comme un template normal, ajout de boucles...):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	#INCLURE "template/meta_produit.html"
</head>
<body>

		<div id="contenu">
            <div class="blocProduit">
				<THELIA_PROD type="PRODUIT" id="#PRODUIT_ID">
				<h2>#TITRE</h2>
                <div class="blocDImages">
                    <THELIA_img type="IMAGE" num="1" produit="#ID" largeur="342">
                    <THELIA_ZOOM type="IMAGE"  num="1" id="#ID" largeur="500">
                    <a href="#IMAGE" rel="superbox[gallery][my_gallery]" class="grandeImage">
                    </THELIA_ZOOM>
                    <img src="#IMAGE" alt="#PRODTITRE" title="#PRODTITRE"/>
                    </a>
                    </THELIA_img>

                </div>
                <div class="introProduit">
                	<div class="chapo">#CHAPO</div>
					#PROMO[<span class="prixProduit">#PRIX2 €</span> ::changprix:: #PRIX €][<span class="prixProduit">#PRIX €</span>]
				</div>
                <div class="description">#DESCRIPTION</div>
				</THELIA_PROD>
	</div>
</div>
</body>
</html>

En faisant ce qu'il y a au dessus, les produits sont bien ajoutés au panier sans rafraichir la page, mais pour avoir le panier dans le header qui s'actualise il faut ajouter ce fichier dans le dossier template.

Fichier petit_panier.html

        <h3>::achats::</h3>
        <ul id="contenuPanier">
            <li>
                <T_PANIER>
                <a href="#URLPANIER" class="panier">::contient:: #PANIER_NBART ::article::</a>
                <THELIA_PANIER type="PANIER">
                </THELIA_PANIER>		
                <ul class="listeProduits">
                    <THELIA_panier type="PANIER">
                    <li><a href="#URLPANIER"><span class="nomArticle">#TITRE</span><span class="quantite">x #QUANTITE</span><span class="total">#TOTAL €</span></a></li>
                    </THELIA_panier>
					<li><a href="#URLPANIER" class="totalCommande"><span class="titreTotal">::total:: :</span><span class="total">#PANIER_TOTAL €</span></a></li>	
				</ul>
                </T_PANIER>
                ::paniervide::
                <//T_PANIER>
            </li>
        </ul>

Cela fait quelques jours que j'ai fait ça, j'espère pas avoir oublié un bout de code.

Nicolas.

Last edited by boyquotes (23-09-2011 23:28:20)


Linux-live-cd.org
Serveur Linux / Thélia 1.5.x.x / Thélia 2.x.x
PHP 5.4.x / Mysql 5.5.x
Compte Twitter

Offline


Et en cas de JS désactivé sur le navigateur ?

A bientôt,

LeHibou

Offline


Bonjour,

Pas encore prévue ce cas, donc ça ajoute pas au panier, pour ma part avec tous le javascript que j'utilise, ma balise noscript va sans doute indiquer que si le javascript est désactivé, passer votre commande par téléphone ( ou par minitel, il y a pas de javascript au moins wink )
Plus sérieusement, je suis un fan de javascript et ne comprends pas ceux qui le désactive...mis à part pour les handicapés qui on peut être des 'navigateurs' particuliers, donc je vais me pencher sur ce sujet pour ce cas là que je ne connais pas trop, à vrai dire, mais pour ce cas, je pense rediriger ceux qui n'ont pas javascript d'activé ou un autre handicap sur un template plus soft dès leur connexions plutôt que mettre plein de noscript partout...

PS/ J'ai essayé, en fait on arrive sur la page ajouter_panier.html, là il suffirait d'ajouter la balise noscript qui mettrai de nouveau un bouton ajouter au panier classique ( vous n'avez pas le javascript d'activé, pour ajouter cet article cliquez ici ).

D'ailleur dans ce fichier il vaut mieux mettre un bouton 'continuer mes achats' et 'valider ma commande' comme c'est souvent le cas, mais comme dis plus haut, c'est un fichier template classique, vous pouvez ajouter ce que vous voulez.
Nicolas.


Linux-live-cd.org
Serveur Linux / Thélia 1.5.x.x / Thélia 2.x.x
PHP 5.4.x / Mysql 5.5.x
Compte Twitter

Offline


Bonjour,
serait-il possible d'avoir la même fonction d'ajout au panier sans avoir l'affichage du produit en iframe et que le bouton "ajouter au panier" se transforme en "retirer du panier" après avoir cliqué sur ajouter?

Merci de votre attention.

N.B. dans le 1er code placé dans le fichier produit.html, je crois que l'on peut remplacer http://monsite.com/thelia-svn par #VARIABLE(urlsite)
--
universalix

Offline


Bonjour,

sans avoir l'affichage du produit en iframe

Enlève ça au lien ajouter au panier:

 rel="superbox[iframe][700x500]"

et retirer le href en mettant # dedans:

                	<p><a class="acheter" href="#" onclick="javascript:ajout_panier('#REF'); return false;"><span><span>::ajouterpanier::</span></span></a></p>

Pour retirer, ou c'est possible en utilisant jquery en changeant le lien en action supprimer et en changeant le texte du bouton...
?fond=panier&action=supprimer&article=0

Nicolas.

Last edited by boyquotes (11-10-2012 04:21:37)


Linux-live-cd.org
Serveur Linux / Thélia 1.5.x.x / Thélia 2.x.x
PHP 5.4.x / Mysql 5.5.x
Compte Twitter

Offline


Désolé, je ne comprends pas où je dois insérer le code

?fond=panier&action=supprimer&article=0

Comment utiliser jquery?
--
universalix

Offline


C'est par jquery que tu peux l'insérer en ajoutant du javascript dans success: ci-dessus

Le site docs.jquery.com te permettra de te familiaiser avec les fonctions html et get() qui permettront de faire cela.

Essayer déjà de faire changer le texte du bouton dans la fonction ajout_panier avant d'essayer de faire le get sur l'action supprimer.

Je t'aurais bien aider plus mais je n'ai pas besoin de cette fonction sur mon site, je veux pas facliter la suppression de produit wink

Nicolas.

Bonne soirée


Linux-live-cd.org
Serveur Linux / Thélia 1.5.x.x / Thélia 2.x.x
PHP 5.4.x / Mysql 5.5.x
Compte Twitter

Offline


Bonjour Nicolas
le panier AJAX fonctionne parfaitement
mais je voudrais y ajouter les déclinaisons et je sèche

merci de tes lumières


Pour communiquer utilisons des signes...

www.dessign.fr  -  www.judoenlignes.com

Offline


Bonjour,

Voici les modifications pour récupérer un déclinaison choisi dans un select:

Tout ce passe dans produit.html

Ajout de la liste de declinaison sur la fiche produit ( le class class="declinaison#ID" est important ):

     <ul>
        <THELIA_decli type="DECLINAISON" rubrique="#RUBRIQUE" produit="#ID">
           <li>#TITRE: <select class="declinaison#ID" name="declinaison#ID">
              <THELIA_declidisp type="DECLIDISP" declinaison="#ID" produit="#PRODUIT">
                 <option value="#ID"  >#TITRE</option>
              </THELIA_declidisp>
           </select>
           </li>
        </THELIA_decli>
     </ul>

puis il faut le récupérer dans la fonction ajout_panier pour l'envoyer dans le panier, j'ai modifié le début de la fonction pour cela:

function ajout_panier($ref,$prix,$titre){
// Recuperation de declinaison
var decli = $(".declinaison option:selected").val();
console.log(decli);

//Ajout du produit
    $.ajax({
            type: "GET",
            url: "index.php?fond=panier",
            data: { action : "ajouter" , ref : $ref, declinaison1 : decli},

J'espère t'avoir éclairé.


Linux-live-cd.org
Serveur Linux / Thélia 1.5.x.x / Thélia 2.x.x
PHP 5.4.x / Mysql 5.5.x
Compte Twitter

  • AW
  • Membre

Offline


bonjour je suis sous thelia spip et je galere
le produit s'ajoute au panier mais je suis redirigé vers ajout_panier

je pense que ma method post beug

mon code :

<form action="#URL_PAGE{ajout_panier,lang=#LANG} onClick="javascript:ajout_panier('THELIA-REF'); return false;" rel="superbox[iframe][700x500]"" method="post" id="formAjouter" class="formulaire_spip formulaire-produit">
							<fieldset>
								<input type="hidden" name="thelia_action" value="ajouter" />
								<input type="hidden" name="ref" value="THELIA-REF" />
....

Last edited by AW (08-06-2014 10:44:31)