Jump to content

[Résolu]Age verification dans le tunnnel de commande


Recommended Posts

Bonjour,

 

Je souhaite avoir votre avis. Dans le post suivant

 

http://www.prestashop.com/forums/topic/243693-age-verification-in-checkout/

 

L'auteur donne une solution pour la vérification de l'âge dans le tunnel de commande. Cela fonctionne bien qu'il y ait un petit bug, mais ce que je souhaite savoir, c'est comment rendre le fait de cocher obligatoire car dans sa solution, la personne peut passer à l'étape suivante sans cocher.

 

Merci pour votre aide

Edited by mjan (see edit history)
Link to comment
Share on other sites

Oui et c'est normal car il fait une grossière erreur.

On ne doit pas donner les mêmes identifiants à des checkboxes différents.

 

Du coup le js qui vérifie si la checkbox cgv est cochée donnera toujours vrai dès que l'une des 2 est cochée.

 

Il faut donc donner un id différent à cette checkbox :

{if $conditions AND $cms_id}
<h3 class="condition_title">{l s='Terms of service & Age verification'}</h3>
<p class="checkbox">
  <input type="checkbox" name="age" id="age" value="1" />
  <label for="age">{l s='I confirm that I am aged 18 or over.'}</label></br>
  <input type="checkbox" name="cgv" id="cgv" value="1" {if $checkedTOS}checked="checked"{/if} />
  <label for="cgv">{l s='I agree to the Terms of Service and will adhere to them unconditionally.'}</label> <a href="{$link_conditions}" class="iframe">{l s='(Read Terms of Service)'}</a>
</p>
<script type="text/javascript">$('a.iframe').fancybox();</script>
{/if} 

et modifier le order-opc.js en conséquence

function updatePaymentMethodsDisplay()
{
	var checked = '';
	if ($('#cgv:checked').length !== 0 && $('#age:checked').length !== 0)
		checked = 1;
	else
		checked = 0;

Si vraiment vous voulez pousser le truc (au cas où un petit malin aurait désactivé js) il faut éditer orderController.php et orderOpcController.php

Link to comment
Share on other sites

Merci. Cela bug plus mais la case à cocher :

 <label for="age">{l s='I confirm that I am aged 18 or over.'}</label></br>

n'est toujours pas obligatoire pourtant j'ai modifié order-carrier.tpl et order-opc.js comme indiqué. en tout cas merci de votre aide précieuse.

Link to comment
Share on other sites

alors remplacez tout le bloc ci-dessus dans order-carrier.tpl par:

{if $conditions AND $cms_id}
	<h3 class="condition_title">{l s='Terms of service'}</h3>
	<p class="checkbox">
	  <input type="checkbox" name="age" id="age" value="1" />
  <label for="age">{l s='I confirm that I am aged 18 or over.'}</label></br>
		<input type="checkbox" name="cgv" id="cgv" value="1" {if $checkedTOS}checked="checked"{/if} autocomplete="off"/>
		<label for="cgv">{l s='I agree to the terms of service and will adhere to them unconditionally.'}</label> <a href="{$link_conditions}" class="iframe">{l s='(Read the Terms of Service)'}</a>
	</p>
	<script type="text/javascript">
		$(document).ready(function() {
			$("input[name = 'processCarrier']").click(function(){ 
				if($('#age:checked').length == 0)
					alert("{l s='You must check age validation first.' js=1}");
				});
	        $("a.iframe").fancybox({
	            'type' : 'iframe',
	            'width':600,
	            'height':600
	        });
	    });
	</script>
{/if}

Et videz votre cache navigateur (ctrl+f5)

 

Et si vous voulez activer la vérification en processus 1 étape remplacez le bloc vers la ligne 746 de order-opc.js par:

	// Term Of Service (TOS)
	$('#cgv').click(function() {
	if($('#age:checked').length !== 0)
		updatePaymentMethodsDisplay();
	else
		alert('Veuillez valider votre majorité.');
	});
Edited by Eolia (see edit history)
Link to comment
Share on other sites

Merci cela fonctionne parfaitement. Une dernière faveur : comment mettre ce lien en blank page afin que cela s'ouvre sur un nouvel onglet ou une nouvelle fenêtre. Merci


<a href="{$link_conditions}" class="iframe">{l s='(Read the Terms of Service)'}</a>
Link to comment
Share on other sites

Bonsoir,

 

Ca se complique. L'erreur provient à plusieurs moment soit en rechargeant la page, soit en cliquant sur un menu ou lorsque l'on fait appel au champ de recherche. Voici les messages de la console

 

 

 

 
   
  <script type=""text/javascript"">/* "+"
"+name_detail+"
ajouté auVotre panier";$.ambiance({message:string_info,type:"success",title:title_add_to_cart,timeout:7});}" class="errorSourceCode "><link href="http://jcorporate.fr/themes/pt_winestore/cache/v_529_d4128086a725f5d...    
ReferenceError: jQuery is not defined
ReferenceError: jQuery is not defined
ReferenceError: $ is not defined
  $(window).load(    
</script>
ReferenceError: $ is not defined
   

ou encore

ReferenceError: jQuery is not defined

 

Link to comment
Share on other sites

Il y a un truc que je ne pige pas...

Les erreurs que vous me décrivez n'interviennent pas sur la page order (celle qui a été modifiée)

 

J'ai appliqué exactement les mêmes modifs sur une 1.5 et une 1.6 sans avoir ce problème.

 

Sur quelle version êtes-vous et à partir de quel moment ca a buggué ? (vu que cela fonctionnait hier)

Link to comment
Share on other sites

En fait ça a bugué peu de temps après hier, après les modifications, mais je n'ai pas eu le temps de revenir sur le forum. Je suis sur 1.6.9 et j'ai rien modifié depuis.


J'ai juste installé un module je l'enlève pour voir

Link to comment
Share on other sites

Résolu, en fait je viens de contacter le fabricant du template qui me dit que c'est le module ajax de recherche : qu'il bug pas mais lorsque l'on écrit trop vite dans le champ de recherche alors il y a ce message d'erreur car le module n'a pas le temps de chercher. Bizarre mais bon

Link to comment
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
×
×
  • Create New...