Blackcube fournit des helpers pour simplifier l'affichage et la manipulation du contenu dans vos vues. Ces helpers étendent les fonctionnalités de Yii2 avec des features spécifiques au CMS.
Concrètement, trois helpers sont disponibles : Element pour récupérer et filtrer les blocs d'un contenu, Html pour gérer les images et fichiers uploadés, et Quill pour nettoyer le HTML WYSIWYG. Ces helpers automatisent les tâches répétitives et garantissent la cohérence du rendu.
Element Helper
Le helper Element permet de récupérer et filtrer les blocs d'un élément avec cache automatique.
Namespace
use blackcube\core\web\helpers\Element;
Element::getDateCreate()
Récupère la date de création réelle d'un élément en tenant compte des blocs.
Element::getDateCreate(ElementInterface $element): DateTime
Comportement :
Retourne le MIN(dateCreate) entre l'élément et ses blocs. Si un bloc a été créé avant l'élément, c'est la date du bloc qui est retournée.
Exemple :
$realDateCreate = Element::getDateCreate($composite);
echo $realDateCreate->format('d/m/Y H:i');
Element::getDateUpdate()
Récupère la date de modification réelle d'un élément en tenant compte des blocs.
Element::getDateUpdate(ElementInterface $element): DateTime
Comportement :
Retourne le MAX(dateUpdate) entre l'élément et ses blocs. Si un bloc a été modifié après l'élément, c'est la date du bloc qui est retournée.
Exemple :
$realDateUpdate = Element::getDateUpdate($composite);
echo $realDateUpdate->format('d/m/Y H:i');
Element::getWithTypes()
Récupère les blocs d'un élément pour des types spécifiques.
Element::getWithTypes(ElementInterface $element, array $selectedBlocTypeIds): Bloc[]
Exemple :
use app\helpers\Parameters;
// Récupérer uniquement les blocs de contenu
$contentBlocs = Element::getWithTypes($composite, [
Parameters::get('BLOC', 'CONTENT'),
Parameters::get('BLOC', 'CODE'),
Parameters::get('BLOC', 'INFO')
]);
foreach ($contentBlocs as $bloc) {
echo Quill::cleanHtml($bloc->content);
}
Element::getExceptTypes()
Récupère les blocs d'un élément sauf certains types.
Element::getExceptTypes(ElementInterface $element, array $exceptBlocTypeIds): Bloc[]
Exemple :
// Récupérer tous les blocs sauf le hero
$otherBlocs = Element::getExceptTypes($composite, [
Parameters::get('BLOC', 'HERO')
]);
Element::getFirstWithType()
Récupère le premier bloc d'un type spécifique.
Element::getFirstWithType(ElementInterface $element, int $blocTypeId): ?Bloc
Exemple :
// Récupérer le hero
$heroBloc = Element::getFirstWithType(
$composite,
Parameters::get('BLOC', 'HERO')
);
if ($heroBloc !== null) {
echo $heroBloc->title;
}
Info
Toutes les méthodes du helper Element utilisent un cache en mémoire pour éviter les requêtes SQL répétées durant la même requête HTTP.
Html Helper
Le helper Html étend yii\helpers\Html et ajoute des fonctionnalités pour gérer les images et fichiers uploadés dans Blackcube.
Namespace
use blackcube\core\helpers\Html;
Html::cacheImage()
Cache et redimensionne automatiquement une image.
Html::cacheImage(string $imageLink, ?int $width = null, ?int $height = null): string
Attention
Les images uploadées dans Blackcube sont stockées avec un préfixe Flysystem (@blackcubefs/...) qui ne peut pas être utilisé directement dans une balise . Le helper :
1. Résout le chemin Flysystem (local/S3/etc.)
2. Redimensionne si nécessaire
3. Met en cache dans /cache/
4. Retourne l'URL publique
Exemple :
<?php if (!empty($bloc->image)): ?>
<?php echo Html::img(Html::cacheImage($bloc->image, 600), [
'alt' => $bloc->imageAlt ?? ''
]); ?>
<?php endif; ?>
Comportement selon les dimensions :
- Largeur ET hauteur : Redimensionne en crop
- Largeur seule : Redimensionne proportionnellement
- Hauteur seule : Redimensionne proportionnellement
- Aucune dimension : Copie sans redimensionnement
Html::cacheFile()
Cache un fichier (PDF, documents) pour l'affichage.
Html::cacheFile(string $fileLink): string
Attention
Les fichiers uploadés dans Blackcube sont stockés avec un préfixe Flysystem (@blackcubefs/...) qui ne peut pas être utilisé directement dans un lien. Le helper :
1. Résout le chemin Flysystem (local/S3/etc.)
2. Met en cache dans /cache/
3. Retourne l'URL publique
Exemple :
<?php if (!empty($bloc->document)): ?>
<?php echo Html::a('Télécharger le PDF', Html::cacheFile($bloc->document), [
'target' => '_blank'
]); ?>
<?php endif; ?>
Html::img()
Surcharge de yii\helpers\Html::img() avec support automatique de cacheImage().
Html::img(string|array $src, array $options = []): string
Si $options['width'] et/ou $options['height'] sont définis, appelle automatiquement cacheImage() avec ces dimensions.
Quill Helper
Le helper Quill permet de nettoyer et manipuler le HTML généré par l'éditeur Quill.js (format WYSIWYG par défaut dans Blackcube).
Namespace
use blackcube\core\helpers\Quill;
Quill::cleanHtml()
Nettoie le HTML généré par Quill en supprimant les éléments indésirables.
Quill::cleanHtml(
?string $htmlContent,
bool $removeStyles = true,
bool $removeEmptyTags = true,
bool $removeSpan = true,
bool $addNoFollow = true
): ?string
Info
Ce helper a été développé pour garantir la conformité RGAA du contenu généré par l'éditeur WYSIWYG.
Ce qui est nettoyé par défaut :
- Attributs
style - Balises vides (, )
- Balises
(contenu conservé) - Ajout de
rel="nofollow"aux liens externes
Exemple :
<?php if (!empty($bloc->content)): ?>
<div class="content">
<?php echo Quill::cleanHtml($bloc->content); ?>
</div>
<?php endif; ?>
Quill::toRaw()
Convertit le HTML en texte brut en gardant uniquement certaines balises.
Quill::toRaw(?string $htmlContent, array $keepTags = ['p']): ?string
Comportement :
- Nettoie d'abord le HTML avec cleanHtml()
- Supprime toutes les balises sauf celles dans $keepTags
Exemples :
$html = '<p><strong>Texte</strong> en <em>gras</em></p><p>Autre paragraphe</p>';
// Garder les <p>
echo Quill::toRaw($html);
// → <p>Texte en gras</p><p>Autre paragraphe</p>
// Tout supprimer
echo Quill::toRaw($html, []);
// → Texte en grasAutre paragraphe
// Garder <p> et <strong>
echo Quill::toRaw($html, ['p', 'strong']);
// → <p><strong>Texte</strong> en gras</p><p>Autre paragraphe</p>
Cas d'usage :
// Meta description (texte pur)
$description = Quill::toRaw($bloc->content, []);
$description = mb_substr($description, 0, 160);
// Extrait accessible (garde les paragraphes)
$excerpt = Quill::toRaw($bloc->content);
// Flux RSS (texte avec formatage minimal)
$rssContent = Quill::toRaw($bloc->content, ['p', 'br', 'strong', 'em']);
Bonnes pratiques
- Toujours utiliser Html::cacheImage() pour afficher les images uploadées
- Toujours utiliser Html::cacheFile() pour afficher les fichiers uploadés
- Toujours utiliser Quill::cleanHtml() pour le contenu WYSIWYG
Points clés à retenir
- Element Helper : Récupération et filtrage des blocs avec cache automatique
- Html Helper : Gestion des fichiers Flysystem, cache et redimensionnement automatiques
- Quill Helper : Nettoyage RGAA du HTML, conversion en texte brut
Info
Les helpers Blackcube automatisent les tâches répétitives et garantissent la cohérence du rendu. Ils gèrent le cache, la sécurité et l'accessibilité automatiquement.