web-dev-qa-db-fra.com

Rediriger vers la page d'accueil avant la maison pour les nouveaux visiteurs

Je dois rediriger un nouveau visiteur vers une page de démarrage créée avec un article joomla.

J'ai utilisé ce script:

<script type="text/javascript">
    function redirect() {
        var thecookie = readCookie('doRedirect');
        if (!thecookie) {
            window.location = 'prehome';
        }
    }

    function createCookie(name, value, days) {
        if (days) {
            var date = new Date();
            date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
            var expires = "; expires=" + date.toGMTString();
        } else var expires = "";
        document.cookie = name + "=" + value + expires + "; path=/";
    }

    function readCookie(name) {
        var nameEQ = name + "=";
        var ca = document.cookie.split(';');
        for (var i = 0; i < ca.length; i++) {
            var c = ca[i];
            while (c.charAt(0) == ' ') c = c.substring(1, c.length);
            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
        }
        return null;
    }
    window.onload = function() {
        redirect();
        createCookie('doRedirect', 'true', '999');
    }
</script>

J'ai copié ce script dans theme.php du modèle.
Cela fonctionne aussi si j'ajoute le script dans un module et le publie.

Mais pendant quelques secondes, la page d'accueil est affichée avant la redirection vers la page d'accueil.

Existe-t-il un script empêchant d'afficher la page d'accueil avant la page de démarrage?

Et, y a-t-il un script à appliquer à mon .htaccess fichier?

3
Joso

Il semble que votre script de redirection soit lancé sur window.onload, et comme décrit dans this post , votre contenu est chargé après tout. C'est pourquoi vous voyez la page d'accueil un instant avant qu'un utilisateur ne soit redirigé.

Essayez de modifier votre script de cette façon et placez-le entre votre <head> Mots clés:

<script type="text/javascript">
    function createCookie(name, value, days) {
        if (days) {
            var date = new Date();
            date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
            var expires = "; expires=" + date.toGMTString();
        } else var expires = "";
        document.cookie = name + "=" + value + expires + "; path=/";
    }

    function readCookie(name) {
        var nameEQ = name + "=";
        var ca = document.cookie.split(';');
        for (var i = 0; i < ca.length; i++) {
            var c = ca[i];
            while (c.charAt(0) == ' ') c = c.substring(1, c.length);
            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
        }
        return null;
    }
    var thecookie = readCookie('doRedirect');
    if (!thecookie) {
        createCookie('doRedirect', 'true', '999');
        window.location = 'prehome';
    }
</script>

Autres solutions

Vous pouvez également envisager d'utiliser un menu contextuel modal, certaines extensions peuvent le charger une fois et définir un cookie afin d'éviter que les utilisateurs ne le voient à nouveau:

  1. NoNumber Modals
    NoNumber a une extension Nice popup appelée Modals , et il a une option pour afficher le popup une seule fois (je pense que vous avez besoin de la version pro pour cela):

    {modal html=This modal will only show once|openOnce=1}{/modal}
    

    Découvrez le démo ici .

  2. Éditeur de contenu Joomla
    Joomla Content Editor dispose également d’une fonction permettant d’afficher une fenêtre contextuelle une seule fois. Lisez plus ici: https://www.joomlacontenteditor.net/support/tutorials/jcemediabox/item/create-a-media-popup

     <a href="/instructions.html" class="jcepopup autopopup-single" type="text/html" id="autopopup"></a>
    
4
johanpw