Jump to content

Rajouter une case à cocher avant le paiement


Recommended Posts

Bonjour,
J'aimerais rajouter une case "Je certifie avoir plus de 16ans" qui aurais le même comportement que la case "J'ai lu les conditions générales..." et qui empêche de passer a l'étape suivante sans quelle soi cocher.
J'ai déjà tenté de modifier le fichier "order-carrier.tpl" sans succès.

Merci de votre aide par avance.

Link to comment
Share on other sites

Voici une modif possible, les deux checkbox ont le meme message d'avertissement ( modifiable)

ajouter au order-carrier.tpl apres le premier {if $conditions}

{if $conditions}
{l s='Texte Verification age..en anglais'}


       <input type="checkbox" name="age" id="age" value="1" {if $checkedTOS}checked="checked"{/if} />
{l s='Texte de l'age minimum...en anglais'}

{/if}



fichier conditions.js :

function acceptCGV(msg)
{
   if ($('#cgv').length && !$('input#cgv:checked').length)
   {
       alert(msg);
       return false;
   }
   else
   if ($('#age').length && !$('input#age:checked').length)
   {
       alert(msg);
       return false;
   }
   else

       return true;
}



Pour modifier le message d'avertissement et traduire les nouvelles phrases, il faut aller dans le back office-> translation -> Front office , Section order-carrier.

Link to comment
Share on other sites

En faite en allant dans traduction j'ai trouver les conditions de vente et j'ai ajouter "J'ai lu les conditions générales de vente, j'y adhère sans réserves et je certifie avoir 16 ans ou plus." Mais merci quand même parce que c'est en me parlant de traduction que j'y est penser et comme ça il y a qu'une seul case a cocher. Mais bon ça pourra servir a d'autres ou pour moi a autre chose. ;-)

Link to comment
Share on other sites

  • 3 years later...

Pratique et simple à mettre en place.

Merci Eltitos

 

Pour version 1.5, il n'existe plus de fichier conditions.js

Il suffit de modifier directement le script à l'intérieur du template: order-carrier.tpl

 

order-carrier.tpl (thême de base)

        var msg = "{l s='You must agree to the terms of service before continuing.' js=1}";
	var msg2 = "{l s='La vente de nos produits est interdite aux mineurs.' js=1}";
	{literal}
	function acceptCGV()
	{
		if ($('#cgv').length && !$('input#cgv:checked').length)
		{
			alert(msg);
			return false;
		}
		else if ($('#major').length && !$('input#major:checked').length)
		{
			alert(msg2);
			return false;
		}		    
		else
			return true;
	}
	{/literal}

order-carrier.tpl (thême de base)

	<p class="checkbox">
		<input type="checkbox" name="major" id="major" value="1" {if $checkedTOS}checked="checked"{/if} autocomplete="off"/>
		<label for="major">{l s='Je certifie être agé de plus de 18 ans.'}</label>
	</p>
Edited by MonVinDirect (see edit history)
Link to comment
Share on other sites

  • 1 year later...

Bonsoir,

 

Pour la 1.6 le fichier est dans order-carrier.js (JS du thème)

Par contre une simple vérif en JS est toujours contournable

C'est d'ailleurs prévu côté serveur aussi sur le orderController donc à adapter aussi

if ($is_advanced_payment_api === false && Configuration::get('PS_CONDITIONS')
&& (!Validate::isBool($cgv) || $cgv == false))
Tools::redirect('index.php?controller=order&step=2');
Link to comment
Share on other sites

  • 3 months later...

Désolé pour ma réponse un peu tardive

je tiens d’abord à vous remercier pour votre réponse

 

par contre je n'ai pas tout compris (je nage un peu dans les scripts :) )

j'utilise cette fonction pour mes départs en vacances afin d'informer mes clients de la date de reprise des expeditions

 

je suis sur une version 1.6.1.0

 

voila ce que j'ai modifié:

 

dans le fichier (order-carrier.tpl)

 

lignes à modifier

{if isset($override_tos_display) && $override_tos_display}
                    {$override_tos_display}
                {else}
                    <div class="box">
                        <p class="checkbox">
                            <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|escape:'html':'UTF-8'}" class="iframe" rel="nofollow">{l s='(Read the Terms of Service)'}</a>
                        </p>
                    </div>
                {/if}
{if $conditions}
	{addJsDefL name=msg_order_carrier}{l s='You must agree to the terms of service before continuing.' js=1}{/addJsDefL}
{/if}

Ce que j'ai modifié:

{if isset($override_tos_display) && $override_tos_display}
                    {$override_tos_display}
                {else}
                    <div class="box">
                        <p class="checkbox">
                            <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|escape:'html':'UTF-8'}" class="iframe" rel="nofollow">{l s='(Read the Terms of Service)'}</a>
                        </p>
						</br>
						<p class="checkbox">
                            <input type="checkbox" name="perso" id="perso" value="1" {if $checkedTOS}checked="checked"{/if} />
                            <label for="perso">{l s='Ma Condition à cliquer'}</label>
                        </p>
                    </div>
                {/if}
{if $conditions}
	{addJsDefL name=msg_order_carrier}{l s='You must agree to the terms of service before continuing.' js=1}{/addJsDefL}
	{addJsDefL name=msg_perso}{l s='Mon Alerte Personnalisée.' js=1}{/addJsDefL}
{/if}

Et pour le fichier order-carrier.js

 

Lignes à modifier:

function acceptCGV()
{
	if (typeof msg_order_carrier != 'undefined' && $('#cgv').length && !$('input#cgv:checked').length)
	{
		if (!!$.prototype.fancybox)
		    $.fancybox.open([
	        {
	            type: 'inline',
	            autoScale: true,
	            minHeight: 30,
	            content: '<p class="fancybox-error">' + msg_order_carrier + '</p>'
	        }],
			{
		        padding: 0
		    });
		else
		    alert(msg_order_carrier);
	}
	else
		return true;
	return false;
}

Ce que j'ai modifié:

function acceptCGV()
{
	if (typeof msg_order_carrier != 'undefined' && $('#cgv').length && !$('input#cgv:checked').length)
	{
		if (!!$.prototype.fancybox)
		    $.fancybox.open([
	        {
	            type: 'inline',
	            autoScale: true,
	            minHeight: 30,
	            content: '<p class="fancybox-error">' + msg_order_carrier + '</p>'
	        }],
			{
		        padding: 0
		    });
		else
		    alert(msg_order_carrier);
	}
	else if (typeof msg_order_carrier != 'undefined' && $('#perso').length && !$('input#perso:checked').length)
	{
		if (!!$.prototype.fancybox)
		    $.fancybox.open([
	        {
	            type: 'inline',
	            autoScale: true,
	            minHeight: 30,
	            content: '<p class="fancybox-error">' + msg_perso + '</p>'
	        }],
			{
		        padding: 0
		    });
		else
		    alert(msg_perso);
	}	
	else
		return true;
	return false;
}

Voila toute à l'air de fonctionner correctement cependant je ne suis pas certain que la modification du code order-carrier.js soit correcte pouvez-vous me confirmer cela

 

Merci Christophe

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...