Placer un bouton "ajouter au caddie", à côté de "+ de détail"

4 posts in this topic

Posted · Report post

Bonjour,

C'est pour une version 5.6.

Pourrait-on ajouter le bouton "ajouter au caddie", à côté du descriptif court, juste en face du bouton "+ de détails", c'est-à-dire sur la page des catégories ?

 

J'ai essayé à tout hasard de placer le formulaire "ajouter au panier" qui se trouve plus bas dans le template du blog, mais j'obtiens une page blanche.

	echo '
	<p class="retour">' . $descriptif . '</p>
	<div class="col_detail"><a class="col_detail" href="' . $urlprod . '" title="' . $nom . '">' . MORE . '</a></div>
	</div>
<div class="col4">
';
	if (est_identifie() && a_priv('admin')) {
		echo '<p class="retour"><a href="' . $GLOBALS['administrer_url'] . '/produits.php?mode=modif&amp;id=' . $id . '" class="label">' . MODIFY_PRODUCT . '</a></p>';
	}
	echo '
</div>
';
}

echo '
<form method="post" action="' . $wwwroot . '/achat/caddie_ajout.php" id="' . $form . 'ajout' . $prodId . '">';
	$hidden_input = '<input type="hidden" name="id" value="' . $prodId . '" />';

	if (is_advanced_stock_module_active()) {
		$sqlStock = 'SELECT stock, couleur_id, taille_id FROM peel_stocks_temp WHERE produit_id = "' . $prodId . '"';
		/* Ici on ne recherche que les produits dont le stock est > 0 */
		$resStock = query($sqlStock);

		/* Si la table des stocks temporaires est vide alors on teste la table réelle */

		if (num_rows($resStock) == 0) {
			$sqlStock = 'SELECT stock, couleur_id, taille_id FROM peel_stocks WHERE produit_id = "' . $prodId . '" AND stock > 0';
			/* Ici on ne recherche que les produits dont le stock est > 0 */
			$resStock = query($sqlStock);
		}

		$Stock = fetch_assoc($resStock);
		// On récupère le nombre de ligne dans le table, si = à 1 alors on est dans le cas d'un produit sans couleur ni taille
		// Dans ce cas, le critere sera traité par <input type="hidden">
		$numLigne = num_rows($resStock);

		$stock_remain = 0; #- Initialisation de la variable Stock restant
		$sPrix = 0; # Indique qu'il n'existe pas de prix / taille pour ce produit.

		if ($numLigne == 1 && $Stock['couleur_id'] == 0 && $Stock['taille_id'] == 0) { // Si il y a du stock mais pas de couleur et pas de taille
			/**
			 * 1er cas : produit avec stock sans critère
			 */
			/* PRODUIT CONTENANT UN STOCK SANS TAILLE NI COULEUR */
			$hidden_input .= '<input type="hidden" value="||" name="critere" />';
			if ($Stock['stock'] != 0) {
				affiche_etat_stock($Stock['stock']);

				$stock_remain = 1;

				echo '
		<p class="retour">' . QUANTITY . ' : <input type="text" size="2" name="qte" value="1" onchange="if (this.value > ' . $Stock['stock'] . ') {this.value=\'' . $Stock['stock'] . '\'; alert(\'' . QUANTITY_INSUFFICIENT . '\');}" maxlength="3" /></p>';
				echo '
		<div class="bouton">
			' . $hidden_input . '
			<a class="blanc" href="Javascript:document.getElementById(\'' . $form . 'ajout' . $prodId . '\').submit()" title="' . ADD_CART . '">' . ADD_CART . '</a>
		</div>';
			}
		} else {
			/*
			 * 2ème cas : produit avec stock avec critère
			 */
			if ($numLigne > 0) {
				$cName = '';
				$sName = '';

				$cId = 0;
				$sId = 0;
				$sPrix = 0;
				/* Indique qu'il n'existe pas de prix / taille pour ce produit. */

				$sqlStockTrue = 'SELECT stock, couleur_id, taille_id FROM peel_stocks WHERE produit_id = "' . $prodId . '"';
				$stockTrue = query($sqlStockTrue);

				$selected = 1; #- cette variable permet d'initialiser les boutons radio en sélectionnant au moins 1 item

				if (num_rows($stockTrue) > 0) {
					echo '
		<p class="retour">
			<select name="critere" >';

					while ($s = fetch_assoc($stockTrue)) {
						$resCouleur = query('SELECT id, nom_' . $_SESSION['langue'] . ' as nom FROM peel_couleurs WHERE id = "' . $s['couleur_id'] . '"')
						;

						$resTaille = query('SELECT id, nom_' . $_SESSION['langue'] . ' as nom, prix, prix_revendeur FROM peel_tailles WHERE id = "' . $s['taille_id'] . '"')
						;

						if ($s['couleur_id'] > 0) {
							/* si il y a une couleur */

							$couleur = fetch_assoc($resCouleur);
							$cId = $couleur['id'];
							$cName = $couleur['nom'];
						}

						if ($s['taille_id'] > 0) {
							/* si il y a une taille */

							$taille = fetch_assoc($resTaille);
							$sName = $taille['nom'];
							if (is_reseller_module_active() && is_reseller()) {
								$sPrix = $taille['prix_revendeur'] * (1 - $objProd->promotion / 100);
							} else {
								$sPrix = $taille['prix'] * (1 - $objProd->promotion / 100);
							}
							$sId = $taille['id'];
						}

						$sqlStock = 'SELECT stock, couleur_id, taille_id FROM peel_stocks_temp WHERE produit_id = "' . $prodId . '" AND couleur_id = "' . vn($cId) . '" AND taille_id = "' . vn($sId) . '"';
						/* Ici on ne recherche que les produits dont le stock est > 0 */

						$resStock = query($sqlStock);

						/* Si la table des stocks temporaires est vide alors on teste la table réelle */

						if (num_rows($resStock) == 0) {
							$sqlStock = 'SELECT stock, couleur_id, taille_id FROM peel_stocks WHERE produit_id = "' . $prodId . '" AND stock > 0 AND couleur_id = "' . $cId . '" AND taille_id = "' . $sId . '"';
							/* Ici on ne recherche que les produits dont le stock est > 0 */

							$resStock = query($sqlStock);
						}

						$Stock = fetch_assoc($resStock);

						if (!empty($Stock['stock'])) {
							$stock_remain = 1;

							echo '
				<option value="' . $cId . '|' . $sId . '|' . $Stock['stock'] . '"' . ($selected == 1? ' selected="selected"':'') . '>';
							// echo '<input type="radio" name="critere" value="'.$cId."|".$sId."|".$Stock['stock'].""';
							if (!empty($cName)) {
								echo COLOR . ' : ' . $cName;
							}
							if (!empty($sName)) {
								echo ' - ' . SIZE . ' : ' . $sName;
							}
							if ($sPrix != 0) {
								if (display_prices_with_taxes_active()) {
									echo ' &nbsp; ' . fprix($sPrix, true) . ' ' . TTC;
								} else {
									$sPrix_ht = $sPrix / $objProd->tva;
									echo ' &nbsp; ' . fprix($sPrix_ht, true) . ' ' . HT;
								}
							}
							echo ($objProd->affiche_stock == 1 ?' - Stock : ' . $Stock['stock'] : '') . '</option>
	';

							$selected++;
						} else {
							echo '
				<option value="NULL">';

							if (!empty($cName)) {
								echo $cName;
							}

							if (!empty($sName)) {
								echo ' &nbsp; ' . $sName;
							}

							echo ' : ' . NO_AVAILABLE . '</option>
	';
						}
					} # FIN DE LA BOUCLE WHILE
					echo '
			</select>
		</p>';
				}
			} else {
				/* Fin de la boucle if ($numLigne > 0) */
				$hidden_input .= '
			<input type="hidden" name="critere" value="||" />';
			}

			if ($stock_remain != 0) {
				affiche_etat_stock($Stock['stock']);
				echo '
		<p class="retour">
			' . QUANTITY . ' :<input type="text" size="3" name="qte" value="1" />
			<input type="hidden" name="option" value="' . vn($sPrix) . '" />
		</p>';

				/* le <p class=retour se ferme dans la fonction template index */
				echo '
		<div class="bouton">
			' . $hidden_input . '
			<input type="hidden" value="' . $Stock['stock'] . '" name="stock" />
			<a class="blanc" href="Javascript:document.getElementById(\'' . $form . 'ajout' . $prodId . '\').submit()" title="' . ADD_CART . '">' . ADD_CART . '</a>
		</div>';
			}
		}

		/* Sinon on propose l'alerte par mail - Fin de la boucle if $numLigne */

		if ($affiche_stock == 1 && $Stock['stock'] != 0 && vn($cId) == 0 && vn($sId) == 0) {
			echo '
		<div style="text-align:right;">
			<br /><span class="label"> Stock : ' . $Stock['stock'] . '</span><br />
		</div>';
		}
		if (!empty($objProd->delai_stock)) {
			echo '<br />' . DELIVERY_STOCK . ' :' . $objProd->delai_stock . '<br />';
		}
		if ($stock_remain == 0) {
			echo '
		<p class="retour">
			<img src="' . $wwwroot . '/images/mail.gif" style="border:0" alt="mail" />&nbsp;
			<a class="label" href="javascript:ProductAlert(\'' . $prodId . '', '' . $wwwroot . '\');" onmouseover="return overlib(\'' . OVERLIB_STOCK . '\');" onmouseout="return nd();">' . STOCK . '</a>
		</p>';
		}
	} else {
		// Peel Shopping
		$sqlstock = 'SELECT * FROM peel_produits WHERE id = "' . $prodId . '"';
		$query = query($sqlstock);
		$p = fetch_object($query);

		$sqlcriteres = 'SELECT c.id as cid, c.nom_' . $_SESSION['langue'] . ' as cname, t.id as tid, t.nom_' . $_SESSION['langue'] . ' as tname, t.prix
			FROM peel_produits_couleurs pc
			INNER JOIN peel_couleurs c ON c.id = pc.couleur_id
			INNER JOIN peel_produits_tailles pt ON pt.produit_id = pc.produit_id
			INNER JOIN peel_tailles t ON t.id = pt.taille_id
			WHERE pc.produit_id = "' . $prodId . '"';
		$query = query($sqlcriteres);
		if ($query && num_rows($query) > 0) {
			echo '<select name="critere">';
			$selected = 1;
			while ($type = fetch_object($query)) {
				echo '<option value="' . $type->cid . '|' . $type->tid . '|"' . ($selected == 1 ? ' selected="selected"' : '') . '>'
				 . (!empty($type->cname) ? COLOR . ' : ' . $type->cname . ' - ' : '')
				 . (!empty($type->tname) ? SIZE . ' : ' . $type->tname : '')
				 . '</option>';
				$selected++;
			}
			echo '</select>';
		} else {
			$hidden_input .= '<input type="hidden" name="critere" value="||" />';
		}

		if ($p->on_rupture == 1 || $p->stock == 0) {
			echo '
				<p style="color:#cd0720;font-style:italic">
					Ce produit est actuellement en rupture de stock. Vous ne pouvez pas le commander.
				</p>';
		} else {
			echo '<p class="retour">' . QUANTITY . ' : <input type="text" size="3" name="qte" value="1" />'
			 . $hidden_input . '
					<input type="hidden" name="option" value="0" />
				</p>
				<div class="bouton">
					<a class="blanc" href="Javascript:document.getElementById(\'' . $form . 'ajout' . $prodId . '\').submit()" title="' . ADD_CART . '">' . ADD_CART . '</a>
				</div>';
			if (!empty($p->delai_stock)) {
				echo '<p>Délai disponible : ' . html_entity_decode($p->delai_stock) . '</p>';
			}
			if ($p->affiche_stock == 1) {
				echo '<p>Stock disponible : ' . $p->stock . '</p>';
			}
		}
	}
	echo '
