Comment ajouter un nouveau type de section dans Shopify de zéro (2026)

Dernière mise à jour
Revu par un expert
5 min de lecture
Jacques Blom
Jacques Blom
CTO chez Fudge.

À retenir

  • Un nouveau type de section est un fichier Liquid dans le dossier sections/ avec une structure HTML, un bloc {% schema %} et des presets pour apparaître dans le menu “Ajouter une section”.
  • Ce guide permet de créer une section de témoignages complète avec un titre modifiable, un nombre de colonnes et des blocs de témoignages récurrents (citation, auteur, note).
  • "max_blocks" limite le nombre de blocs que les marchands peuvent ajouter. "min_blocks" impose un minimum.
  • Une fois publiée, la section apparaît dans l’Éditeur de thème (Theme Editor) pour toutes les pages qui autorisent les sections.

Un nouveau type de section vient s’ajouter à la bibliothèque de sections de votre thème — disponible pour être ajouté à n’importe quel template de page qui prend en charge les sections. Ce guide vous montre comment créer de zéro une section de témoignages complète, prête pour la production.

Comment ajouter une nouvelle section dans Shopify ?

Créez un nouveau fichier .liquid dans le dossier sections/ de votre thème. Donnez-lui un nom descriptif en kebab-case (ex: testimonials-grid.liquid). Le fichier doit inclure un bloc {% schema %} valide avec une clé "presets" pour qu’il apparaisse dans le menu “Add section”.

Sur le même sujet : Ajouter de la logique Liquid personnalisée dans Shopify.


Planifier la section

Avant d’écrire le code, définissez ce dont la section a besoin :

Article connexe : Fudge Page Builder.

Paramètres de la section (globaux) :

Paramètres des blocs (par témoignage) :

Comportement :


Étape 1 — Créer le fichier de la section

Ouvrez votre éditeur de code → dossier sections/ → ajoutez un nouveau fichier : testimonials-grid.liquid.


Étape 2 — Écrire la structure HTML

<section class="testimonials-grid section-{{ section.id }}" id="section-{{ section.id }}">
  <div class="page-width">

    {% if section.settings.heading != blank %}
      <h2 class="testimonials-grid__heading">{{ section.settings.heading }}</h2>
    {% endif %}

    {% if section.settings.subheading != blank %}
      <p class="testimonials-grid__subheading">{{ section.settings.subheading }}</p>
    {% endif %}

    <div class="testimonials-grid__grid testimonials-grid__grid--{{ section.settings.columns }}-col">

      {% for block in section.blocks %}
        <div class="testimonials-grid__item" {{ block.shopify_attributes }}>

          {% if block.settings.rating > 0 %}
            <div class="testimonials-grid__stars" aria-label="{{ block.settings.rating }} out of 5 stars">
              {% for i in (1..5) %}
                <span class="testimonials-grid__star {% if i <= block.settings.rating %}testimonials-grid__star--filled{% endif %}">&#9733;</span>
              {% endfor %}
            </div>
          {% endif %}

          {% if block.settings.quote != blank %}
            <blockquote class="testimonials-grid__quote">
              {{ block.settings.quote }}
            </blockquote>
          {% endif %}

          <div class="testimonials-grid__author">
            {% if block.settings.author_photo != blank %}
              <img
                src="{{ block.settings.author_photo | img_url: '80x80', crop: 'center' }}"
                alt="{{ block.settings.author_name }}"
                class="testimonials-grid__author-photo"
                loading="lazy"
                width="40"
                height="40"
              />
            {% endif %}
            <div>
              {% if block.settings.author_name != blank %}
                <p class="testimonials-grid__author-name">{{ block.settings.author_name }}</p>
              {% endif %}
              {% if block.settings.author_title != blank %}
                <p class="testimonials-grid__author-title">{{ block.settings.author_title }}</p>
              {% endif %}
            </div>
          </div>

        </div>
      {% endfor %}

    </div>
  </div>
</section>

Étape 3 — Écrire le schema

{% schema %}
{
  "name": "Testimonials Grid",
  "tag": "section",
  "class": "section",
  "settings": [
    {
      "type": "text",
      "id": "heading",
      "label": "Heading",
      "default": "What our customers say"
    },
    {
      "type": "text",
      "id": "subheading",
      "label": "Subheading",
      "default": "Trusted by thousands of happy customers"
    },
    {
      "type": "select",
      "id": "columns",
      "label": "Columns on desktop",
      "options": [
        { "value": "2", "label": "2 columns" },
        { "value": "3", "label": "3 columns" }
      ],
      "default": "3"
    }
  ],
  "blocks": [
    {
      "type": "testimonial",
      "name": "Testimonial",
      "settings": [
        {
          "type": "range",
          "id": "rating",
          "label": "Star rating",
          "min": 1,
          "max": 5,
          "step": 1,
          "default": 5
        },
        {
          "type": "textarea",
          "id": "quote",
          "label": "Quote",
          "default": "This product completely changed the way I work. Couldn't be happier."
        },
        {
          "type": "image_picker",
          "id": "author_photo",
          "label": "Author photo"
        },
        {
          "type": "text",
          "id": "author_name",
          "label": "Author name",
          "default": "Jane Smith"
        },
        {
          "type": "text",
          "id": "author_title",
          "label": "Author title or company",
          "default": "Verified Customer"
        }
      ]
    }
  ],
  "max_blocks": 12,
  "presets": [
    {
      "name": "Testimonials Grid",
      "blocks": [
        { "type": "testimonial" },
        { "type": "testimonial" },
        { "type": "testimonial" }
      ]
    }
  ]
}
{% endschema %}

Étape 4 — Ajouter le CSS

