Dans cet exemple, j'ai ajouté dans un subform, l'appel de module, simplement en indiquant son ID dans le fiels.
Ensuite j'ai appelé le module depuis le PHP via le {loadmoduleid xxx}
<?php
// dabord, j'ai ajouté la ligne pour appeler le module (en haut de mon document)
use Joomla\CMS\Helper\ModuleHelper;
?>
<?php
// Ensuite en haut de mon fichier PHP, j'ai ajouté les déclaration pour mes fields
// "contentbloc" est le nom de mon champ subform (celui qui appel les fields)
// on récupère les données et on les place dans un tableau
// on créer ensuite une boucle
// Récupération des champs Joomla
$fields = $this->item->jcfields;
$fieldName = 'contentbloc';
$subformData = [];
foreach ($fields as $field) {
if ($field->name === $fieldName) {
if (!empty($field->rawvalue)) {
$decodedValue = json_decode($field->rawvalue, true);
if (is_array($decodedValue)) {
$subformData = $decodedValue;
}
}
break;
}
}
?>
<?php
// et pur finir, je place le code la ou je souhaite afficher le résultat
// "field1", "field2" et "field5" correspondent aux ID de mes fiels
// $title, $content et $module => sont les noms de mes fields
// ici j'ai utilisé {loadmoduleid xxx} pour appeler mon module
if (!empty($subformData)) {
foreach ($subformData as $rowValue) {
if (is_array($rowValue)) {
$title = trim($rowValue['field1'] ?? 'Sans titre');
$content = trim($rowValue['field2'] ?? '');
$module = trim($rowValue['field5'] ?? '');
echo '<div class="subform-item">';
echo '<h3>' . htmlspecialchars($title) . '</h3>';
echo '<p>' . nl2br(htmlspecialchars($content)) . '</p>';
echo '</div>';
echo '<div class="srv-mod">' . HTMLHelper::_('content.prepare', '{loadmoduleid ' . $module . '}') . '</div>';
}
}
} else {
echo '<p>Aucune donnée disponible.</p>';
}
?>