THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3
  • manu
  • faï tot petar miladiu

Offline

#1 envoi d'un produit à un ami

(06-10-2009 08:01:24)


A la demande voila un ptit tuto pour ajouter un lien sur votre fiche produit "envoyer à un ami" le tout sans plugin (même si tout à fait possible de le faire en plugin pour le rendre administrable par exemple, mais étant pressé je suis allez au plus vite sans pour autant toucher aux fonctionnalités de Thelia)

Pour ce faire on aura besoin de jquery (fournit de base dans thelia) et thickbox (à vous de voir après si vous voulez l'adopter avec autre chose et je ferai un autre post pour un hack thickbox Firefox pour mac car il marche pas très bien dessus de base).

dans le <head> de la page produit, on va inclure les librairies qu'on va utiliser plus la fonction javascript.

Dans votre corps de la page il faudra faire un lien "envoyer à un ami" et rajouter à la fin (c'est ce que j'ai l'habitude de faire) avant le </body> un div caché visuellement avec l'attribut style="display:none" et on lui applique un id

il faudra faire un autre fichier php qui se chargera de l'envoi du mail.

allez trève de bavardage passons au code :

dans le <head> de mon fichier:

<script type="text/javascript" src="votre/chemin/jquery.js"></script>
<script type="text/javascript" src="votre/chemin/thickbox.js"></script>
<link rel="stylesheet" href="votre/chemin/thickbox.css" type="text/css" media="screen" />
<script type="text/javascript">
	function envoiami(){
   		$.ajax({
   			type:'GET',
   			url:'envoiami.php',
   			data:'email='+$("#emailami").val()+"&nom="+$("#nomprenom").val(),
   			success: function(html){
   				tb_remove();
   			}
   		
   		})
   	}
</script>

Pour vous expliquer un peu, on inclut donc les librairies puis on fait la fonction javascript qui va nous permettre de faire de l'ajax, pour ceux qui connaissent vous voyez déjà ce qui reste à faire big_smile pour les autres on va faire du pas à pas

le lien "envoyer à un ami" :

                <a class="thickbox" href="#TB_inline?height=200&width=400&inlineId=envoiami&modal=true">Envoyer à un ami </a>

maintenant le div à rajouter en bas de page :

<div id="envoiami" style="display:none">
	<div class="formulaire">		
		<h3>Envoyez cette page à un ami.</h3>
		<p>Vos noms et prénoms : <input type="text" name="nomprenom" id="nomprenom" value="#CLIENT_NOM #CLIENT_PRENOM"></p>
		<p>E-mail de votre ami(e) : <input type="text" name="email" id="emailami"></p>
		<input class="valider" type="button" value="annuler" onClick="tb_remove();"> <input class="valider" type="button" value="envoyer" onClick="envoiami();">		
	</div>
</div>

Il manque désormais plus que le fichier php qui va se charger de l'envoi du mail :

fichier envoiami.php :

<?php
include_once(realpath(dirname(__FILE__)) . "/classes/Variable.class.php");

$email = strip_tags($_GET["email"]);
$nom = strip_tags($_GET["nom"]);

$url = $_SERVER["HTTP_REFERER"];

$nomsite = new Variable();
$nomsite->charger("nomsite");

$emailcontact = new Variable();
$emailcontact->charger("emailcontact");


$sujet = $nom." vous suggère une annonce";

$texte = "Bonjour,\r\n ".$nom." veut vous faire découvrir une annonce qui vous intéressera : \r\n".$url;

mail($email,$sujet,$texte,"From: ".$nomsite->valeur."<".$emailcontact->valeur.">");
?>

à vous d'adapter les textes à votre besoin, la c'est pour mon site de vente de vaches tongue


http://doc.thelia.net/
http://thelia.net/modules
http://raynaud.io
PGP public Key : 0xC6E546A6

Offline


Pas mal je vais tester ça smile


Livre d'Occasion
Montre Hello Kitty

Offline


Testé et approuvé... mais pas sur la page produits car il rentre en conflit avec superbox.
Et chose "bizarre" bien qu'on impose des dimensions le cadre ne les respecte pas ! Et même chez moi, il grandit entre la page index et la page rubrique ! (mêmes codes)

Offline


il rentre en conflit avec superbox

C'est normal, car le code de manu utilise thickbox, une autre 'box' jQuery.

Il suffit de l'adapter (le code, pas manu wink ) pour qu'il fonctionne avec superbox.

Last edited by roadster31 (21-02-2010 20:21:15)


OpenStudio Toulouse

  • manu
  • faï tot petar miladiu

Offline


Exact, je ne l'ai pas fait pour le template de base mais pour mon site, qui n'utilise pas superbox, donc il peut y avoir conflit.

De plus, lorsque je le l'ai fait, thickbox était maintenu, ce qui n'est plus le cas aujourd'hui (et c'est bien bien dommage).


http://doc.thelia.net/
http://thelia.net/modules
http://raynaud.io
PGP public Key : 0xC6E546A6

Offline


salut,
un bon vieux lien comme çà, ca peut dépanner aussi :

<a href="mailto:emaildetonami&subject=super%20boutique&body=je%20te%20conseille%20cette%20boutique">Envoyer à un ami</a>

Pour le fichier PHP "envoiami.php" que Manu propose, ajouter une saisie obligatoire ("captcha" ou réponse à une question "simple") serait la bienvenue pour éviter que ce script "envoiami.php" ne soit utilisé à des fins de mass-mailing ou autre.

a+
Pierre


Lisieux et Paris
Developpement web sur mesure - Thelia 1.5.4 - Spip 3 - WordPress
Formations pros sur le référencement naturel
G+

Offline


Bonjour,

roadster31 wrote:

il rentre en conflit avec superbox

C'est normal, car le code de manu utilise thickbox, une autre 'box' jQuery.

Il suffit de l'adapter (le code, pas manu wink ) pour qu'il fonctionne avec superbox.

quelqu'un saurait-il adapter le code à superbox et l'ajouter dans cette discussion?

Merci
--
universalix

Offline


Bonjour,
je viens de trouver une bidouille face au problème de blocage d'internet explorer en lien avec l'incompatibilité de thickbox et superbox.

il faut modifier le code avec :
; parent.location.reload(1)
dans le div en bas de page ainsi :

<div id="envoiami" style="display:none">
    <div class="formulaire">        
        <h3>Envoyez cette page à un ami.</h3>
        <p>Vos noms et prénoms : <input type="text" name="nomprenom" id="nomprenom" value="#CLIENT_NOM #CLIENT_PRENOM"></p>
        <p>E-mail de votre ami(e) : <input type="text" name="email" id="emailami"></p>
        <input class="valider" type="button" value="annuler" onClick="tb_remove(); parent.location.reload(1)"> <input class="valider" type="button" value="envoyer" onClick="envoiami(); parent.location.reload(1)">        
    </div>
</div>

après fermeture de la fenêtre pop-up, la page est rechargée et le site est de nouveau fonctionnel.

Oui, c'est du bricolage mais ça permettra de patienter jusqu'à la réponse d'un expert.

--
universalix

Offline


Est-ce que l'on peut l'adapter à une version > 1.5 ? De quelle façon ?


v. 1.5.4 - v 2.3.4 - v 2.4.3

Offline


Pas d'avis sur le sujet ? Pas de plugin en cours que je pourrais tester ?


v. 1.5.4 - v 2.3.4 - v 2.4.3