[spip-dev] Eliminer les lignes vides dans l'HTML?

Bonjour,
Je viens de regarder inc-compilo.php3 pendant une demi-heure sans
malheureusement avancer grandement mon education :slight_smile:

Je cherche à éliminer des lignes vides des pages HTML produites par SPIP
pour que la source de la page soit plus lisible lorsqu'on la regarde. En
effet l'imbrication des boucles dans les squelettes produit chez moi parfois
jusqu'à 7 lignes vides entre les lignes d'HTML.

N'y aurait-il pas une manière simple à éliminer ces lignes vides? (Si c'est
compliqué à faire, je peux bien vivre avec.)

merci, Paolo

Tu peux carrément passer par Tidy:
http://www.spip.net/fr_article3070.html

puisqu'au passage ça te pond un code source nettoyé: pas de lignes vides, et indentation nickel-chrome.

A*

Outre Tidy qui est une méthode en aval, on peut aussi corriger le pb en amont.
Ces lignes vides correspondent dans le squelette à des balises seules sur une ligne et ne produisant pas de code, par exemple:

avant
#FORMULAIRE_SIGNATURE
apres

lorsque la pétitiion n'est pas activée. Si tu veux empecher les lignes vides, utilise les crochets ainsi:

avant[
(#FORMULAIRE_SIGNATURE)
]apres

du coup ton HTML aura exactement "avantapres".

Déesse A.

ARNO* wrote:

Tu peux carrément passer par Tidy:

Merci. Mais tant que j'aurai des squelettes écrits en HTML, je préfère
rester en HTML.
Corriger des squelettes HTML en étudiant une code source XHTML après
transformation par Tidy me semble bien plus compliqué que sauter toutes ces
lignes vides.

D'ailleurs je n'arrivais pas à activer Tidy sur le serveur Linux chez
l'hébergeur, mais seulement chez moi avec Windows. Une fois je referai des
essais...

Paolo

Tu a vu ca:

http://tidy.sourceforge.net/

?

ca ne fait pas necessairement du XHTML

George

ps: moi je nettoie dans Homesite (mais evidement ce n'est pas open source).

Paolo wrote:

Déesse A. wrote:

Ces lignes vides correspondent dans le squelette à des balises seules
sur une ligne et ne produisant pas de code, par exemple:

Merci, Emmanuel. Pourtant, j'ai l'impression que ces lignes vides ne
viennent pas de balises mais de boucles.
Par exemple, la majorité de lignes vides dans la source de cette page
http://taize-devel.taize.asso.fr/fr_rubrique4.html
sont dans le menu gauche, produit par le squelette inclus.
http://taize-devel.taize.asso.fr/ti_vmenu.html

Est-ce que je me trompe? Est-ce qu'il s'agit peut-être des balises utilisées
comme critères de boucle?

Paolo

En effet, mais c'est un peu le meme probleme.

Si tu écris :

avant
<BOUCLE1(table){critere}>
corps
</BOUCLE1>
apres

tu auras 2 lignes blanches si la boucle est vide.
Pour les éviter il faut écrire:

avant<BOUCLE1(table){critere}>
corps
</BOUCLE1>apres

ou (résultat identique, mais source sans lignes enormes):

avant<BOUCLE1(table)
  {critere}>
  corps
</BOUCLE1>apres

Déesse A.

si ca peut etre utile, j'ai remarqué que quand la boucle pouvait être vide (ex : boucle d'exclusion, boucle de logo de mots clef, etc..) on pouvait éviter ou limiter le nombre de lignes en placant la boucle sur une seule ligne ... ex : <BOUCLE_exclu(table){doublons}></BOUCLE_exclu>
par contre ca ne facilite pas la lecture du code à mon goût
@+
Nicolas RIQUOIS
http://www.pucroller.com

Nicolas wrote:

on pouvait éviter ou limiter le nombre de lignes en placant la boucle sur
une seule ligne ...
par contre ca ne facilite pas la lecture du code à mon goût

Justement.

Déesse écrit:

tu auras 2 lignes blanches si la boucle est vide.
Pour les éviter il faut écrire:
avant<BOUCLE1(table){critere}>
corps
</BOUCLE1>apres

Aha. Merci. Seulement je n'ai pas de texte "avant" ou "après", mais une
quantité de boucles imbriquées.
Ce n'est pas très grave. J'avais juste pensé qu'il serait possible
"d'enlever" les doubles lignes vides à la fin du travail du compilateur.

Paolo

Merci, Emmanuel. Pourtant, j'ai l'impression que ces lignes vides ne
viennent pas de balises mais de boucles.

J'avais remarqué cela dans RAforum où certaines boucles sont utilisées pour
"vider" des articles.

J'avais fait
<BOUCLE1(table){critere}>
</BOUCLE1>

Mortel ! un saut de ligne à chaque article lu !

Puis

<BOUCLE1(table){critere}></BOUCLE1>
Et ça ne marchait pas !

enfin

<BOUCLE1(table){critere}> </BOUCLE1>
le moindre mal : un espace par article !

C'est sûr que cela fait un peu cradingue au niveau du fichier HTML, mais je
n'ai pas trouvé mieux.

JMB

Déesse écrit:

tu auras 2 lignes blanches si la boucle est vide.
Pour les éviter il faut écrire:
avant<BOUCLE1(table){critere}>
corps
</BOUCLE1>apres

Aha. Merci. Seulement je n'ai pas de texte "avant" ou "après", mais une
quantité de boucles imbriquées.

ce que j'appelle "avant" c'est le code juste avant, qui peut etre des boucles.
Donc tu ecris:

      <BOUCLE1(table1)
        criteres
>corps1
</BOUCLE1><BOUCLE2(table2)
        criteres
>corps2
</BOUCLE2>

etc

Ce n'est pas très grave. J'avais juste pensé qu'il serait possible
"d'enlever" les doubles lignes vides à la fin du travail du compilateur.

le pb c'est que c'est difficile de savoir si ce sont des lignes HTML ou autres (une chaine JavaScript par exemple): il faut réanalyser tout le texte, c'est-à-dire ... réécrire Tidy.

Déesse A.

Je ne comprends pas l'utilité de telles boucles

      Emmanuel

Je ne comprends pas l'utilité de telles boucles

Je m'en suis servi à plusieurs reprises. Par exemplej je vais afficher 10
articles d'un mot-clé dans la langue choisie par l'internaute. Ensuite, je
dois afficher 10 articles prix au hasard dans les autres langues.
J'ai donc sélectionné dans une boucle 10 articles du critère lang. mais
comment afficher les articles des autres langues ?
J'ai ajouté une boucle qui n'affiche rien mais qui traite tous les articles
du critère {lang} et en utilisant {exclus}. Ayant vidé de cette façon tous
les articles de la langue de l'internaute, je peux faire la boucle sur les
articles du même mot-clé, sachant qu'il ne me reste plus maintenant que les
autres langues.

C'était une méthode très en vogue quand j'ai travaillé sur RAforum, l'année
passée :wink: Mais peut-être que, maintenant, il y a des façons plus élégantes
de faire !

Idem avec des inclusions : la première boucle dans le squelette inclus
traite l'article en cours, de façon à ce que je ne le retrouve plus dans mes
autres boucles !

Moi, j'aimais bien cela !

JMB

Déesse A. wrote:

le pb c'est que c'est difficile de savoir si ce sont des lignes HTML ou
autres (une chaine JavaScript par exemple): il faut réanalyser tout le
texte, c'est-à-dire ... réécrire Tidy.

Aha ! Je pensais que probablement il y avait une complication que je ne
voyais pas.
merci, Paolo

Es-tu bien sûr que ça marche toujours ? Il y avait là un gros pb dans l'ancien compilo qui faisait TOTAL_BOUCLE appels au serveur pour calculer #TOTAL_BOUCLE, c'était pas tenable (temps d'acces qui s'écroulent pour une pétition à succes, cf Sauvons La Recherche). J'ai corrigé ça justement en repérant les corps de boucles sans balises, remplacé par un numrows. Je ne sais plus si avec {exclus}
je ne le fais pas ou non, c'est à vérifier.

Déesse A.

J'avais écrit :

Mais tant que j'aurai des squelettes écrits en HTML, je préfère
rester en HTML.

George a répondu :

ca ne fait pas necessairement du XHTML

Bonjour,
En effet, je vois qu'il suffit de changer la ligne dans inc_tidy.php:
    ." --output-xhtml true"
à :
    ." --output-html true"

pour que cela donne du HTML formaté, sans lignes vides.

Peut-on envisager que Spip nous laisse l'option d'enclencher Tidy soit en
mode XHTML, soit en mode HTML?

Paolo

En effet, je vois qu'il suffit de changer la ligne dans inc_tidy.php:
    ." --output-xhtml true"
à :
    ." --output-html true"

pour que cela donne du HTML formaté, sans lignes vides.

Peut-on envisager que Spip nous laisse l'option d'enclencher Tidy soit en
mode XHTML, soit en mode HTML?

Oui !

-- Fil

Es-tu bien sûr que ça marche toujours ? Il y avait là un gros pb dans
l'ancien compilo qui faisait TOTAL_BOUCLE appels au serveur pour
calculer #TOTAL_BOUCLE, c'était pas tenable (temps d'acces qui
s'écroulent pour une pétition à succes, cf Sauvons La Recherche). J'ai
corrigé ça justement en repérant les corps de boucles sans balises,
remplacé par un numrows. Je ne sais plus si avec {exclus}
je ne le fais pas ou non, c'est à vérifier.

En tout cas, j'ai l'impression que cela marche encore :wink:

JMB

Peut-on envisager que Spip nous laisse l'option d'enclencher Tidy soit en
mode XHTML, soit en mode HTML?

Fil wrote:

Oui !

Par exemple on mettant dans mes_options.php3 soit

$tidy = 'html'; ou
$tidy = 'xhtml';

?

P.