Joomladay francophone 2018 à Paris 18 et 19 mai

Position Recaptcha

Réduire
X
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • Position Recaptcha

    Bonjour à tous,

    Je viens de me rendre compte que la position du recaptcha sur le formulaire d'inscription n'est pas idéalement placé:
    - Lorsque l'on veux s'inscrire sur le site par mon module placé tout en haut du site, le module Recaptcha apparait en bas de la page, ce qui, est idéal.

    Mais lorsque l'on commande, après avoir mis les articles dans le panier et valider le panier, on est rediriger vers la page d'inscription de virtuemart (grâce au module de KC registration). A cette page, le Recaptcha se trouve en haut de la page.

    Vous pouvez voir sur mon site: www.agenairshow.fr

    Auriez-vous une solution svp?
    Merci

  • #2
    Re : Position Recaptcha

    Bonjour,
    C'est Virtuemart : tu peux donc normalement éditer le fichier de la page d'inscription.
    Avant tout, quelle version de Virtuemart utilises-tu ?
    Cordialement,
    Chabi01 - http://www.xlformation.com

    Commentaire


    • #3
      Re : Position Recaptcha

      Bonjour,
      J'utilise la version 3.0.9 de Virtuemart.

      Commentaire


      • #4
        Re : Position Recaptcha

        Re,
        dans le fichier components/com_virtuemart/views/user/tmpl, sauvegarde le fichier edit_address.php (pour avoir une copie de sauvegarde avant de le modifier).
        A la fin de ce fichier, tu as de la ligne 107 à 122 l'appel du captcha qui est fait avant l'appel des autres éléments.
        Déplace ces lignes entre les lignes 138 et 139 et regarde si cela te convient et si le formulaire fonctionne correctement.
        ATTENTION : je n'ai pas fait le test de mon côté (je n'ai pas de VM3 installé en test pour le moment).
        Tu as donc au départ :
        Code:
        <?php // captcha addition
        	if(VmConfig::get ('reg_captcha')){
        		JHTML::_('behavior.framework');
        		JPluginHelper::importPlugin('captcha');
        		$captcha_visible = vRequest::getVar('captcha');
        		$dispatcher = JDispatcher::getInstance(); $dispatcher->trigger('onInit','dynamic_recaptcha_1');
        		$hide_captcha = (VmConfig::get ('oncheckout_only_registered') or $captcha_visible) ? '' : 'style="display: none;"';
        		?>
        		<fieldset id="recaptcha_wrapper" <?php echo $hide_captcha ?>>
        			<?php if(!VmConfig::get ('oncheckout_only_registered')) { ?>
        				<span class="userfields_info"><?php echo vmText::_ ('COM_VIRTUEMART_USER_FORM_CAPTCHA'); ?></span>
        			<?php } ?>
        			<div id="dynamic_recaptcha_1"></div>
        		</fieldset>
        <?php }
        	// end of captcha addition
        
        	if (!class_exists ('VirtueMartCart')) {
        		require(VMPATH_SITE . DS . 'helpers' . DS . 'cart.php');
        	}
        
        	if (count ($this->userFields['functions']) > 0) {
        		echo '<script language="javascript">' . "\n";
        		echo join ("\n", $this->userFields['functions']);
        		echo '</script>' . "\n";
        	}
        
        	echo $this->loadTemplate ('userfields');
        	renderControlButtons($this,$rview);
        	if ($this->userDetails->JUser->get ('id')) {
        		echo $this->loadTemplate ('addshipto');
        	} ?>
        	<input type="hidden" name="option" value="com_virtuemart"/>
        	<input type="hidden" name="view" value="user"/>
        	<input type="hidden" name="controller" value="user"/>
        	<input type="hidden" name="task" value="saveUser"/>
        	<input type="hidden" name="layout" value="<?php echo $this->getLayout (); ?>"/>
        	<input type="hidden" name="address_type" value="<?php echo $this->address_type; ?>"/>
        	<?php if (!empty($this->virtuemart_userinfo_id)) {
        		echo '<input type="hidden" name="shipto_virtuemart_userinfo_id" value="' . (int)$this->virtuemart_userinfo_id . '" />';
        	}
        	echo JHtml::_ ('form.token');
        	?>
        
        </fieldset>
        et tu dois modifier le fichier pour avoir :
        Code:
        	if (!class_exists ('VirtueMartCart')) {
        		require(VMPATH_SITE . DS . 'helpers' . DS . 'cart.php');
        	}
        
        	if (count ($this->userFields['functions']) > 0) {
        		echo '<script language="javascript">' . "\n";
        		echo join ("\n", $this->userFields['functions']);
        		echo '</script>' . "\n";
        	}
        
        	echo $this->loadTemplate ('userfields');
        	renderControlButtons($this,$rview);
        	if ($this->userDetails->JUser->get ('id')) {
        		echo $this->loadTemplate ('addshipto');
        	} ?>
        	
        	<?php // captcha addition
        	if(VmConfig::get ('reg_captcha')){
        		JHTML::_('behavior.framework');
        		JPluginHelper::importPlugin('captcha');
        		$captcha_visible = vRequest::getVar('captcha');
        		$dispatcher = JDispatcher::getInstance(); $dispatcher->trigger('onInit','dynamic_recaptcha_1');
        		$hide_captcha = (VmConfig::get ('oncheckout_only_registered') or $captcha_visible) ? '' : 'style="display: none;"';
        		?>
        		<fieldset id="recaptcha_wrapper" <?php echo $hide_captcha ?>>
        			<?php if(!VmConfig::get ('oncheckout_only_registered')) { ?>
        				<span class="userfields_info"><?php echo vmText::_ ('COM_VIRTUEMART_USER_FORM_CAPTCHA'); ?></span>
        			<?php } ?>
        			<div id="dynamic_recaptcha_1"></div>
        		</fieldset>
        <?php }
        	// end of captcha addition
        	<input type="hidden" name="option" value="com_virtuemart"/>
        	<input type="hidden" name="view" value="user"/>
        	<input type="hidden" name="controller" value="user"/>
        	<input type="hidden" name="task" value="saveUser"/>
        	<input type="hidden" name="layout" value="<?php echo $this->getLayout (); ?>"/>
        	<input type="hidden" name="address_type" value="<?php echo $this->address_type; ?>"/>
        	<?php if (!empty($this->virtuemart_userinfo_id)) {
        		echo '<input type="hidden" name="shipto_virtuemart_userinfo_id" value="' . (int)$this->virtuemart_userinfo_id . '" />';
        	}
        	echo JHtml::_ ('form.token');
        	?>
        
        </fieldset>
        Chabi01 - http://www.xlformation.com

        Commentaire


        • #5
          Re : Position Recaptcha

          Ah ! Au fait, tu peux également de manière plus propre faire un overide sur ton template en faisant la modif sur le fichier copié dans /templates/ton_template/html/com_virtuemart/user/edit_address.php

          De cette manière, tu ne touches pas au fichier de VM natif et si tu as une mise à jour, tu ne perds pas tes modifications
          Chabi01 - http://www.xlformation.com

          Commentaire


          • #6
            Re : Position Recaptcha

            Bonjour,

            Attention aux balises PHP, chabi01
            Voici le code complet final qui fonctionne (fichier edit_address.php) :
            Code:
            <?php
            /**
             *
             * Enter address data for the cart, when anonymous users checkout
             *
             * @package    VirtueMart
             * @subpackage User
             * @author Oscar van Eijk, Max Milbers
             * @link http://www.virtuemart.net
             * @copyright Copyright (c) 2004 - 2010 VirtueMart Team. All rights reserved.
             * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
             * VirtueMart is free software. This version may have been modified pursuant
             * to the GNU General Public License, and as distributed it includes or
             * is derivative of works licensed under the GNU General Public License or
             * other free or open source software licenses.
             * @version $Id: edit_address.php 8768 2015-03-02 12:22:14Z Milbo $
             */
            // Check to ensure this file is included in Joomla!
            defined ('_JEXEC') or die('Restricted access');
            
            // Implement Joomla's form validation
            JHtml::_ ('behavior.formvalidation');
            JHtml::stylesheet ('vmpanels.css', JURI::root () . 'components/com_virtuemart/assets/css/');
            
            if (!class_exists('VirtueMartCart')) require(VMPATH_SITE . DS . 'helpers' . DS . 'cart.php');
            $this->cart = VirtueMartCart::getCart();
            $url = 0;
            if ($this->cart->_fromCart or $this->cart->getInCheckOut()) {
            	$rview = 'cart';
            }
            else {
            	$rview = 'user';
            }
            
            function renderControlButtons($view,$rview){
            	?>
            <div class="control-buttons">
            	<?php
            
            
            	if ($view->cart->getInCheckOut() || $view->address_type == 'ST') {
            		$buttonclass = 'default';
            	}
            	else {
            		$buttonclass = 'button vm-button-correct';
            	}
            
            
            	if (VmConfig::get ('oncheckout_show_register', 1) && $view->userDetails->JUser->id == 0 && !VmConfig::get ('oncheckout_only_registered', 0) && $view->address_type == 'BT' and $rview == 'cart') {
            		echo '<div id="reg_text">'.vmText::sprintf ('COM_VIRTUEMART_ONCHECKOUT_DEFAULT_TEXT_REGISTER', vmText::_ ('COM_VIRTUEMART_REGISTER_AND_CHECKOUT'), vmText::_ ('COM_VIRTUEMART_CHECKOUT_AS_GUEST')).'</div>';			}
            	else {
            		//echo vmText::_('COM_VIRTUEMART_REGISTER_ACCOUNT');
            	}
            	if (VmConfig::get ('oncheckout_show_register', 1) && $view->userDetails->JUser->id == 0 && $view->address_type == 'BT' and $rview == 'cart') {
            		?>
            		<button name="register" class="<?php echo $buttonclass ?>" type="submit" onclick="javascript:return myValidator(userForm,true);"
            				title="<?php echo vmText::_ ('COM_VIRTUEMART_REGISTER_AND_CHECKOUT'); ?>"><?php echo vmText::_ ('COM_VIRTUEMART_REGISTER_AND_CHECKOUT'); ?></button>
            		<?php if (!VmConfig::get ('oncheckout_only_registered', 0)) { ?>
            			<button name="save" class="<?php echo $buttonclass ?>" title="<?php echo vmText::_ ('COM_VIRTUEMART_CHECKOUT_AS_GUEST'); ?>" type="submit"
            					onclick="javascript:return myValidator(userForm, false);"><?php echo vmText::_ ('COM_VIRTUEMART_CHECKOUT_AS_GUEST'); ?></button>
            		<?php } ?>
            		<button class="default" type="reset"
            				onclick="window.location.href='<?php echo JRoute::_ ('index.php?option=com_virtuemart&view=' . $rview.'&task=cancel'); ?>'"><?php echo vmText::_ ('COM_VIRTUEMART_CANCEL'); ?></button>
            	<?php
            	}
            	else {
            		?>
            		<button class="<?php echo $buttonclass ?>" type="submit"
            				onclick="javascript:return myValidator(userForm,true);"><?php echo vmText::_ ('COM_VIRTUEMART_SAVE'); ?></button>
            		<button class="default" type="reset"
            				onclick="window.location.href='<?php echo JRoute::_ ('index.php?option=com_virtuemart&view=' . $rview.'&task=cancel'); ?>'"><?php echo vmText::_ ('COM_VIRTUEMART_CANCEL'); ?></button>
            	<?php } ?>
            </div>
            <?php
            }
            
            ?>
            <h1><?php echo $this->page_title ?></h1>
            <?php
            
            
            $task = '';
            if ($this->cart->getInCheckOut()){
            	//$task = '&task=checkout';
            }
            $url = JRoute::_ ('index.php?option=com_virtuemart&view='.$rview.$task, $this->useXHTML, $this->useSSL);
            
            echo shopFunctionsF::getLoginForm (TRUE, FALSE, $url);
            
            ?>
            
            <form method="post" id="userForm" name="userForm" class="form-validate" action="<?php echo JRoute::_('index.php?option=com_virtuemart&view=user',$this->useXHTML,$this->useSSL) ?>" >
            <fieldset>
            	<h2><?php
            		if ($this->address_type == 'BT') {
            			echo vmText::_ ('COM_VIRTUEMART_USER_FORM_EDIT_BILLTO_LBL');
            		}
            		else {
            			echo vmText::_ ('COM_VIRTUEMART_USER_FORM_ADD_SHIPTO_LBL');
            		}
            		?>
            	</h2>
            
            	<!--<form method="post" id="userForm" name="userForm" action="<?php echo JRoute::_ ('index.php'); ?>" class="form-validate">-->
            	<?php renderControlButtons($this,$rview); ?>
            
            	<?php
            	if (!class_exists ('VirtueMartCart')) {
            		require(VMPATH_SITE . DS . 'helpers' . DS . 'cart.php');
            	}
            
            	if (count ($this->userFields['functions']) > 0) {
            		echo '<script language="javascript">' . "\n";
            		echo join ("\n", $this->userFields['functions']);
            		echo '</script>' . "\n";
            	}
            
            	echo $this->loadTemplate ('userfields');
            	renderControlButtons($this,$rview);
            	if ($this->userDetails->JUser->get ('id')) {
            		echo $this->loadTemplate ('addshipto');
            	} ?>
            	
            	<?php // captcha addition
            	if(VmConfig::get ('reg_captcha')){
            		JHTML::_('behavior.framework');
            		JPluginHelper::importPlugin('captcha');
            		$captcha_visible = vRequest::getVar('captcha');
            		$dispatcher = JDispatcher::getInstance(); $dispatcher->trigger('onInit','dynamic_recaptcha_1');
            		$hide_captcha = (VmConfig::get ('oncheckout_only_registered') or $captcha_visible) ? '' : 'style="display: none;"';
            		?>
            		<fieldset id="recaptcha_wrapper" <?php echo $hide_captcha ?>>
            			<?php if(!VmConfig::get ('oncheckout_only_registered')) { ?>
            				<span class="userfields_info"><?php echo vmText::_ ('COM_VIRTUEMART_USER_FORM_CAPTCHA'); ?></span>
            			<?php } ?>
            			<div id="dynamic_recaptcha_1"></div>
            		</fieldset>
            <?php }
            	// end of captcha addition ?>
            	
            	<input type="hidden" name="option" value="com_virtuemart"/>
            	<input type="hidden" name="view" value="user"/>
            	<input type="hidden" name="controller" value="user"/>
            	<input type="hidden" name="task" value="saveUser"/>
            	<input type="hidden" name="layout" value="<?php echo $this->getLayout (); ?>"/>
            	<input type="hidden" name="address_type" value="<?php echo $this->address_type; ?>"/>
            	<?php if (!empty($this->virtuemart_userinfo_id)) {
            		echo '<input type="hidden" name="shipto_virtuemart_userinfo_id" value="' . (int)$this->virtuemart_userinfo_id . '" />';
            	}
            	echo JHtml::_ ('form.token');
            	?>
            
            </fieldset>
            </form>

            Commentaire


            • #7
              Re : Position Recaptcha

              Bonjour,
              Merci pour le partage de ta solution
              Cordialement,
              Chabi01 - http://www.xlformation.com

              Commentaire


              • #8
                Re : Position Recaptcha

                Si c'est réglé merci de l'indiquer :
                http://forum.joomla.fr/announcement.php?f=230

                Commentaire

                Annonce

                Réduire
                1 sur 2 < >

                C'est [Réglé] et on n'en parle plus ?

                A quoi ça sert ?
                La mention [Réglé] permet aux visiteurs d'identifier rapidement les messages qui ont trouvé une solution.

                Merci donc d'utiliser cette fonctionnalité afin de faciliter la navigation et la recherche d'informations de tous sur le forum.

                Si vous deviez oublier de porter cette mention, nous nous permettrons de le faire à votre place... mais seulement une fois
                Comment ajouter la mention [Réglé] à votre discussion ?
                1 - Aller sur votre discussion et éditer votre premier message :


                2 - Cliquer sur la liste déroulante Préfixe.

                3 - Choisir le préfixe [Réglé].


                4 - Et voilà… votre discussion est désormais identifiée comme réglée.

                2 sur 2 < >

                Assistance au forum - Outil de publication d'infos de votre site

                Compatibilité: PHP 4.1,PHP4, 5, 6DEV MySQL 3.2 - 5.5 MySQLi from 4.1 ( @ >=PHP 4.4.9)

                Support Version de Joomla! : | J!3.0 | J!2.5.xx | J!1.7.xx | J!1.6.xx | J1.5.xx | J!1.0.xx |

                Version française (FR) D'autres versions sont disponibles depuis la version originale de FPA

                UTILISER À VOS PROPRES RISQUES :
                L'exactitude et l'exhaustivité de ce script ainsi que la documentation ne sont pas garanties et aucune responsabilité ne sera acceptée pour tout dommage, questions ou confusion provoquée par l'utilisation de ce script.

                Problèmes connus :
                FPA n'est actuellement pas compatible avec des sites Joomla qui ont eu leur fichier configuration.php déplacé en dehors du répertoire public_html.

                Installation :

                1. Téléchargez l'archive souhaitée : http://afuj.github.io/FPA/

                Archive zip : https://github.com/AFUJ/FPA/zipball/master

                2. Décompressez le fichier de package téléchargé sur votre propre ordinateur (à l'aide de WinZip ou d'un outil de décompression natif).

                3. Lisez le fichier LISEZMOI inclus pour toutes les notes de versions spécifiques.

                4. LIRE le fichier de documentation inclus pour obtenir des instructions d'utilisation détaillées.

                5. Téléchargez le script fpa-fr.php à la racine de votre site Joomla!. C'est l'endroit que vous avez installé Joomla et ce n'est pas la racine principale de votre serveur. Voir les exemples ci-dessous.

                6. Exécutez le script via votre navigateur en tapant: http:// www. votresite .com/ fpa-fr.php
                et remplacer www. votresite .com par votre nom de domaine


                Exemples:
                Joomla! est installé dans votre répertoire web et vous avez installé la version française du fichier FPA:
                Télécharger le script fpa-fr.php dans: /public_html/
                Pour executer le script: http://www..com/fpa-fr.php

                Joomla! est installé dans un sous-répertoire nommé "cms" et vous avez installé la version française du fichier FPA:
                Télécharger le script fpa-fr.php dans: /public_html/cms/
                Pour executer le script: http://www..com/cms/fpa-fr.php

                En raison de la nature très sensible de l'information affichée par le script FPA, il doit être retiré immédiatement du serveur après son utilisation.

                Pour supprimer le script de votre site, utilisez le lien de script de suppression fourni en haut de la page du script. Si le lien de suppression échoue pour supprimer le script, utilisez votre programme FTP pour le supprimer manuellement ou changer le nom une fois que le script a généré les données du site et le message publié sur le forum. Si le script est toujours présent sur le site, il peut être utilisé pour recueillir suffisamment d'informations pour pirater votre site. Le retrait du script empêche des étrangers de l'utiliser pour jeter un oeil à la façon dont votre site est structuré et de détecter les défauts qui peuvent être utilisé à vos dépends.
                Voir plus
                Voir moins
                Travaille ...
                X