Aller au contenu principal
Version: 26.0.8.0

Builder

Le système de blocs permet de créer des composants réutilisables dans l'éditeur Gutenberg. Chaque bloc est défini par une classe PHP dans le dossier app/Blocks.

Structure de base

app/Blocks/ColorizedSection.php
class ColorizedSection extends GutenbergBlock
{
    public function __construct()
    {
        // Configuration du bloc
        $this
            ->setBlockFile(__FILE__) // Obligatoire pour le fonctionnement interne
            ->setName("Section colorisée") // Nom affiché dans l'éditeur
            ->setSlug('colorized_section') // Identifiant unique du bloc
            ->setKeywords(['colorized_section', 'elementum']); // Mots-clés pour la recherche

        // Définition des attributs du bloc
        $this
            ->addAttribute('title') // Attribut simple
            ->addAttribute('color', 'string', "#FCDCB6"); // Avec type et valeur par défaut

        parent::__construct(); // Initialisation du contrôleur parent
    }

    /**
     * Méthode de rendu du bloc
     * @param array $attributes Attributs du bloc
     * @return string
     */
    public function renderBlock($attributes)
    {
        return $this->render('blocks/colorized_section.html.twig', compact('attributes'));
    }
}

Méthodes de configuration

Configuration du bloc

MéthodeDescription
setBlockFile(string $file)Définit le fichier du bloc (toujours __FILE__)
setName(string $name)Nom affiché dans l'éditeur Gutenberg
setSlug(string $slug)Identifiant unique du bloc (en snake_case)
setKeywords(array $keywords)Mots-clés pour la recherche dans l'éditeur

Définition des attributs

// Attribut simple (type mixte)
$this->addAttribute('titre');

// Avec type et valeur par défaut
$this->addAttribute('couleur', 'string', '#FFFFFF');

// Types supportés : string, number, boolean, array, object, null

Template Twig

Dans le fichier templates/blocks/colorized_section.html.twig :

<div class="colorized-section" style="background-color: {{ attributes.color }};">
    <h2>{{ attributes.title }}</h2>
    {{ content|raw }}
</div>

Bonnes pratiques

  • Utilisez des slugs uniques et descriptifs
  • Utilisez des valeurs par défaut pertinentes