Logo de Cecil Cecil
Sur cette page

Bibliothèque

Cecil propose une API PHP simple pour générer votre site web.

Vous pouvez consulter la documentation de l’API pour plus de détails.

Installation

composer require cecil/cecil

Prise en charge de libvips

Pour traiter les images avec libvips (optionnel), installez le pilote libvips dans votre projet :

composer require intervention/image-driver-vips

Utilisation

Génération

Générez un nouveau site web avec une configuration personnalisée :

<?php

require_once 'vendor/autoload.php';

use Cecil\Builder;

$config = [
    'title'   => "My website",
    'baseurl' => 'https://domain.tld/',
];

Builder::create($config)
    ->setSourceDir(__DIR__)      // répertoire des sources du site (répertoire courant par défaut)
    ->setDestinationDir(__DIR__) // où le répertoire de sortie (`_site`) est créé (répertoire source par défaut)
    ->build([]);

exec('php -S localhost:8000 -t _site'); // prévisualisation locale

La méthode build() accepte un tableau d’options :

Option Description Par défaut
drafts Inclut les brouillons. false
dry-run Génère sans enregistrer les fichiers. false
page Génère une page spécifique. ''
render-subset Effectue le rendu d’un sous-ensemble nommé de pages. ''

Ces options correspondent à celles de la commande build.

Diagnostics

Vous pouvez aussi exécuter les vérifications de doctor via des services dédiés, sans utiliser les commandes CLI :

  • Cecil\Doctor\SiteDoctor::diagnose() : configuration et environnement
  • Cecil\Doctor\FrontmatterDoctor::diagnose() : front matter des pages
  • Cecil\Doctor\SeoDoctor::audit() : SEO des pages rendues (lance une génération à blanc, en dry-run)
  • Cecil\Doctor\LinksDoctor::audit() : liens internes et externes
<?php

require_once 'vendor/autoload.php';

use Cecil\Builder;
use Cecil\Doctor\SeoDoctor;
use Cecil\Doctor\SiteDoctor;

$builder = Builder::create(require 'config.php')
    ->setSourceDir(__DIR__)
    ->setDestinationDir(__DIR__);

$siteDoctor = new SiteDoctor();
$diagnosis = $siteDoctor->diagnose($builder, __DIR__, ['cecil.yml']);

$seoDoctor = new SeoDoctor();
$seoAudit = $seoDoctor->audit($builder, [
    'page' => '',
    'include_generated' => false,
]);

var_dump($diagnosis['errors'], $seoAudit['summary']);