Les pages et le routage

Une page est une entrée de menu : un enregistrement de BSPK_WEB_DOMAIN_MENU, lui-même rattaché à un BSPK_WEB_DOMAIN. Les blocs la désignent par webDomainMenuUuid.

Les champs qui décident si une URL répond

La table des pages compte 25 champs. Voici ceux qui comptent quand une page ne répond pas :

ChampEffet
publishFalse donne une 404. Pas une page cachée : une page absente
publishStart / publishEndPublication limitée dans le temps, appliquée à la page elle-même
urlPartsLes segments de l'URL
useName / useNameAsPrefixSi le nom entre dans la construction de l'URL
autoUpdateSi l'URL est régénérée quand le nom change
displayInMenuLe menu seulement. Sans effet sur le fait que l'URL réponde
isHomepageLe point d'entrée du domaine
tableNameLa table à laquelle se lie une page de détail
userRightUuid / editRightUuidQui peut consulter, qui peut modifier

Piège : displayInMenu et les règles de visibilité pilotent le MENU, pas le service. Une page absente du menu reste servie à quiconque connaît son URL. Pour la fermer réellement, utilisez les droits ou dépubliez-la.

Créer une page par l'API

Deux échecs, fréquents tous les deux :

  • publish: true est obligatoire, sinon toutes les requêtes renvoient une 404. Une fois la page publiée, la route répond sans redémarrage.
  • urlParts, useName et autoUpdate doivent être cohérents. Une page créée sans eux n'a pas d'URL utilisable et renvoie une 404 alors que l'enregistrement existe.

Régénérer une URL ne fait rien, en silence, quand autoUpdate vaut faux : le nom change, l'URL non, et rien ne le signale.

Les pages dynamiques

Une page liée à une table reçoit la clé de l'enregistrement dans l'URL. Deux règles :

  • ?pk= est réservé par le routeur. N'utilisez jamais ce nom de paramètre pour vos propres besoins.
  • En 4D, la clé de l'enregistrement courant arrive dans $vo_POST.pk.

Le libellé du fil d'Ariane suit une cascade : l'expression (pageLabelExpression), puis un paramètre d'URL, puis le nom de la page.

Les pages multilingues

languageOptions et le lien vers la page alternative portent l'équivalence entre les versions linguistiques. Une équivalence de langue redirige avec un 301, pas un 302 : le déplacement est définitif, et les moteurs de recherche doivent oublier l'ancienne URL.

Les réglages au niveau du domaine

BSPK_WEB_DOMAIN décide de ce que reçoivent les pages : templateType (quelle enveloppe de page : tpl-page1, tpl-page2…), useSpa, useWebSocket, useWebApp, les balises de mesure d'audience, et loginPageUuid.

Les écrans d'administration

Les écrans /bweb/* suivent le même modèle, mais sont rendus à partir de gabarits enregistrés. Deux points qui piègent :

  • l'accès passe par un droit ADMIN_<SLUG>, pas par un code DEV écrit en dur ;
  • le bloc modal standard n'y fonctionne pas (voir Modal).

Voir aussi