Gestion des articles

Les articles suivent une structure définie par l'attribut pathKey. Lors de l'initialisation de FractalCMS le Content "main" a été créé.

Interface

Prérequis

Avant de créer un article (Content), veuillez veuillez vous rendre dans la documentation Gestion des types d'article


Définition

Les articles suivent une structure définie par l'attribut pathKey. Lors de l'initialisation de FractalCMS le Content "main" a été créé. Tous les autres Content devront être des enfants ou petits enfants de "main". Dans la pratique le Content "main" est la section qui va définir la page accueil du site.

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.

Gestion des types d'article

Formulaire de création : Identification de l'article

création article partie haute

Les attributs

  1. Actif : l'article doit-être actif pour être visible sur le front
  2. Nom : Nom de l'article (cette valeur doit être unique dans le site)
  3. Configuration de l'article : liste de choix liée aux configurations créés
  4. Model : indique si l'article est une section ou un article
  5. Parent : Hiérarchie de l'article
  6. Tag / étiquettes : choix parmi les Tag / Etiquettes créer dans FractalCMS
  7. Url : Url à partir de laquelle l'article sera accessible sur le front

Définitions

Configuration de l'article

Cette option permet de définir vers quelle contrôleur/action l'url de l'article sera dirigé afin

de construire la vue et l'envoyer au Front.

Model

  1. Section : Modèle du plus haut niveau dans la hiérarchie, il peut appartenir à une autre section mais ne peut-être sous un article.
  2. Article :Modèle du plus bas niveau dans la hiérarchie, il ne peut-être que l'enfant d'un modèle section

Hiérarchie et url

  1. Parent : Position dans la hiérarchie de FractalCMS.
  2. Url (valeur unique) : L'url est le point d'entrée sur le front (navigateur) afin d'accéder à la page de l'article

Formulaire de création : SEO

Introduction

Le SEO, défini les valeurs à indiquer dans la page afin de valoriser des données récupérées pour l'indéxation du site.

FractalCMS met à disposition le behavior fractalCms\behaviors\Seo qui peut-être utilisé afin de générer le SEO.

Les attributs

Actif : Activé le SEO

Titre : titre visible sur l'onglet du navigateur

Description : valeur du meta name:description

Image : valeur du meta name:image

Sitemap : paramètre inscrit dans le sitemap.xml pour l'url de cette article

Meta données : Permet d'activer les metas données supplémentaire

Sitemap

FractalCMS met à disposition l'action fractalCms\actions\SitemapAction qui se charge de générer le fichier sitemap.xml.

Meta données

Le jsonLd doit-être créé selon les articles et le contexte du site, c'est à vous de le construire.

Exemple utilisation du Behavior fractalCms\behaviors\Seo

Dans le contrôleur ajouter

public function behaviors()
{
    $behaviors = parent::behaviors();
    $behaviors['seo'] = [
        'class' => Seo::class
    ];
    return $behaviors;
}

Si le SEO est activé dans les paramètre du formulaire de l'article. Les données SEO seront automatiquement

insérées.

Formulaire de création : Gestion des éléments

Formulaire de création et de gestion des éléments

Ici, ce trouve la coeur de la page. chaque article qu'il soit section ou article peut comporter des éléments. Chaque élément est basé sur une configuration voir Configuration des éléments

Configuration des éléments

Ajout d'un élément

Dans la liste en bas à droite, il faut sélectionner l'élément choisi et cliquer sur +.

L'élément peut-être valorisé. Les informations enregistrées pourront être utilisées sur le FRONT de votre site.

ajout élément entête

Récupération des données : dans le controlleur

public function actionIndex()
{
    try {
        Yii::debug('Trace :'.__METHOD__, __METHOD__);
        $content = $this->getContent();
        //Recherche du premier élément "entete" du "Content"
        $itemEntete = $content->getItems()
            ->andWhere(['configItemId' => Parameter::getParameter('ITEM', 'ENTETE')])
            ->one();
        return $this->render('index',
            [
                'content' => $content,
                'entete' => $itemEntete,
                ]);
    } catch (Exception $e) {
        Yii::error($e->getMessage(), __METHOD__);
        throw $e;
    }
}

Récupération des données : Dans la vue

<?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\content\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 = $title;

?>
<main id="main" role="main"  tabindex="-1" portfolio-focus="main">
    <!-- Hero avec image -->
    <section id="home" class="relative text-white">
        <!-- Image de fond -->
        <div class="absolute inset-0 h-72">
            <?php
            if (empty($banner) === false) {
                echo Html::img($banner, [
                    'width' => 1200, 'height' => 300,
                    'alt' => 'Image hero',
                    'class' => 'w-full h-full object-cover'
                ]);
            }
            ?>
            <!-- Overlay -->
            <div class="absolute inset-0 bg-blue-800 opacity-70"></div>
        </div>

        <!-- Contenu -->
        <div class="relative container mx-auto px-6 h-72 flex flex-col justify-center items-center text-center">
            <h1 class="text-3xl md:text-5xl font-extrabold"><?php echo $title;?></h1>
            <div class="mt-2 text-lg text-blue-100">
                <?php echo $description;?>
            </div>
        </div>
    </section>
</main>