Interface

Interface pour l'ajout d'une configuration
Editer / Ajouter
L'édition d'un article se réalise en cliquant sur le stylet de la ligne.
La création se réalise en cliquant sur le bouton Ajouter.
Formulaire de création

Champs du formulaire
- Nom : nom de la configuration, cette valeur doit-être unique
- Configuration Json : Ajout des attributs et leur définition qui sera utiliser pour générer le HTML de l'élément dans l'article et définir les attributs à utiliser
Paramétrage d'un attribut
Chaque attribut doit comporter au moins ces paramètres pour être utilisable.
- Son nom : nom de l'objet intitulé de l'attribut dans model final
- Type : type de l'attribut
- Title : intitulé à afficher dans l'article
- Description : Description rapide expliquant l'utilisation
Types d'attribut autorisés
- "string" : Champ input type text
- "text" : Champ input type textarea
- "file" : champ input type file
- "radio" : champ input type radio
- "checkbox" : champ input type checkbox
- "wysiwyg" : champ input type text avec une interface wysiwyg
- "listcms" : champ input dropdown list contenant les articles de FractalCMS ainsi que les controller/action
Exemple
{
"title": {
"type": "string",
"title" : "Titre de la section"
}
}Exemple de création d'une configuration

Création d'une configuration entete.
{
"title": {
"type": "string",
"title": "Titre"
},
"subtitle": {
"type": "string",
"title": "Sous-titre"
},
"description": {
"type": "wysiwyg",
"title": "Description"
},
"banner": {
"type": "file",
"title": "image en 1200x250",
"accept": "png, jpeg, jpg"
},
"alt": {
"type": "string",
"title": "Alt de l'image"
}
}Utilisation dans l'article
Choix et ajout de l'élément dans l'article

Désormais, l'élément peut-être configuré et enregistré. les informations pourront être utilisées sur le front.

Utilisation dans e controlleur
Dans le controleur
public function actionIndex()
{
try {
Yii::debug('Trace :'.__METHOD__, __METHOD__);
$content = $this->getContent();
$itemEntete = $content->getItems()->andWhere(['configItemId' => Parameter::getParameter('ITEM', 'ENTETE')])->one();
$itemsQuery = $content->getItems()->andWhere([
'not', ['configItemId' => [
Parameter::getParameter('ITEM', 'ENTETE'),
]]]);
return $this->render('index',
[
'content' => $content,
'entete' => $itemEntete,
]);
} catch (Exception $e) {
Yii::error($e->getMessage(), __METHOD__);
throw $e;
}
}utilisation dans la vue (index)
<?php
/**
* main.php
*
* PHP Version 8.2+
*
* @version XXX
* @package webapp\views\layouts
*
* @var $this yii\web\View
* @var $content \fractalCms\content\models\Content
* @var $entete \fractalCms\content\models\Item
*/
use fractalCms\helpers\Html;
$title = ($entete instanceof \fractalCms\content\models\Item) ? $entete->title : $content->name;
$subtitle = ($entete instanceof \fractalCms\content\models\Item) ? $entete->subtitle : null;
$banner = ($entete instanceof \fractalCms\content\models\Item) ? $entete->banner : null;
$description = ($entete instanceof \fractalCms\content\models\Item) ? $entete->description : null;
$this->title = trim(($content?->seo?->title) ?? $title);