web-dev-qa-db-fra.com

Loi sur les cookies et Folcomedia - Alerte cookies

J'utilise Joomla! 3.3.6 et Folcomedia - Plugin Alerte Cookies.

C'est un bon plugin, mais en Italie, il existe une législation très stricte. En pratique, l'activation de cookies tiers (presque tous!) N'EST PAS autorisée sans accord. J'ai donc ajouté quelques modifications supplémentaires, bloquant par exemple les publicités et les modules sociaux si le cookie Folcomedia n'était pas présent. et l'ajout d'une actualisation de page lorsque le navigateur accepte, pour charger tous les modules manquants.

C’est déjà bien, mais c’est plus qu’une semaine et j’essaie d’intégrer l’accord pour faire défiler la page. Je ne suis pas un expert, mais si j'essaie avec une page de test php, cela fonctionne, mais cela n'a aucun effet à l'intérieur du plugin.

Donc, la première question, sur mon site sont en train de charger ces jQuery, sont-elles suffisantes?

js/jquery.min.js js/jquery-noconflict.js js/jquery-migrate.min.js js/jquery.cycle.all.js js/jquery.simplemodal.js

Si le cookie n'existe pas, le plugin charge cette bannière (en bas ou en haut de la page).

if ($type_affichage == 1) { $function_close = 'onclick="CloseCadreAlertCookie(); javascript:ssxl(\'LINK=Consenso%20Cookie\'); window.location.reload(true)"'; } 

        $text_btn_more = '<div class="'. $meme_ligne .' '.$span.' col-sm-6 btn_readmore" style="margin:5px 0;text-align:'.$position_btn_more.'"><a style="'.$couleur_btn_more_style.'color:'.$couleur_texte_btn_more.'" class="btn '.$couleur_btn_more.' '.$taille_btn_more.' read_more" href="'.JRoute::_("index.php?Itemid=".$link_readmore_menu).'#'.$ancre_link_readmore_menu.'">'.$texte_readmore.'</a></div>';
        $text_btn_more_poup = '<div class="'.$span.' col-sm-6 btn_readmore" style="margin:5px 0;text-align:'.$position_btn_more.'"><a style="'.$couleur_btn_more_style.'color:'.$couleur_texte_btn_more.'" class="btn '.$couleur_btn_more.' '.$taille_btn_more.' read_more" onclick="jQuery.magnificPopup.close();" href="'.JRoute::_("index.php?Itemid=".$link_readmore_menu).'#'.$ancre_link_readmore_menu.'">'.$texte_readmore.'</a></div>';
        $text_btn_close = '<div class="'.$meme_ligne.' '.$span.' col-sm-6 btn_close" style="margin:5px 0;text-align:'.$position_btn_close.'"><button '.$function_close.' style="'.$couleur_btn_close_style.'color:'.$couleur_texte_btn_close.'" class="btn '.$couleur_btn_close.' '.$taille_btn_close.' popup-modal-dismiss">'.$texte_close.'</button></div>';

        $text_out ='<div id="cadre_alert_cookies" style="opacity:'.$opacity.';text-align:'.$position_contenu.';'.$position_fixe_cookie.' margin:'.$marge_ext.'px;">';
        $text_out .='<div style="display: inline-block;width: 100%;margin:auto;max-width:'.$taille_cadre.';background-color: '.$fond_couleur.';'.$css_bordure.'">';
        $text_out .='<div style="display: inline-block;padding:'.$marge_int.'px;color: '.$texte_couleur.'"><div class="cadre_texte '.$meme_ligne.'">'.$texte.'</div>';
        $text_out .='<div class="cadre_bouton '.$meme_ligne.'">';

Et ce script dans la page:

if ($type_affichage == 1) {

            $script = '<script type="text/javascript">';
            $script .='var name = "fmalertcookies" + "=";';
            $script .='var ca = document.cookie.split(";");';               
            $script .='for(var i=0; i<ca.length; i++) {';
            $script .='var c = ca[i];';
            $script .='while (c.charAt(0)==" ") c = c.substring(1);';       
            $script .='if (c.indexOf(name) == 0){ document.getElementById("cadre_alert_cookies").style.display="none";}';
            $script .='}';          
            $script .='var d = new Date();';
            $script .='d.setTime(d.getTime() + ('.$duree_cookie.'*(24*60*60*1000)));';
            $script .='var expires_cookie = "expires="+d.toUTCString();';
            $script .="function CloseCadreAlertCookie(){document.getElementById('cadre_alert_cookies').style.display='none'; document.cookie='fmalertcookies=true; '+expires_cookie+'; path=/'}";
            $script .="</script>";

            // Position Haut
            if ($position == 0) {
                $buffer = preg_replace('/<body(.*?)>/i', '<body$1>'.$text_out.$script, $buffer);
            }
            // Position Bas
            elseif ($position == 1) {

                $parts = explode('</body>', $buffer);   
                if (sizeof($parts)<2) {
                    return; // il n'y a pas </body> dans la page
                }

                $parts[sizeof($parts)-2] .= $text_out.$script;
                $buffer = implode('</body>', $parts);                           
            }
        }

Avez-vous des suggestions pour compléter la section de fermeture et configurer le cookie pour faire défiler la page? Merci.

Je ne sais pas si j'ai donné toutes les informations nécessaires ...

4
Elisa74

Vous ne devriez pas charger jQuery à partir de Google pour une raison simple. Il y a près de 90% de chances qu'il soit chargé depuis le système (il est donc préférable de l'exiger du système comme ceci: JHTML::_('jquery.framework')), de sorte que vous perdez à la fois de la bande passante et des performances. Sans parler des conflits possibles. Si le script que vous avez créé ne fonctionne pas sur la page Joomla, il y a déjà une chance énorme que vous ayez des conflits/erreurs dans Java. Utilisez un débogueur.

2
Artur Stępień