</form>';
}

Merci.

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

J'ai essayé à tout hasard de placer le formulaire "ajouter au panier" qui se trouve plus bas dans le template du blog, mais j'obtiens une page blanche.

Si vous avez une page blanche, il y a sans doute une erreur fatal mettant fin au script, et les messages d'erreurs ne sont pas affichés sur votre site. Pour voir cette erreur vous pouvez consulter les logs d'erreur de votre hébergement et analyser ces logs ce qui vous permettra ensuite procéder à la résolution du problème.

Share this post


: post
Share on other sites

Posted (edited) · Report post

Parse erreur à la fin de mon script. J'ai regardé et je ne trouve pas, mais je ne suis même pas certain d'avoir placé le bon formulaire avec le bon bouton "ajouter au panier". Là j'ai juste récupéré un bout de code sur template.php, qui m'a "semblé" être le bon.

Alors déjà avant de chercher pour rien, je préférerai être certain d'être sur la bonne voie.

Ai-je trouvé le bon code, et sinon, où faudrait-il récupérer le code du bouton pour pouvoir le réintégrer sur la page d'affichage des catégories ?

Merci.

Edited by xeon

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

a priori vous avez récupéré le code d'ajout au panier des produits. Ce code reprend l'ajout au panier, mais aussi l'affichage des attributs du produit ainsi que l'affichage des stocks. Il faudra adapter ce script pour le rendre compatible avec la page d'affichage des catégories, je vois notamment l'objet objProd qu'il faudra définir.

Si vous le souhaitez nous pouvons le faire pour vous, il faudra dans ce cas faire une demande au service commercial au 01 75 43 67 97 ou via le formulaire de contact https://www.peel.fr/utilisateurs/contact.php

 

Share this post


: post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

Twitter Advisto ecommerce

Facebook PEEL Shopping