Trouver un moyen de classer une section entre des pages dans le sommaire #12

Closed
opened 2022-09-06 21:39:47 +00:00 by vincent · 8 comments
Owner

Dans l'exemple suivant, la section Créer du contenu a un poids de 4 dans son _index.md, elle devrait donc être classée entre Mettre en place le DNS qui a un poids de 3, et Publier le contenu, qui a un poids de 5.

image

Ce n'est pas le cas. Dans le code de Juice, on voit que les éléments sont classés tels que trouvés dans la liste toc.

        {% block toc %}
        {% if section.toc %}
        {% set toc = section.toc %}
        {% elif page.toc %}
        {% set toc = page.toc %}
        {% endif %}
        {% if toc %}
        <div class="toc">
            <div class="toc-sticky">
                {% for h in toc %}
                <div class="toc-item">
                    <a class="subtext" href="{{h.permalink | safe}}">{{ h.title }}</a>
                </div>
                {% if h.children %}
                {% for h2 in h.children %}
                <div class="toc-item-child">
                    <a class="subtext" href="{{h2.permalink | safe}}"><small>- {{ h2.title }}</small></a>
                </div>
                {% endfor %}
                {% endif %}
                {% endfor %}
            </div>
        </div>
        {% endif %}
        {% endblock toc %}

Le problème vient donc plutôt de Zola. Or dans sa documentation, tout semble indiquer que ça devrait fonctionner :

  • «The _index.md file within a directory defines the content and metadata for that section. To set the metadata, add front matter to the file.»
  • # Used by the parent section to order its subsections. # Lower values have higher priority. weight = 0

Je cherche une solution.

