UserLand Software
Powerful, cross-platform web scripting.
 

Récit d'un rendu

En selle !

À propos de cette introduction

À propos de la gestion d'un site Web

Pourquoi Frontier?

Pour commencer

Se mettre à table

Explorer les exemples

Votre premier site Web

Les bases du HTML dans Frontier

D'autres moyens d'automatiser le HTML

Soyez à l'aise avec le mode plan ("Outline")

Modèles ("templates")

Formater avec les outlines

Inclusions ("includes") et macros

Travailler avec des images

Glossaires et filtres

Defines et directives personnalisées

Publier

OutlineSite et NextPrev

Références relatives

Convertir votre travail

Récit d'un rendu

Où aller à présent ?

Termes, Trucs et Examples

Pour référence

Pour un travail plus poussé, il est utile de connaître le déroulement du processus par lequel une page est construite. Cela permet d'éviter les erreurs et une meilleure orientation lorsqu'on est en train d'explorer ou de déboguer. En tant que débutant vous n'avez pas vraiment besoin de savoir ce qui se passe en profondeur, mais lorsque vous utiliserez Frontier de manière avancée, vous devriez trouver ça très pratique. Vous pouvez donc sauter cette page pour l'instant, si vous le souhaitez -- elle sera toujours là lorsque vous en aurez besoin.

Questions d'ordre général

Où sont les scripts ?

Si vous ouvrez en édition la barre de menus system.menus.menubar, vous pouvez jetez un coup d'oeil aux scripts attachés au menu Web. (Sélectionnez un article de menu et cliquez sur le bouton Zoom.) La plupart de ces scripts appelle html.quelquechose.

Où sont les scripts hml ?

Ils se trouvent dans system.verbs.builtins.html. C'est une table importante : elle contient beaucoup de scripts.

Quelle est la différence entre prévisualiser (preview) et publier (publish) une page ?

Sélectionner Preview Page ou Publish Page, lance le même processus sur une page. La différence est dans la destination de la page sur le disque.

Publier une page

Supposons que vous sélectionniez une page, et que vous choisissiez Preview Page ou Publish Page dans le menu Web.

L'article de menu appelle html.commands.previewPage ou html.commands.releaseRenderedPage.

Tout ce que fait html.commands.previewPage, c'est de régler un marqueur (flag) signifiant qu'il s'agit d'une prévisualisation. Ensuite, il invoque html.commands.releaseRenderedPage.

html.commands.releaseRenderedPage

Ce script détermine quelle page nous souhaitons construire, puis appelle html.buildObject qui construit la page. Lorsque ce dernier lui retourne son résultat, il appelle html.ftpText qui écrit la page sur le disque. Pour finir, il fait afficher la page par votre fureteur.

html.buildObject

Ce script est celui qui effectue la plupart du travail. Il commence par préparer la table des données de la page (ndt : c'est à dire celle qui contient les données de la page et qui se trouve à websites.["#data"]. Appelons-la "la table #data"). Il la vide, ou en crée une nouvelle si nécessaire.

Ensuite, il appelle html.buildPageTable, qui lit les directives ainsi que les préférences, et crée les entrées correspondantes dans la table #data.

Si le site a une table #filters contenant un script firstFilter, il le lance.

Puis il verrouille la table #data avec un sémaphore avant d'appeller html.tenderRender, qui lance les directives intégrées dans la page.

BuildObject s'assure ensuite que la destination de cette page sur le disque a été convenablement préparée, en se basant sur #ftpSite et les directives de la page elle même.

Puis, si votre site dispose d'un script #filters.pageFilter, celui-ci est exécuté.

Et c'est maintenant que commence la partie de plaisir : la page est construite.

Tout d'abord, le template de la page est lu dans une variable locale. Toutes les directives du template sont traitées.

Puis le contenu de la page est placé dans la même variable locale, remplaçant la balisee {bodytext}.

Les macros et les appels de glossaire sont traités par html.processMacros. C'est à ce stade que vos scripts de macro sont évalués et que les textes entre guillemets sont remplacés par des entrées de glossaire. (Ou ignorés, lorsqu'ils ne correspondent à aucune entrée de glossaire.)

Html.processMacros appelle html.data.processMacrosCallback. Pour voir en détail comment les appels de glossaire et les évaluations de macros sont effectués, regardez dans ce script.

Ensuite, html.buildObject corrige les liens relatifs (glossPatch), de manière à ce que les liens à l'intérieur de votre site soient toujours relatifs. Il appelle pour cela un autre script, html.data.standardMacros.glossaryPatcher.

Si la page dispose d'un attribut #pageHeader (par opposition à l'appel de macro {pageHeader...}), il est alors construit.

Si vous effectuez le rendu sur un PC, vous avez probablement rêglé #addLineFeeds à true. Cela convertit simplement les caractères de fin de ligne de cr en cr/lf.

S'il s'agit d'une page Web "fat" (ndt : voir FatPages), les données sont ajoutées à la fin de la page, après la balise html fermante.

Avant que html.buildObject se termine, il lance le script #filters.finalFilter, s'il existe.

De retours à html.commands.releaseRenderedPage

Comme nous l'avons vu plus haut, ce script écrit ensuite la page sur le disque en faisant appel à html.ftpText. Pour finir, il vous montre la page dans votre fureteur.

Voilà, en gros, ce qui se passe. Vous pouvez suivre vous-même le processus à travers ces scripts, si vous en avez envie.

Si vous savez utiliser le débogueur de Frontier, créez ce script d'une ligne :


   html.commands.releaseRenderedPage(@websites.samples.randomStuff)

Avancez par étapes ("Step") depuis ce script, et voyez où il vous conduit. Préparez-vous à y passer un bon bout de temps : une grande quantité de code est exécutée à chaque fois que vous construisez une page. Mais le bref résumé ci-dessus devrait vous fournir une bonne base.

PreviousNext

   

Site scripté avec Frontier © Copyright 1996-98 UserLand Software. Dernière mise à jour de cette page : 6/04/98; 1:15:50. Date de création de celle-ci : 12/02/98; 20:32:50. Webmasters : francais@scripting.com.

 
Cette introduction a été adaptée pour Frontier 5 par Brent Simmons à partir de l'introduction pour Frontier 4 écrite par Matt Neuburg. © Copyright 1998 Emmanuel M. Décarie, Philippe Martin, et UserLand Software, Inc. pour cette traduction française.