- Vous êtes ici :
- Accueil
- blog / tutoriels
- blog / tutoriels
Nous proposons à la communauté des tutoriels au gré de nos humeurs, de l'actualité et des besoins.
( n'hésitez pas, par ailleurs à nous en demander)
Quelques articles sur l'actualité de Web54 et de ce qu'il se passe au niveau internet en Lorraine
Tutoriels sur Gantry, Vertex, Helix ... etc ...
(documentation personnelle ou traduction de la documentation originale)
La création de site internet, necessite des logiciels.
En lorraine, certains créateurs de sites utilisent des logiciels libres et en font la promotion.
Serge Billon en fait partie, et vous fait partager ici, en tant que webmaster reconnu sur Nancy et sa région, sa passion pour les logiciels libres.
Référencer un site n'est souvent pas une partie de plaisir, ni une formalité.
C'est pourquoi nous proposons des prestations en référencement, sur forfait ou sur devis personnalisé.
Toutefois, nous tenons à proposer une méthodologie aux clients qui voudraient tenter l'aventure et procéder eux-même à leur référencement.
Suivez les étapes pas à pas, et faites progresser votre site dans les méandres des moteurs de recherche.
Tutoriels en français des composants RS
Vous utilisez FlexiContent et YOOtheme Pro sur Joomla 5, et l'éditeur admin refuse de s'ouvrir avec l'erreur Argument #1 ($id) must be of type int, null given dans ArticleHelper.php ? Un template bien configuré, un FlexiContent bien en place, et pourtant le Customizer plante au démarrage — voici pourquoi ça arrive et comment s'en sortir en deux étapes : correction SQL et patch de code expliqués pas à pas.
Vous utilisez le composant FlexiContent pour gérer vos contenus Joomla, et vous avez installé le template YOOtheme Pro pour concevoir votre site. Tout fonctionne en frontend, mais dès que vous essayez d'ouvrir l'éditeur YOOtheme (le Customizer) depuis l'administration, vous obtenez cette erreur fatale :
Joomla\CMS\User\UserFactory::loadUserById():
Argument #1 ($id) must be of type int, null given,
called in .../templates/yootheme/packages/builder-joomla/src/ArticleHelper.php on line 32
La page du Customizer reste blanche ou affiche un écran d'erreur, impossible de modifier votre template. En revanche, si vous passez la source de contenu en Joomla Content natif, l'éditeur s'ouvre sans problème.
Quand vous ouvrez le Customizer YOOtheme, le builder charge en arrière-plan une prévisualisation de votre page d'accueil (ou de la page cible). Pour détecter les modifications concurrentes (deux éditeurs travaillant simultanément sur le même article), YOOtheme appelle la méthode ArticleHelper::getCollision() dans le fichier :
/templates/yootheme/packages/builder-joomla/src/ArticleHelper.php
Cette méthode, à partir de la ligne 28, fait ceci :
public static function getCollision(object $article): array
{
$user = Factory::getContainer()
->get(UserFactoryInterface::class)
->loadUserById($article->modified_by); // ← ligne 32 : le crash
return [
'contentHash' => md5($article->fulltext . $article->introtext),
'modifiedBy' => $user->username ?: '',
];
}
Elle appelle loadUserById() en lui passant le champ modified_by de l'article, sans vérifier si cette valeur est NULL.
FlexiContent gère ses items dans #__content (la table d'articles standard de Joomla), mais il possède son propre système de versionning et de champs personnalisés. Contrairement à com_content qui force un modified_by valide à chaque enregistrement, FlexiContent ne remplit pas systématiquement ce champ. Les items créés par import, soumission frontend anonyme, ou script SQL peuvent donc avoir modified_by = NULL.
Depuis Joomla 5, la méthode UserFactory::loadUserById() est strictement typée :
public function loadUserById(int $id): User
Elle attend un int obligatoirement. En Joomla 4, la tolérance PHP sur le typage était plus souple. En Joomla 5 + PHP 8, passer NULL lève une TypeError fatale.
Résumé : FlexiContent ne remplit pas modified_by → YOOtheme le passe tel quel à loadUserById() → Joomla 5 rejette NULL → crash.
Connectez-vous à phpMyAdmin (ou votre client MySQL) et lancez ces requêtes.
Récupérez d'abord l'ID d'un Super User valide (remplacez le préfixe #__ par le vôtre) :
SELECT id, username FROM `#__users` WHERE block = 0 ORDER BY id;
Notez l'ID (ex. 62). Ensuite, corrigez les items FlexiContent fautifs en attribuant modified_by = created_by quand c'est possible, sinon votre ID Super User :
UPDATE `#__content` AS c
INNER JOIN `#__flexicontent_items_ext` AS fie ON fie.item_id = c.id
SET c.modified_by = IFNULL(NULLIF(c.created_by, 0), 62)
WHERE c.modified_by IS NULL OR c.modified_by = 0;
Et blindez created_by tant qu'on y est :
UPDATE `#__content` AS c
INNER JOIN `#__flexicontent_items_ext` AS fie ON fie.item_id = c.id
SET c.created_by = 62
WHERE c.created_by IS NULL OR c.created_by = 0;
Videz ensuite le cache Joomla : Système → Maintenance → Purger le cache expiré.
La correction SQL règle le problème pour les items existants, mais tout nouvel item FlexiContent créé sans modified_by pourra déclencher à nouveau l'erreur. Il faut donc blinder le code YOOtheme lui-même.
Éditez le fichier (via FTP ou le gestionnaire de fichiers de votre hébergeur) :
/templates/yootheme/packages/builder-joomla/src/ArticleHelper.php
Remplacez tout le contenu du fichier par le code suivant :
<?php
namespace YOOtheme\Builder\Joomla;
use Joomla\CMS\Factory;
use Joomla\CMS\User\UserFactoryInterface;
class ArticleHelper
{
public const PATTERN = '/^<!--\s?(\{.*})\s?-->/';
public static function matchContent(?string $content): ?string
{
return str_contains((string) $content, '<!--') &&
preg_match(static Lire → YOOtheme Pro + FlexiContent : corriger l'erreur loadUserById() null dans l'éditeur admin
Après la gestion des articles, des médias et des meta descriptions, voici l'étape suivante dans l'intégration de l'IA Claude avec Joomla via MCP : la gestion intelligente des tags. L'objectif est simple — dire à Claude "ajoute les tags MCP,
Lire → Joomla et IA Claude : gérer les tags automatiquement via MCP
Connecter Claude Desktop à Joomla via MCP, c'est bien. Mais pouvoir uploader des images directement depuis une conversation avec l'IA, définir les images d'introduction et d'article, et renseigner la meta description SEO sans jamais ouvrir l'administration Joomla — c'est encore mieux. Dans...
Lire → Joomla et IA Claude : gestion des médias et meta description via MCP
Vous avez suivi le tutoriel, votre premier site Joomla est connecté à Claude Desktop, et tout fonctionne parfaitement. Maintenant, vous gérez plusieurs sites Joomla — un pour votre activité principale, un autre pour un client, un troisième pour un projet...
Lire → Claude Desktop et Joomla : ajouter un second site en 2 minutes
Le développement Joomla évolue vite. Très vite. Et depuis l'émergence des IA comme Claude d'Anthropic, les possibilités d'automatisation de la gestion de contenu s'ouvrent à des horizons que l'on n'imaginait pas il y a encore deux ans. Cet article raconte...
Lire → Joomla et IA Claude : comment nous avons développé l'upload de médias via MCP