Gestion du menu

Structure à 2 niveaux, positionnement FLOAT et hiérarchie parent/enfant


Présentation

Le menu de navigation de votre site Markdodo est généré automatiquement à partir des métadonnées de vos pages. Il supporte deux niveaux de profondeur : un menu principal et des sous-menus. Le positionnement des éléments se fait via des valeurs numériques de type FLOAT, offrant une flexibilité totale pour ordonner vos pages.


Structure à 2 niveaux

Chaque page possède deux champs de positionnement :

Règle du zéro : si une position est égale à 0 (ou 0.0), la page est masquée du menu ou du sous-menu correspondant. Pour afficher une page dans le menu, utilisez une valeur supérieure à 0 (par exemple 1.0, 1.5, 2.0).

Exemple de structure

Imaginons un site avec les pages suivantes :

[
  {
    "slug_page": "accueil",
    "short_title_page": "Accueil",
    "position_menu_page": 1.0,
    "position_submenu_page": 0,
    "id_parent_page": null
  },
  {
    "slug_page": "blog",
    "short_title_page": "Blog",
    "position_menu_page": 2.0,
    "position_submenu_page": 0,
    "id_parent_page": null
  },
  {
    "slug_page": "mon-article",
    "short_title_page": "Mon article",
    "position_menu_page": 0,
    "position_submenu_page": 1.0,
    "id_parent_page": 42
  }
]

Cela génère le menu suivant :


Positionnement FLOAT

Les positions sont des nombres décimaux (FLOAT). Cette approche permet d'insérer de nouvelles pages entre deux existantes sans avoir à décaler toutes les autres :

Pour insérer une page entre B et C, il suffit de lui attribuer la position 2.5. Les pages sont triées par ordre croissant de leur valeur de position.

Astuces de positionnement


Pages parentes et enfants

Le champ id_parent_page définit la relation parent/enfant entre les pages :

Créer une page dans un sous-menu

Lors de la création d'une page via POST, définissez id_parent_page avec l'ID de la page parente :

curl -s -X POST "https://markdodo.com/api/pages" \
  -H "Authorization: Bearer votre_cle_api" \
  -H "Content-Type: application/json" \
  -d '{
    "slug_page": "nouvelle-sous-page",
    "short_title_page": "Sous-page",
    "long_title_page": "Ma sous-page",
    "markdown": "# Contenu de la sous-page",
    "id_parent_page": 137,
    "position_menu_page": 0,
    "position_submenu_page": 1.0
  }'

Note : L'ID de la page parente (id_parent_page) se retrouve dans la réponse du GET /api/pages. Repérez l'id_page de la page qui servira de parent avant de créer vos sous-pages.