Personnalisation page erreur 404 : où placer le code dans le fichier error.php ?

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

  • Personnalisation page erreur 404 : où placer le code dans le fichier error.php ?

    Salut

    Je voulais faire une page 404 personnalisée en suivant le tuto sur Cinnk (Créer une page d'erreur 404 personnalisée avec Joomla! 4). Mais je ne sais pas où placer, dans le fichier error.php, le code :

    Code:
    defined( '_JEXEC' ) or die( 'Restricted access' );
    jimport('joomla.application.component.controller');
    $controller = new JController();
    $controller->setRedirect('index.php?option=com_content&view=article&id=42');
    $controller->redirect(); ?>
    Dans mon Notepad++ j'ai la coloration syntaxique et n'importe où que je place le code ci-dessus, tout le code se trouvant après est blanc. Ce qui veut dire que je l'ai mal placé.

    Où faut-il donc le mettre ??
    Sur mon site www.nenex-ordinateur-libre.net : tutos sur des logiciels et services libres.

    Association Sorgin Informatique Libre ( www.sorgin-informatique-libre.org). Education populaire au numérique libre et au libre en général.

  • #2
    Salut schtroumph,

    Pour ma part j'ai placé mon fichier error.php à la racine de mon thème avec le code suivant :
    Code PHP:
    <?php defined('_JEXEC') or die;
    if ((
    $this->error->getCode()) == '404') {
        
    header("HTTP/1.0 404 Not Found");
        
    $url="wwww.ton-url.fr";
        
    $ch curl_init();
        
    //Set curl to return the data instead of printing it to the browser.
        
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
        
    //Set the URL
        
    curl_setopt($chCURLOPT_URL$url);
        
    //Execute the fetch
        
    $data curl_exec($ch);
        
    //Close the connection
        
    curl_close($ch);
        
    //$data now contains the contents of $URL
        
    print $data;
    }
    ?>
    $url correspond au lien de ta page 404

    Dis moi si ça fonctionne.

    Passe une belle journée !

    Commentaire


    • #3
      Moi aussi j'ai le fichier error-php à la racine du template. Et c'est pas le souci que le code marche pas car je ne l'ai mis nulle part encore, car justement je ne sais pas où le mettre dans le fichier error.php .
      Sur mon site www.nenex-ordinateur-libre.net : tutos sur des logiciels et services libres.

      Association Sorgin Informatique Libre ( www.sorgin-informatique-libre.org). Education populaire au numérique libre et au libre en général.

      Commentaire


      • #4
        Envoyé par schtroumph Voir le message
        Salut
        Dans mon Notepad++ j'ai la coloration syntaxique et n'importe où que je place le code ci-dessus, tout le code se trouvant après est blanc. Ce qui veut dire que je l'ai mal placé.
        Où faut-il donc le mettre ??
        Normal dans notepad: tu finis par une balise de fermeture php (?>) qui n'a pas été ouverte (<php ).

        Commentaire


        • #5
          Merci pour l'info. Je precise que je n'y connais rien à php. J'ai donc placé mon code au tout debut du ficher :

          Code:
          <?php
          /**
           * @package     Joomla.Site
           * @subpackage  Templates.cassiopeia
           *
           * @copyright   (C) 2017 Open Source Matters, Inc. <https://www.joomla.org>
           * @license     GNU General Public License version 2 or later; see LICENSE.txt
           */
          
          // APPEL DE LA PAGE ERREUR 404
          
          defined( '_JEXEC' ) or die( 'Restricted access' );
          jimport('joomla.application.component.controller');
          $controller = new JController();
          $controller->setRedirect('index.php?option=com_content&view=article&id=42');
          $controller->redirect();
          
          /**/
          
          defined('_JEXEC') or die;
          
          use Joomla\CMS\Factory;
          use Joomla\CMS\HTML\HTMLHelper;
          use Joomla\CMS\Language\Text;
          use Joomla\CMS\Uri\Uri;
          Ne sachant pas s'il faut ajouter la balise ouvrante ou supprimer la fermante, j'ai donc essayer une premeire fois en ajoutant <?php :

          Code:
          <?php
          defined( '_JEXEC' ) or die( 'Restricted access' );
          jimport('joomla.application.component.controller');
          $controller = new JController();
          $controller->setRedirect('index.php?option=com_content&view=article&id=42');
          $controller->redirect();
          ?>
          et ensuite en supprimant ?> :

          Code:
          defined( '_JEXEC' ) or die( 'Restricted access' );
          jimport('joomla.application.component.controller');
          $controller = new JController();
          $controller->setRedirect('index.php?option=com_content&view=article&id=42');
          $controller->redirect();
          Mais dans les deux cas je tombe sur la page d'erreur 404 de Joomla. Donc, soit j'ai mal placé mon code, soit... je sais pas.
          Sur mon site www.nenex-ordinateur-libre.net : tutos sur des logiciels et services libres.

          Association Sorgin Informatique Libre ( www.sorgin-informatique-libre.org). Education populaire au numérique libre et au libre en général.

          Commentaire


          • #6
            Salut Schtroumpf,

            Je pense que tu devrais placer ton fichier dans le dossier de ton template à la racine, c'est comme cela que j'ai pu activé la page 404. En nommant le fichier error.php bien sûr

            Passe une excellent journée !

            Commentaire


            • #7
              Bonsoir, ton code est bizarre...
              tu a deux fois une ligne que tu ne devrais avoir qu'une seule fois.
              je supprimerais toute cette partie
              Code:
              // APPEL DE LA PAGE ERREUR 404 defined( '_JEXEC' ) or die( 'Restricted access' );
              jimport('joomla.application.component.controller') ; $controller = new JController();
              $controller->setRedirect('index.php?option=com_content&view=ar ticle&id=42');
              $controller->redirect();
              et ensuite je collerais les lignes suivantes en dessous de celles existantes:
              ce qui donnerais le code ci dessous :
              Code:
              /**
              * @package Joomla.Site
              * @subpackage Templates.cassiopeia
              *
              * [USER="64686"]Copyright[/USER] (C) 2017 Open Source Matters, Inc. <https://www.joomla.org>
              * @license GNU General Public License version 2 or later; see LICENSE.txt
              */
              
              defined('_JEXEC') or die;
              
              use Joomla\CMS\Factory;
              use Joomla\CMS\HTML\HTMLHelper;
              use Joomla\CMS\Language\Text;
              use Joomla\CMS\Uri\Uri;
              
              jimport('joomla.application.component.controller') ;
              $controller = new JController();
              $controller->setRedirect('index.php?option=com_content&view= ar ticle&id=42');
              $controller->redirect();
              A coller dans le fichier error.php du template. au début et juste en dessous des lignes use (qui remplacent jimport ) dans J4
              PS: c'est du code J3 et non J4. tu risque d avoir un message d'erreur.

              Commentaire


              • #8
                Envoyé par MICHEL DEDANS Voir le message
                Je pense que tu devrais placer ton fichier dans le dossier de ton template à la racine, c'est comme cela que j'ai pu activé la page 404. En nommant le fichier error.php bien sûr
                Comme je te le disais dans mon message #3 ce n'est pas le fichier que je ne sais pas ou placer, mais le code permettant d'etre redirigé vers l'article permettant de personnaliser la page 404 (dans le lien que j'ai donné c'est dans la partie Modifier le fichier error.php du template de votre site web).

                Envoyé par lefabdu51 Voir le message
                Bonsoir, ton code est bizarre...
                Le code que j'ai ajouté c'est celui donné par le tuto de Cinnk.

                Sinon j'ai fais ce que tu a dis et effectivement j'ai une erreur :

                Sorry, there was a problem we could not recover from.
                The server returned a "500 - Whoops, looks like something went wrong."

                Mais pourquoi utiliser du code J3 ? Le tuto de Cinnk est fait pour J4.

                Edit : j'ai déposé un message sur le forum de Cinnk. Je reviendrais ici pour donner des nouvelles.
                Dernière édition par schtroumph à 24/10/2022, 08h15
                Sur mon site www.nenex-ordinateur-libre.net : tutos sur des logiciels et services libres.

                Association Sorgin Informatique Libre ( www.sorgin-informatique-libre.org). Education populaire au numérique libre et au libre en général.

                Commentaire

                Annonce

                Réduire
                Aucune annonce pour le moment.

                Partenaire de l'association

                Réduire

                Hébergeur Web PlanetHoster
                Travaille ...
                X