# Créer votre premier block
# Concept
Un module peut enregistrer plusieurs blocks Vous trouverez en exemple notre module classicblocks qui reprend les 4 modules PrestaShop essentiels:
- Slider
- Bannière
- Text personnalisé
- Produits phares
=> Github des classicblocks (opens new window)
# Module
Voici la structure classique d'un module.
<?php
use PrestaShop\PrestaShop\Core\Module\WidgetInterface;
class FakeModule extends Module implements WidgetInterface
{
public function __construct()
{
$this->name = 'fakemodule';
$this->tab = 'administration';
$this->version = '1.0.0';
$this->author = 'PrestaSafe';
$this->need_instance = 1;
$this->bootstrap = true;
parent::__construct();
$this->displayName = $this->l('Fake module');
$this->description = $this->l('Fake module');
$this->ps_versions_compliancy = array('min' => '1.7', 'max' => _PS_VERSION_);
}
public function install()
{
return parent::install() && $this->registerHook('ActionRegisterBlock');
}
public function uninstall()
{
return parent::uninstall() && $this->unregisterHook('ActionRegisterBlock');
}
// Register blocks here.
public function hookActionRegisterBlock()
{
$blocks = [];
$blocks[] = [
'name' => 'Fake block',
'description' => 'Description of your block',
'code' => 'fake_block', // required must be uniq
'icon' => 'StarIcon', // https://heroicons.com V2
'need_reload' => true, // reload iframe after save
'nameFrom' => 'field_name' // take the name of a config field
'templates' => [
'default' => 'module:'.$this->name.'/views/templates/block/default.tpl'
],
'config' => [
'fields' => [
// ... array of fields
]
],
'repeater' => [
'name' => 'Element repeated',
'nameFrom' => 'field name',
'groups' => [
// ... array of fields
]
]
]
return $blocks;
}
}
Le hook ActionRegisterBlock est prévu pour enregistrer un ou plusieurs block(s) dans le Prettyblocks.
# Détails d'un block
Champs | Description | Type | Required |
---|---|---|---|
name | Nom d'affichage de votre block | String | true |
description | Description de votre block | String | true |
code | Description de votre block doit absolument être unique | String | true |
icon | Icon heroicons (v2) en format camelCase ex: academic-cap => AcademicCapIcon Liste disponible ici: Heroicons (opens new window) | String | false |
nameFrom | Donner un nom custom à votre block ex: title Prendra le valeur du contenu du champs de configuration title | String | false |
need_reload | Rechargement de l'iframe après avoir sauvegardé un block, utile si vous développez un block de type slider par exemple Default: true | String | false |
templates | Templates de votre block, il est impératif d'avoir un template avec la clé default Vous pouvez enregistrer autant de templates que vous souhaitez | Array | true |
config | Champs de configuration de votre block Doit avoir un tableau de champs 'fields' => [ /*... fields ...*/ ] voir Champs disponibles | Array | false |
repeater | Champs répétables Plus de détails Champs répétable | Array | false |
# Champs répétables
Les champs répétables vous permettront de mettre autant de données que l'utilisateur le souhaite. Plusieurs paramètres sont requis.
Champs | Description | Type | Required |
---|---|---|---|
name | Nom par défaut des éléments listés | String | true |
nameFrom | Prend le nom de la valeur du champs répété ex: 'nameFrom' => 'title' affichera la valeur du champs title dans la liste | String | false |
groups | Liste des champs voir Champs disponibles | Array | false |