{% stylesheet %}
  .testimonials-grid {
    padding: 60px 0;
  }

  .testimonials-grid__heading {
    text-align: center;
    margin-bottom: 8px;
  }

  .testimonials-grid__subheading {
    text-align: center;
    color: #666;
    margin-bottom: 40px;
  }

  .testimonials-grid__grid {
    display: grid;
    gap: 24px;
  }

  .testimonials-grid__grid--2-col {
    grid-template-columns: repeat(2, 1fr);
  }

  .testimonials-grid__grid--3-col {
    grid-template-columns: repeat(3, 1fr);
  }

  @media (max-width: 767px) {
    .testimonials-grid__grid--2-col,
    .testimonials-grid__grid--3-col {
      grid-template-columns: 1fr;
    }
  }

  .testimonials-grid__item {
    background: #f9f9f9;
    padding: 24px;
    border-radius: 8px;
  }

  .testimonials-grid__star--filled {
    color: #f5a623;
  }

  .testimonials-grid__quote {
    font-style: italic;
    margin: 12px 0 16px;
  }

  .testimonials-grid__author {
    display: flex;
    align-items: center;
    gap: 12px;
  }

  .testimonials-grid__author-photo {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    object-fit: cover;
  }

  .testimonials-grid__author-name {
    font-weight: bold;
    margin: 0;
  }

  .testimonials-grid__author-title {
    font-size: 14px;
    color: #666;
    margin: 0;
  }
{% endstylesheet %}

Étape 5 — Tester

Après avoir enregistré, allez dans Boutique en ligne (Online Store) → Thèmes → Personnaliser (Customize). Cliquez sur “Add section” sur n’importe quelle page. Votre section “Testimonials Grid” devrait apparaître dans la liste. Ajoutez-la et vérifiez que le panneau de configuration fonctionne correctement.

Créez une section Shopify sur mesure en la décrivant à Fudge.
Try Fudge for Free

Comment ajouter un nouveau type dans Shopify ?

Le terme “Type” dans le contexte des sections fait référence aux types de blocs à l’intérieur d’une section (comme le bloc "type": "testimonial" ci-dessus) ou au type de la section elle-même. Vous ajoutez de nouveaux types de section en créant de nouveaux fichiers Liquid dans sections/. Vous ajoutez de nouveaux types de blocs en ajoutant des entrées au tableau "blocks" d’une section dans son schéma.


FAQ

Pourquoi ma nouvelle section n'apparaît-elle pas dans le menu "Ajouter une section" ?

La cause la plus fréquente : il manque le tableau "presets" dans le schema. Une section sans presets est techniquement du Liquid valide, mais Shopify ne l'affichera pas dans le menu déroulant "Ajouter une section" — ajoutez au moins une entrée preset avec un "name" et vous devriez la voir apparaître. (Si vous préférez éviter d'écrire le schema à la main, Fudge génère le fichier de la section avec des presets, un schema et du Liquid valides à partir d'une simple description en langage courant.)

Quelle est la différence entre les paramètres de section et les paramètres de bloc ?

Les paramètres de section s'appliquent une seule fois à l'ensemble de la section (le titre, le nombre de colonnes, la couleur de fond). Les paramètres de bloc s'appliquent à chaque élément enfant répété à l'intérieur de la section (la citation, l'auteur et la note de chaque témoignage). Utilisez les paramètres de section pour la configuration globale, et les blocs pour le contenu répétitif que le marchand ajoute et réorganise.

Puis-je limiter une section à des modèles de page spécifiques ?

Oui - dans le schema, ajoutez "enabled_on": { "templates": ["product"] } pour la restreindre aux pages produits uniquement, ou "disabled_on": { "templates": ["index"] } pour la masquer sur la page d'accueil. Par défaut, une section avec des presets est disponible sur tous les modèles JSON.

Comment faire pour qu'une section fonctionne à la fois comme une section classique et comme un bloc d'application (app block) ?

C'est impossible - ce sont des concepts différents. Les blocs d'application (app blocks) sont des extensions installées par une application ; ils apparaissent dans la même interface "Ajouter une section", mais sont liés à l'application. Une section de thème réside dans le code de votre thème. Si vous développez vous-même, créez simplement une section de thème.

Pourquoi {% schema %} s'affiche-t-il sous forme de texte brut sur ma page ?

Le code Liquid est rendu en tant que contenu au lieu d'être interprété. Il est très probable que le fichier se trouve dans le mauvais dossier (il doit être dans sections/, et non dans snippets/ ou templates/), ou que le bloc schema contienne une erreur de syntaxe JSON qui empêche l'analyse du Liquid. Vérifiez l'inspecteur de thème pour voir s'il y a des erreurs et validez séparément le JSON à l'intérieur de {% schema %}.

Jacques's signature
Créez des types de sections Shopify sur mesure en les décrivant en langage courant.

Article connexe : Ajouter du JavaScript personnalisé sur Shopify.

Article connexe : Ajouter des sections sur la page d’accueil Shopify.

You might also be interested in

Comment créer une section sur mesure sur Shopify (2026)
Apprenez à créer une section Shopify sur mesure de zéro : code HTML/Liquid, schema, paramètres et intégration avec l'Éditeur de thème.
Comment ajouter de la logique Liquid personnalisée sur Shopify (2026)
Découvrez comment ajouter de la logique Liquid à un thème Shopify — affichez du contenu selon les tags produits, tags clients, metafields, panier ou date.
Comment modifier checkout.liquid sur Shopify Plus (2026)
Comment modifier checkout.liquid sur Shopify Plus — personnaliser la mise en page, ajouter des badges de confiance, créer des blocs d'upsell et se préparer à Checkout Extensibility.