Mise à jour d'un module Joomla 2.5 vers 3.x (problème version PHP)

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • Scuba070
    a répondu
    Bonjour Pascal.

    Vous êtes absolument génial, vos modifs ont fonctionnées à merveille !

    Mon module est désormais opérationnel et activé !

    ==>> RESOLU !

    Laisser un commentaire:


  • pmleconte
    a répondu
    Bonjour,

    J'avais effectivement un bug (oubli impardonnable d'un ".....).

    Ci-joint la version corrigée.

    Pascal

    Fichiers joints

    Laisser un commentaire:


  • Scuba070
    a répondu
    Envoyé par pmleconte Voir le message
    Pas terrible sa programmation: il charge $list dans le helper (youpi) puis il a oublié un truc (le menu associé à l'article), donc il l'ajoute dans le default.php.

    Je pense que cette syntaxe est incorrecte, mais essayez déjà de remplacer (int)$_GET['Itemid'] par JRequest::getInt('id') dans default.php, mais je ne suis pas sûr que cela fonctionne.

    Autre solution : retirez .'&Itemid='.$ArrayItemId[$i]->itemId) en ligne 41 ainsi que la requête sql.

    Pascal
    Bonsoir Pascal.

    Un immense merci car vos modifs ont permis de corriger les erreurs de liens ! Un grand pas de fait....

    Seulement, il manque maintenant les images au dessus des articles proposés.

    Pour info, avant votre modif, j'avais bien les images correctes sur chaque article, mais les liens n'était pas bon.

    Désormais, c'est l'inverse....

    Si vous voulez je peux en MP vous envoyer le lien du site pour voir le problème en direct...

    En tout cas merci de m'aider !!

    Laisser un commentaire:


  • pmleconte
    a répondu
    J'ai ajouté le choix de l'ordre d'affichage dans les paramètres du module (ainsi que le filtrage par langue dans le helper.php).

    Pascal
    Fichiers joints

    Laisser un commentaire:


  • pmleconte
    a répondu
    J'ai un peu simplifié votre code et on doit pouvoir jouer aussi sur l'ordre d'affichage.

    Pascal
    Fichiers joints

    Laisser un commentaire:


  • pmleconte
    a répondu
    Pas terrible sa programmation: il charge $list dans le helper (youpi) puis il a oublié un truc (le menu associé à l'article), donc il l'ajoute dans le default.php.

    Je pense que cette syntaxe est incorrecte, mais essayez déjà de remplacer (int)$_GET['Itemid'] par JRequest::getInt('id') dans default.php, mais je ne suis pas sûr que cela fonctionne.

    Autre solution : retirez .'&Itemid='.$ArrayItemId[$i]->itemId) en ligne 41 ainsi que la requête sql.

    Pascal

    Laisser un commentaire:


  • pmleconte
    a répondu
    Oups! , je viens de voir que vous aviez mis le zip du module.

    Je regarde si je vois quelque chose.

    Pascal

    Laisser un commentaire:


  • pmleconte
    a répondu
    Votre ItemId vient certainement d'un formulaire de votre module. Regardez si vous ne trouvez pas cela dans le fichier xml du module.

    Pascal

    Laisser un commentaire:


  • pmleconte
    a répondu
    Bonjour,

    Votre problème vient bien du module "voiraussi" qui est soit "pas à jour", soit incompatible avec la version actuelle Joomla, donc, désactivez le.

    Si vous souhaitez que l'on vous aide, merci de copier le contenu du module.

    Pascal

    PS: ne touchez pas au fichier CMSapplication qui est un fichier standard Joomla pour corriger un problème dans un autre module
    Dernière édition par pmleconte à 02/02/2019, 15h41

    Laisser un commentaire:


  • Scuba070
    a répondu
    J'ai peut être une question bête.... Mais je vois à des endroits Itemid, à d'autres itemId, ou encore ItemId.

    La casse est-elle importante ?

    Laisser un commentaire:


  • Scuba070
    a répondu
    Bon je continue seul à essayer de solutionner mon problème. J'écris ici toutes mes avancées, peut-être que cela servira à quelqu'un un jour...

    J'ai résolu -en partie- l'erreur
    0 - Using $this when not in object context
    En cherchant un peu sur les forum, la ligne suivante était incorrecte :

    Code:
    $parentItemid = JSite::getMenu()->getActive()->parent_id;
    Voici la correction :
    Code:
    $parentItemid = JFactory::getApplication()->getMenu()->getActive()->parent_id;
    Désormais, le site ne plante plus, mais j'ai encore une erreur :
    Code:
    [B]Notice[/B]: Undefined index: Itemid in [B]/home/handifleao/www/securacces/modules/mod_voiraussi/tmpl/default.php [/B]on line [B]22[/B]
    Voici le code incluant la ligne 22 :

    Code:
    //Obtain a database connection
    $db = JFactory::getDbo();
    //Retrieve the shout                    
    $query = $db->getQuery(true)
                ->select('m.id as itemId')
                ->from('#__menu as m')
                ->where('m.parent_id =' . (int)$parentItemid . ' AND m.id !=' . (int)$_GET['Itemid']) [COLOR=#FF0000][B]la ligne 22 est ici[/B][/COLOR]
                ->order('m.lft ASC');
    Une idée de comment corriger ce problème ?



    Laisser un commentaire:


  • Scuba070
    a répondu
    En activant le rapport d'erreur sur déceloppement, j'arrive à en savoir un peu plus :

    Code:
    Using $this when not in object context
    /home/handifleao/www/securacces/libraries/src/Application/CMSApplication.php:370 [TABLE="cellpadding: 0, cellspacing: 0"]
    [TR]
    [TD="colspan: 3"][B]Call stack[/B][/TD]
     		[/TR]
    [TR]
    [TD][B]#[/B][/TD]
     			[TD][B]Function[/B][/TD]
     			[TD][B]Location[/B][/TD]
     		[/TR]
    [TR]
    [TD]1[/TD]
     			[TD]()[/TD]
     			[TD]JROOT/libraries/src/Application/CMSApplication.php:370[/TD]
     		[/TR]
    [TR]
    [TD]2[/TD]
     			[TD]Joomla\CMS\Application\CMSApplication::getMenu()[/TD]
     			[TD]JROOT/libraries/src/Application/SiteApplication.php:275[/TD]
     		[/TR]
    [TR]
    [TD]3[/TD]
     			[TD]Joomla\CMS\Application\SiteApplication::getMenu()[/TD]
     			[TD]JROOT/modules/mod_voiraussi/tmpl/default.php:10[/TD]
     		[/TR]
    [TR]
    [TD]4[/TD]
     			[TD]require()[/TD]
     			[TD]JROOT/modules/mod_voiraussi/mod_voiraussi.php:9[/TD]
     		[/TR]
    [TR]
    [TD]5[/TD]
     			[TD]include()[/TD]
     			[TD]JROOT/libraries/src/Helper/ModuleHelper.php:200[/TD]
     		[/TR]
    [TR]
    [TD]6[/TD]
     			[TD]Joomla\CMS\Helper\ModuleHelper::renderModule()[/TD]
     			[TD]JROOT/libraries/src/Document/Renderer/Html/ModuleRenderer.php:98[/TD]
     		[/TR]
    [TR]
    [TD]7[/TD]
     			[TD]Joomla\CMS\Document\Renderer\Html\ModuleRenderer->render()[/TD]
     			[TD]JROOT/libraries/src/Document/Renderer/Html/ModulesRenderer.php:47[/TD]
     		[/TR]
    [TR]
    [TD]8[/TD]
     			[TD]Joomla\CMS\Document\Renderer\Html\ModulesRenderer->render()[/TD]
     			[TD]JROOT/libraries/src/Document/HtmlDocument.php:491[/TD]
     		[/TR]
    [TR]
    [TD]9[/TD]
     			[TD]Joomla\CMS\Document\HtmlDocument->getBuffer()[/TD]
     			[TD]JROOT/libraries/src/Document/HtmlDocument.php:783[/TD]
     		[/TR]
    [TR]
    [TD]10[/TD]
     			[TD]Joomla\CMS\Document\HtmlDocument->_renderTemplate()[/TD]
     			[TD]JROOT/libraries/src/Document/HtmlDocument.php:557[/TD]
     		[/TR]
    [TR]
    [TD]11[/TD]
     			[TD]Joomla\CMS\Document\HtmlDocument->render()[/TD]
     			[TD]JROOT/libraries/src/Application/CMSApplication.php:1044[/TD]
     		[/TR]
    [TR]
    [TD]12[/TD]
     			[TD]Joomla\CMS\Application\CMSApplication->render()[/TD]
     			[TD]JROOT/libraries/src/Application/SiteApplication.php:778[/TD]
     		[/TR]
    [TR]
    [TD]13[/TD]
     			[TD]Joomla\CMS\Application\SiteApplication->render()[/TD]
     			[TD]JROOT/libraries/src/Application/CMSApplication.php:202[/TD]
     		[/TR]
    [TR]
    [TD]14[/TD]
     			[TD]Joomla\CMS\Application\CMSApplication->execute()[/TD]
     			[TD]JROOT/index.php:49[/TD]
     		[/TR]
    [/TABLE]
    J'ai donc ouvert le fichier CMSapplication et voici le code de la ligne 370 :

    Code:
        public function getMenu($name = null, $options = array())
        {
            if (!isset($name))
            {
                $name = $this->getName();
            }
    
            // Inject this application object into the \JMenu tree if one isn't already specified
            if (!isset($options['app']))
            {
                $options['app'] = $this; [COLOR=#FF0000][B]la ligne 370 est ici[/B][/COLOR]
            }
    
            try
            {
                $menu = \JMenu::getInstance($name, $options);
            }
            catch (\Exception $e)
            {
                return;
            }
    
            return $menu;
        }
    Que dois-je modifier ici et comment ?

    D'avance, merci

    Laisser un commentaire:


  • Scuba070
    a répondu
    Envoyé par RobertG Voir le message
    Bonjour,

    En fait, "DS" correspond au séparateur "/" dans les chemins.
    Il faut soit le remplacer partout dans le code, soit voir si sa définition au début du fichier principal est bien prise en compte.
    Merci Robert G

    Merci pour votre réponse. Je viens de comparer mon fichier PHP avec celui d'un autre module et j'ai compris ce que vous avez écrit.

    Ainsi j'ai transformé
    Code:
    require_once( dirname(__FILE__).DS.'helper.php' );
    en
    Code:
    require_once dirname(__FILE__) . '/helper.php';
    Je n'ai plus l'erreur "undefined constant DS" mais du coup je retrouve ma deuxième erreur

    Code:
    0 - Using $this when not in object context
    Mais cette fois je n'ai aucune idée de comment m'en sortir...

    Laisser un commentaire:


  • Scuba070
    a répondu
    J'ai oublié de préciser une chose importante.

    J'ai tenté diverses solutions trouvé ici et , sans succès car cela me donne une autre erreur une fois en place:
    Code:
    0 - Using $this when not in object context

    Laisser un commentaire:


  • RobertG
    a répondu
    Bonjour,

    En fait, "DS" correspond au séparateur "/" dans les chemins.
    Il faut soit le remplacer partout dans le code, soit voir si sa définition au début du fichier principal est bien prise en compte.
    define('DS', DIRECTORY_SEPARATOR);

    Laisser un commentaire:

Annonce

Réduire
Aucune annonce pour le moment.

Partenaire de l'association

Réduire

Hébergeur Web PlanetHoster
Travaille ...
X