J'ai déplacé un site Web d'un serveur (PHP 5.6.38) à localhost (PHP 7.2.10). Et je reçois cette erreur dans le titre de la page (dans l'onglet chrome)):
0 - Utiliser $ this sans contenu d'objet
Lors d'une recherche en ligne, j'ai constaté que je devais remplacer toutes les occurrences de JSite::getMenu()
par JFactory::getApplication()->getMenu()
. Je l'ai fait sans succès. J'ai changé le thème et l'erreur a disparu, c'est donc probablement quelque chose avec le thème. J'ai essayé de modifier le thème mais je reçois cette erreur:
Une erreur est survenue.
0 erreur de syntaxe, '}' inattendu, attente de elseif (T_ELSEIF) ou sinon (T_ELSE) ou endif (T_ENDIF)
Retour au Panneau de configuration
Mais il n'y a aucune information où cette erreur est.
J'ai téléchargé à nouveau les fichiers de modèle à partir du serveur, je remplace les fichiers locaux mais j'ai toujours la même erreur, alors que sur le serveur live, il n'y a pas d'erreur
EDIT
J'ai activé error_reporting
et je reçois cette erreur:
Erreur d'analyse: erreur de syntaxe, '}' inattendu dans C: ...\html\modules.php à la ligne 64
Le problème est que le fichier est identique à celui sur le serveur et sur le serveur, je ne reçois aucune erreur ...
Voici le code:
function modChrome_myCatMod($module, &$params, &$attribs)
{
$moduleTag = $params->get('module_tag', 'div');
$headerTag = htmlspecialchars($params->get('header_tag', 'h3'));
$bootstrapSize = (int) $params->get('bootstrap_size', 0);
$moduleClass = $bootstrapSize != 0 ? ' span' . $bootstrapSize : '';
// Temporarily store header class in variable
$headerClass = $params->get('header_class');
$headerClass = ($headerClass) ? ' class="' . htmlspecialchars($headerClass) . '"' : '';
if (!empty ($module->content)) : ?>
<<?php echo $moduleTag; ?> class="moduletable<?php echo htmlspecialchars($params->get('moduleclass_sfx')) . $moduleClass; ?>" id="Mod<?php echo $module->id;?>">
<?php if ((bool) $module->showtitle) : ?>
<?php $com_content_categories = $params->get('com_content_categories'); if(!empty($com_content_categories)):
$caturl = ContentHelperRoute::getCategoryRoute ( $com_content_categories[0] );
?>
<<?php echo $headerTag . $headerClass . '>' ?><a href="<?php echo $caturl;?>"><?php echo $module->title; ?></a></<?php echo $headerTag; ?>>
<?php else : ?>
<<?php echo $headerTag . $headerClass . '>' . $module->title; ?></<?php echo $headerTag; ?>>
<? endif;?>
<?php endif; ?><?php echo $module->content; ?>
</<?php echo $moduleTag; ?>>
<?php endif;
} //////////////////////////////////error line
Ne me citez pas là-dessus, mais j'ai l'impression que cela peut être dû au mélange d'accolades et de syntaxe alternative.
J'ai réécrit votre modChrome en utilisant des accolades:
function modChrome_myCatMod($module, &$params, &$attribs)
{
$moduleTag = $params->get('module_tag', 'div');
$headerTag = htmlspecialchars($params->get('header_tag', 'h3'));
$bootstrapSize = (int) $params->get('bootstrap_size', 0);
$moduleClass = $bootstrapSize != 0 ? ' span' . $bootstrapSize : '';
// Temporarily store header class in variable
$headerClass = $params->get('header_class');
$headerClass = ($headerClass) ? ' class="' . htmlspecialchars($headerClass) . '"' : '';
if (!empty ($module->content))
{
echo '<' . $moduleTag . ' class="moduletable' . htmlspecialchars($params->get('moduleclass_sfx')) . $moduleClass . '" id="Mod' . $module->id . '">';
if ((bool) $module->showtitle)
{
$com_content_categories = $params->get('com_content_categories');
if (!empty($com_content_categories))
{
$caturl = ContentHelperRoute::getCategoryRoute($com_content_categories[0]);
echo '<' . $headerTag . $headerClass . '><a href="' . $caturl . '">' . $module->title . '</a></' . $headerTag . '>';
}
else
{
echo '<' . $headerTag . $headerClass . '>' . $module->title . '</' . $headerTag . '>';
}
}
echo $module->content;
echo '</' . $moduleTag . '>';
}
}
J'espère que cela résout le problème.
Cela dit, si vous n'avez pas fourni le contenu intégral de ce fichier dans votre question, je vous conseillerais de le faire, car l'erreur peut en réalité provenir d'une ligne différente.