If condition en html

Résolu

Bonjour,
dans certains scripts html je vois parfois des tags par exemple dans phpBB

`<!-- IF ALBUM_DESC --><div>{ALBUM_DESC}</div><!-- ENDIF -->

Qu'est-ce qui fait que la condition IF est bien exécutée alors qu'en html <!-- --> indique un commentaire ?
Je ne trouve pas de description de cette syntaxe en html.
 

3 réponses

  1. Modérateur

    Bonjour,

    Comme j'avais la flemme de rédiger une explication, je me suis permis de passer par chatgpt.

    Et donc :

    ce n'est pas du HTML standard, mais une syntaxe de moteur de template utilisée par phpBB, qui repose sur un moteur appelé TemplateEngine (basé sur une version personnalisée de la syntaxe de Template de phpBB).

    Comment ça marche ?

    phpBB parse les fichiers .html à l’aide de son propre moteur de template. Avant que le navigateur voie quoi que ce soit, le moteur PHP de phpBB interprète ces directives de contrôle, comme <!-- IF ... -->, <!-- ELSE -->, etc., et génère du HTML "pur" que le navigateur pourra afficher.

    Donc ce n'est pas le navigateur ou le HTML qui comprend ces <!-- IF ... -->, c’est phpBB côté serveur qui les transforme en code HTML standard.


    1
    1. Merci à chatgpt, je n'ai pas encore le réflexe d'y poser mes questions, quand une majorité l'aura les forums deviendront obsolètes ce qui est bien dommage.

      Donc ce moteur PHP de phpBB se trouve sur mon serveur (où pourrait-il être d'autre) : sous quelle forme (comme je suis ici je n'ai pas le courage de demander au chat) ?

      0
      1. Modérateur

        Oui, le moteur de template est intégré au code de phpbb.

        Au même titre que tu pourrais avoir TWIG comme moteur de template dans un projet symfony par exemple.

        Il existe différents moteurs de template que tu peux utiliser lorsque tu code des sites.

        Ce sont des scripts (de librairies) qu'il faut installer puis utiliser dans tes codes.

        Mais pourquoi ces questions ?

        0
      2. @jordane45

        Pour essayer de comprendre comment ça fonctionne : j'ai été surpris de trouver des instructions comme IF, ... dans du code html.

        Je n'ai toujours pas compris comment le moteur de template est intégré au code de phpbb : dans quels fichiers ?

        0
      3. Modérateur
        @Herve_be

        je ne sais pas dans quels fichiers je n'utilise pas phpbb.

        pour le comment ça fonctionne..en gros..  au moment d'afficher le contenue de ta page,  le fichier html est d'abord transmis à un script (php).

        le script regarde son contenu, analysé à la recherche de mots clés (ou d'expressions) puis envoyé vers le navigateur réécrit en fonction de ce qu'il y a trouvé.

        0
      4. @jordane45

        J'ai bien compris que le script html est prétraité par un moteur qui se trouve sur mon serveur.

        Ce que je ne comprends toujours pas c'est comment le serveur "sait" qu'il ne doit pas envoyer directement le script au navigateur.

        Si tu ne connait pas phpBB merci de laisser la "parole" à ceux qui savent.

        -1
      5. Contributeur
        @Herve_be

        bonjour,

        Le "serveur", c'est le logiciel phpBB.  Ce logiciel est conçu pour ne pas envoyer directement le contenu du fichier html au navigateur.

        0
    2. Modérateur

      Hello,

      Comme le dit jordane45 / chatGPT, il n'y a pas de IF (ou plus généralement de bloc algorithmiques en HTML) : c'est une syntaxe propre à PhpBB.

      De manière générale, quand l'affichage est soumis a une conditions, celle-ci doit être résolue :

      • soit par le client (le navigateur), typiquement avec du javascript ou du CSS
      • soit par le serveur web, typiquement grâce à PHP

      Si de plus, ton site web est réalisé avec un outil particulier (ici PhpBB), rien n'empêche de définir dans les messages des balises dédiées pour définir des blocs algorithmiques dans ce qui est sensé être de l'HTML pur. Charge alors à l'outil en question de traiter (dans son code, disons écrit en PHP) de faire ce qu'il est supposé faire.

      L'idée est ici de pouvoir définir un squelette de page dépendant de certaines conditions, et de pouvoir exprimer ces conditions sans recourir à PHP. D'ailleurs, de la même manière {ALBUM_DESC} n'est pas de l'HTML non plus. Cette balise est la aussi substituée par PhpBB, avec la valeur adéquate, grâce à son code écrit en PHP. La syntaxe ainsi définie pour écrire un squelette est ainsi :

      • nécessaire et suffisante pour pouvoir faire ce qu'on a envie de faire dans un squelette ;
      • moins forte que ce qu'on pourrait faire en PHP dans l'absolu (pour éviter que des squelettes susceptibles de casser le site puissent être écrit) ;
      • plus accessible pour quelqu'un qui ne sait pas faire de PHP/HTML (notamment pour récupérer les valeurs des variables).

      Quand un client visite une page, soumise à un tel squelette est visitée :

      1. PhpBB récupère le squelette associé à la page et les données qui lui sont associé (par exemple, des données stockées dans une base de données, dans ton exemple une description d'album)
      2. PhpBB traite les balises PhpBB par ce qu'il faut :
        1. suppression des blocs dont les conditions ne sont pas satisfaites
        2. substitution des valeurs entre accolades sont substituées
      3. PhpBB retourne au navigateur le résultat (qui ne contient donc plus que du HTML, et éventuellement du CSS et du JS)
      4. Le navigateur évalue le CSS/JS/HTML fait le rendu la page, sans même avoir conscience de tout ce que PhpBB a pu faire en amont.

      Bonne chance

      1