Configuration des éléments

Tous les articles peuvent avoir des éléments. Ces éléments permettent de définir les informations qui seront utilisées pour générer le HTML finale.

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

  1. Nom : nom de la configuration, cette valeur doit-être unique
  2. 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.

  1. Son nom : nom de l'objet intitulé de l'attribut dans model final
  2. Type : type de l'attribut
  3. Title : intitulé à afficher dans l'article
  4. Description : Description rapide expliquant l'utilisation

Types d'attribut autorisés

  1. "string" : Champ input type text
  2. "text" : Champ input type textarea
  3. "file" : champ input type file
  4. "radio" : champ input type radio
  5. "checkbox" : champ input type checkbox
  6. "wysiwyg" : champ input type text avec une interface wysiwyg
  7. "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);