Dans l'exemple suivant, la section `Créer du contenu` a un poids de 4 dans son `_index.md`, elle devrait donc être classée entre `Mettre en place le DNS` qui a un poids de 3, et `Publier le contenu`, qui a un poids de 5. ![image](/attachments/2c7b86ab-81e5-47a8-987a-9a0eeb1f7cf7) Ce n'est pas le cas. Dans [le code de Juice](https://github.com/huhu/juice/blob/master/templates/index.html), on voit que les éléments sont classés tels que trouvés dans la liste `toc`. ``` {% block toc %} {% if section.toc %} {% set toc = section.toc %} {% elif page.toc %} {% set toc = page.toc %} {% endif %} {% if toc %} <div class="toc"> <div class="toc-sticky"> {% for h in toc %} <div class="toc-item"> <a class="subtext" href="{{h.permalink | safe}}">{{ h.title }}</a> </div> {% if h.children %} {% for h2 in h.children %} <div class="toc-item-child"> <a class="subtext" href="{{h2.permalink | safe}}"><small>- {{ h2.title }}</small></a> </div> {% endfor %} {% endif %} {% endfor %} </div> </div> {% endif %} {% endblock toc %} ``` Le problème vient donc plutôt de Zola. Or dans [sa documentation](https://www.getzola.org/documentation/content/section/), tout semble indiquer que ça devrait fonctionner : - «The `_index.md` file within a directory defines the content and metadata for that section. To set the metadata, add front matter to the file.» - `# Used by the parent section to order its subsections. # Lower values have higher priority. weight = 0` Je cherche une solution.
Owner

Je pense que le souci vient du fait que les sous-sections sont systématiquement classées avant les pages simples. Il faudrait trouver un moyen de merger les deux listes en préservant l'ordre calculé avec les poids, mais je me demande si le langage de template est assez puissant pour coder ça...

Je pense que le souci vient du fait que les sous-sections sont systématiquement classées avant les pages simples. Il faudrait trouver un moyen de merger les deux listes en préservant l'ordre calculé avec les poids, mais je me demande si le langage de template est assez puissant pour coder ça...
Author
Owner

@lx La solution ne se trouve-t-elle pas dans _nav.html ? Je vois qu'on parle d'abord des sections (ligne 6), puis après des pages (ligne 36).

EDIT: quelle réaction, je n'avais pas vu ton dernier commentaire

@lx La solution ne se trouve-t-elle pas dans [_nav.html](https://git.deuxfleurs.fr/Deuxfleurs/guide.deuxfleurs.fr/src/branch/main/templates/_nav.html) ? Je vois qu'on parle d'abord des sections (ligne 6), puis après des pages (ligne 36). EDIT: quelle réaction, je n'avais pas vu ton dernier commentaire
Author
Owner

J'ai inspecté les autres sites qui utilisent Juice, mais absolument aucun répertorié n'utilise des sections et des pages

J'ai inspecté [les autres sites qui utilisent Juice](https://juice.huhu.io/showcases), mais absolument aucun répertorié n'utilise des sections et des pages
Owner

Tu veux dire que les entités "page" de zola ne sont pas utilisées, et tout est dans des "sections" ? Parce que pour nous ça pourrait en effet être une solution pour uniformiser le tri, de déplacer tout le contenu dans des sections et d'interdire l'usage des pages

Tu veux dire que les entités "page" de zola ne sont pas utilisées, et tout est dans des "sections" ? Parce que pour nous ça pourrait en effet être une solution pour uniformiser le tri, de déplacer tout le contenu dans des sections et d'interdire l'usage des pages
Owner

En fait on a déjà modifié le thème Juice pour que le menu de gauche soit un menu de navigation pour passer d'une page à une autre, et non un sommaire de la page actuelle comme c'est sur le cas dans Juice par défaut.

En fait on a déjà modifié le thème Juice pour que le menu de gauche soit un menu de navigation pour passer d'une page à une autre, et non un sommaire de la page actuelle comme c'est sur le cas dans Juice par défaut.
Author
Owner

Ah d'accord, je comprends mieux.
De ce que je lis dans la doc' de Zola, j'ai vraiment l'impression qu'il est capable de trier correctement des pages et sections entre elles selon leurs poids.
Transvaser toutes les pages dans des sections ça me paraît trop extrême juste pour mon cas particulier. Dans un premier temps je vais voir si je trouve d'autres sites faits avec Zola qui gèrent bien ça. Si je trouve un exemple élégant, j'essaierai de m'en inspirer pour faire ce correctif.

Ah d'accord, je comprends mieux. De ce que je lis dans la doc' de Zola, j'ai vraiment l'impression qu'il est capable de trier correctement des pages et sections entre elles selon leurs poids. Transvaser toutes les pages dans des sections ça me paraît trop extrême juste pour mon cas particulier. Dans un premier temps je vais voir si je trouve d'autres sites faits avec Zola qui gèrent bien ça. Si je trouve un exemple élégant, j'essaierai de m'en inspirer pour faire ce correctif.
Author
Owner

J'ai exploré la documentation et le code source de Zola; en fait faire un classement mélangé entre sous-sections et pages c'est vraiment impossible sans modifier le code de Zola. Si ça ne tenait qu'à moi je m'en chargerais, j'ai identifié les parties à modifier et ça ne me paraît pas si compliqué que ça. Par respect pour les devs j'ai signalé la chose d'abord. La discussion est lancée, si à tout hasard vous voudriez appuyer mon point en toute innoncence, vous seriez les bienvenus.

J'ai exploré la documentation et le code source de Zola; en fait faire un classement mélangé entre sous-sections et pages c'est vraiment impossible sans modifier le code de Zola. Si ça ne tenait qu'à moi je m'en chargerais, j'ai identifié les parties à modifier et ça ne me paraît pas si compliqué que ça. Par respect pour les devs j'ai signalé la chose d'abord. [La discussion est lancée, si à tout hasard vous voudriez appuyer mon point en toute innoncence, vous seriez les bienvenus.](https://github.com/getzola/zola/issues/1984)
Author
Owner

Développé dans !14 .
En fait il existe une fonctionnalité pour passer des variables arbitraires entre l'en-tête des pages/sections et le gestionnaire de modèle Tera, c'est la section [extra]. Avec ces modifications, si toutes les pages et sous-sections d'une section ont la variable weight_custom définie, alors on fait un classement mélangé. Sinon, le comportement habituel reste.
Zola est normalement pas trop fait pour la hiérarchisation des sections, lors de mes interactions avec le dev sur Github, il avait l'air de trouver notre besoin pas commun du tout.

Développé dans !14 . En fait il existe une fonctionnalité pour passer des variables arbitraires entre l'en-tête des pages/sections et le gestionnaire de modèle Tera, c'est la section `[extra]`. Avec ces modifications, si toutes les pages et sous-sections d'une section ont la variable `weight_custom` définie, alors on fait un classement mélangé. Sinon, le comportement habituel reste. Zola est normalement pas trop fait pour la hiérarchisation des sections, lors de mes interactions avec le dev sur Github, il avait l'air de trouver notre besoin pas commun du tout.
Sign in to join this conversation.
No Label
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: Deuxfleurs/guide.deuxfleurs.fr#12
No description provided.