modifier mod_articles_category

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

  • [Problème] modifier mod_articles_category

    Bonjour,
    j'utilise mod_articles_category pour avoir la liste des articles publiés avec un groupement par date.
    Ayant un nombre important d'articles à terme, je tente d’ajouter une fonction accordion pour que seules les dates de groupement soient visibles et que la liste des articles se déroule sur un clic.
    Pour ce faire j'ai donc essayé de mixer le code de cette page avec celui du module.

    joomla 2.5.11 sur serveur local wampserver
    Version de Apache:
    2.2.21
    Version de PHP:
    5.3.10

    cela me donne :
    Code PHP:
    <?php
    /**
     * @package        Joomla.Site
     * @subpackage    mod_articles_category
     * @copyright    Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
     * @license        GNU General Public License version 2 or later; see LICENSE.txt
     */

    // no direct access   


    defined('_JEXEC') or die;
    include (
    "class_accordion.php");
    $acc = new accordion('toggler','item');
     

    ?>
    <ul class="category-module<?php echo $moduleclass_sfx?>">
    <?php if ($grouped) : ?>
        <?php foreach ($list as $group_name => $group) : ?>
        <li>
        <?php echo "$acc->add_item('";?>
            <h<?php echo $item_heading?>><?php echo $group_name?></h<?php echo $item_heading?>>
         <?php echo "','";    ?> 
            <ul>
                <?php foreach ($group as $item) : ?>
                    <li>
                        <h<?php echo $item_heading+1?>>
                               <?php if ($params->get('link_titles') == 1) : ?>
                            <a class="mod-articles-category-title <?php echo $item->active?>" href="<?php echo $item->link?>">
                            <?php echo $item->title?>
                            <?php if ($item->displayHits) :?>
                                <span class="mod-articles-category-hits">
                                (<?php echo $item->displayHits?>)  </span>
                            <?php endif; ?></a>
                            <?php else :?>
                            <?php echo $item->title?>
                                <?php if ($item->displayHits) :?>
                                <span class="mod-articles-category-hits">
                                (<?php echo $item->displayHits?>)  </span>
                            <?php endif; ?></a>
                                <?php endif; ?>
                        </h<?php echo $item_heading+1?>>


                    <?php if ($params->get('show_author')) :?>
                        <span class="mod-articles-category-writtenby">
                        <?php echo $item->displayAuthorName?>
                        </span>
                    <?php endif;?>

                    <?php if ($item->displayCategoryTitle) :?>
                        <span class="mod-articles-category-category">
                        (<?php echo $item->displayCategoryTitle?>)
                        </span>
                    <?php endif; ?>
                    <?php if ($item->displayDate) : ?>
                        <span class="mod-articles-category-date"><?php echo $item->displayDate?></span>
                    <?php endif; ?>
                    <?php if ($params->get('show_introtext')) :?>
                <p class="mod-articles-category-introtext">
                <?php echo $item->displayIntrotext?>
                </p>
            <?php endif; ?>

            <?php if ($params->get('show_readmore')) :?>
                <p class="mod-articles-category-readmore">
                    <a class="mod-articles-category-title <?php echo $item->active?>" href="<?php echo $item->link?>">
                    <?php if ($item->params->get('access-view')== FALSE) :
                            echo 
    JText::_('MOD_ARTICLES_CATEGORY_REGISTER_TO_READ_MORE');
                        elseif (
    $readmore $item->alternative_readmore) :
                            echo 
    $readmore;
                            echo 
    JHtml::_('string.truncate'$item->title$params->get('readmore_limit'));
                            if (
    $params->get('show_readmore_title'0) != 0) :
                                echo 
    JHtml::_('string.truncate', ($this->item->title), $params->get('readmore_limit'));
                            endif;
                        elseif (
    $params->get('show_readmore_title'0) == 0) :
                            echo 
    JText::sprintf('MOD_ARTICLES_CATEGORY_READ_MORE_TITLE');
                        else :

                            echo 
    JText::_('MOD_ARTICLES_CATEGORY_READ_MORE');
                            echo 
    JHtml::_('string.truncate', ($item->title), $params->get('readmore_limit'));
                        endif; 
    ?>
                </a>
                </p>
                <?php endif; ?>
            </li>
                <?php endforeach; ?>
            </ul>
             <?php echo"')";?> 
        </li>
         <?php echo $acc->output(),'<script type="text/javascript">',$acc->output_js(),'</script>';?> 
        <?php endforeach; ?>
    <?php 
    else : ?>
        <?php foreach ($list as $item) : ?>
            <li>
               <h<?php echo $item_heading?>>
               <?php if ($params->get('link_titles') == 1) : ?>
            <a class="mod-articles-category-title <?php echo $item->active?>" href="<?php echo $item->link?>">
            <?php echo $item->title?>
            <?php if ($item->displayHits) :?>
                <span class="mod-articles-category-hits">
                (<?php echo $item->displayHits?>)  </span>
            <?php endif; ?></a>
            <?php else :?>
            <?php echo $item->title?>
                <?php if ($item->displayHits) :?>
                <span class="mod-articles-category-hits">
                (<?php echo $item->displayHits?>)  </span>
            <?php endif; ?></a>
                <?php endif; ?>
            </h<?php echo $item_heading?>>

               <?php if ($params->get('show_author')) :?>
                   <span class="mod-articles-category-writtenby">
                <?php echo $item->displayAuthorName?>
                </span>
            <?php endif;?>
            <?php if ($item->displayCategoryTitle) :?>
                <span class="mod-articles-category-category">
                (<?php echo $item->displayCategoryTitle?>)
                </span>
            <?php endif; ?>
            <?php if ($item->displayDate) : ?>
                <span class="mod-articles-category-date"><?php echo $item->displayDate?></span>
            <?php endif; ?>
            <?php if ($params->get('show_introtext')) :?>
                <p class="mod-articles-category-introtext">
                <?php echo $item->displayIntrotext?>
                </p>
            <?php endif; ?>

            <?php if ($params->get('show_readmore')) :?>
                <p class="mod-articles-category-readmore">
                    <a class="mod-articles-category-title <?php echo $item->active?>" href="<?php echo $item->link?>">
                    <?php if ($item->params->get('access-view')== FALSE) :
                            echo 
    JText::_('MOD_ARTICLES_CATEGORY_REGISTER_TO_READ_MORE');
                        elseif (
    $readmore $item->alternative_readmore) :
                            echo 
    $readmore;
                            echo 
    JHtml::_('string.truncate'$item->title$params->get('readmore_limit'));
                        elseif (
    $params->get('show_readmore_title'0) == 0) :
                            echo 
    JText::sprintf('MOD_ARTICLES_CATEGORY_READ_MORE_TITLE');
                        else :
                            echo 
    JText::_('MOD_ARTICLES_CATEGORY_READ_MORE');
                            echo 
    JHtml::_('string.truncate'$item->title$params->get('readmore_limit'));
                        endif; 
    ?>
                </a>
                </p>
            <?php endif; ?>
        </li>
        <?php endforeach; ?>
    <?php 
    endif; ?>
    </ul>
    et voila la classe
    Code PHP:
    <?php
    /**
     * @package        Joomla.Site
     * @subpackage    mod_articles_category
     * @copyright    Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
     * @license        GNU General Public License version 2 or later; see LICENSE.txt
     */

    // no direct access


    defined('_JEXEC') or die;


    class 
    accordion
    {
        var 
    $toggler_class;
        var 
    $item_class;
        var 
    $items;
        var 
    $open;
        
        function 
    accordion($toggler_class 'toggler',$item_class 'item')
        {
            
    $this->items = array();
            
    $this->toggler_class $toggler_class;
            
    $this->item_class $item_class;
            
    $this->open 0;
        }
        
        function 
    add_item($toggler_content '',$item_content '',$open 0)
        {
            
    $this->items[] = array('toggler'=>$toggler_content,'item'=>$item_content,'open'=>(int)$open);
        }
        
        function 
    build()
        {
            foreach(
    $this->items as $index=>$item)
            {
                
    $return.= '<div class="'.$this->toggler_class.'">'.$item['toggler'].'</div>
                              <div class="'
    .$this->item_class.'">'.$item['item'].'</div>';
              if(
    $item['open']) { $this->open $index; }
            }
            return 
    $return;
        }
        
        function 
    output()
        {
            echo 
    $this->build();
        }
        
        function 
    output_js($options '')
        {
            return 
    'window.addEvent(\'domready\', function () { var accordion = new Accordion($$(\'.'.$this->toggler_class.'\'),$$(\'.'.$this->item_class.'\'), {
                        display:'
    .$this->open.'
                        '
    .($options ', '.$options '').'
                        }); });'
    ;
        }
        
    }
    ?>
    Mais quoi que je fasse, impossible de le faire fonctionner.
    avec le code ci-dessus j'ai un Undefined property: accordion::$add_item

    je suppose qu'il s'agit d'une quetion de " ou de '
    Merci de m'aiguiller car je cale complètement.

    joomla 2.5.11 sur serveur local wampserver
    Version de Apache:
    2.2.21
    Version de PHP:
    5.3.10
    Dernière édition par Riseryn à 25/07/2013, 17h07

  • #2
    Re : modifier mod_articles_category

    pas d'idée d"ou vient le problème?

    Commentaire


    • #3
      Re : modifier mod_articles_category

      un petit up car je n'ai toujours pas trouvé de solution.
      Une idée ou chercher?

      Commentaire


      • #4
        Re : modifier mod_articles_category

        salut,
        à vue de nez, et sans vérifier le JS, les variables
        $toggler_content
        $item_content
        de la function add_item
        ne sont pas définies au début de la class accordion

        Essaie :
        Code PHP:
        class accordion
        {
        var 
        $toggler_class;
        var 
        $item_class;
        //les variables à définir
        var $toggler_content;
        var 
        $item_content;

        var 
        $items;
        var 
        $open;

        //etc... 
        Sans garantie.
        Un message d’erreur sur votre site Joomla ... ayez le reflexe de consulter lla base de connaissance : https://kb.joomla.fr

        Ce forum, vous l'aimez ? il vous a sauvé la vie ? Vous y apprenez chaque jour ? Alors adhérez à l'AFUJ https://www.joomla.fr/association/adherer

        Commentaire


        • #5
          Re : modifier mod_articles_category

          J'ai rajouté la définition la définition des variables mais le code ne fonctionne toujours pas.

          Commentaire


          • #6
            Re : modifier mod_articles_category

            Est-ce que tu as des erreurs PHP signalées ?
            Warning ou notice ?
            Ou, en activant Firebug, des erreurs JS ?
            Est-ce que le petit script JS apparait correctement à l'affichage de la page ?
            Un message d’erreur sur votre site Joomla ... ayez le reflexe de consulter lla base de connaissance : https://kb.joomla.fr

            Ce forum, vous l'aimez ? il vous a sauvé la vie ? Vous y apprenez chaque jour ? Alors adhérez à l'AFUJ https://www.joomla.fr/association/adherer

            Commentaire


            • #7
              Re : modifier mod_articles_category

              j'ai l'erreur suivante
              Notice: Undefined property: accordion::$add_item in E:\wamp\www\nekkua\templates\nekkua_blue\html\mod_ articles_category\default.php on line 22

              qui est la ligne
              <?php echo "$acc->add_item('";?>

              Pourquoi est ce undefined ?

              Commentaire


              • #8
                Re : modifier mod_articles_category

                Bonjour,
                Envoyé par Riseryn Voir le message
                j'ai l'erreur suivante
                Notice: Undefined property: accordion::$add_item in E:\wamp\www\nekkua\templates\nekkua_blue\html\mod_ articles_category\default.php on line 22

                qui est la ligne
                <?php echo "$acc->add_item('";?>

                Pourquoi est ce undefined ?
                C'est
                une "notice", donc pas de plantage du script.
                add_item est une méthode de ta classe accordion. Or, PHP le voit comme une "property", donc une variable.

                Dans le code, que vient faire

                Code PHP:
                    <?php echo "$acc->add_item('";?> 
                        <h<?php echo $item_heading?>><?php echo $group_name?></h<?php echo $item_heading?>
                     <?php echo "','";    ?>  
                        <ul>
                etc

                en mixant allègrement et dans une chaine, un appel de méthode, du echo...

                Personne ne peut s'y retrouver, à commencer par le moteur PHP/Zend.
                La bonne méthode de programmation consiste à créer des variables pour les paramètres, puis à appeler la méthode, mais cetes pas dans un echo, vu que ce add_item ne retourne rien par dessus le marché.
                Pas de demande de support par MP.
                S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

                Commentaire


                • #9
                  Re : modifier mod_articles_category

                  Merci de la réponse mais je suis complètement perdu et je ne sais pas par quel bout prendre cela.
                  j'ai essayé d'adapter le script en me servant de l'exemple indiqué sur la page dans mon premier poste, mais visiblement c'est pas la bonne méthode

                  Commentaire


                  • #10
                    Re : modifier mod_articles_category

                    Pourquoi ne pas tout simplement utiliser un des multiples Accordion disponibles http://extensions.joomla.org/extensi...ccordion-menus ou http://extensions.joomla.org/search?...ion+categories
                    Pas de demande de support par MP.
                    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

                    Commentaire


                    • #11
                      Re : modifier mod_articles_category

                      Master Jisse03 is back, alive and kicking

                      Suis ses conseils avisés, je ne saurais dire mieux.
                      Un message d’erreur sur votre site Joomla ... ayez le reflexe de consulter lla base de connaissance : https://kb.joomla.fr

                      Ce forum, vous l'aimez ? il vous a sauvé la vie ? Vous y apprenez chaque jour ? Alors adhérez à l'AFUJ https://www.joomla.fr/association/adherer

                      Commentaire


                      • #12
                        Re : modifier mod_articles_category

                        Envoyé par ghazal Voir le message
                        Master Jisse03 is back, alive and kicking

                        Suis ses conseils avisés, je ne saurais dire mieux.
                        Dans ce cas là, et vu le code calamiteux, soit il faut réécrire le tout (la classe et la view), soit, si le niveau PHP objet et connaissance des internals Joomla! laisse à désirer, aller au plus simple, un des multiples modules accordion qui trainent sur le JED
                        Pas de demande de support par MP.
                        S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

                        Commentaire


                        • #13
                          Re : modifier mod_articles_category

                          oui mais comment les mixer avec le mod_category?
                          le but est qu'au lieu d'afficher tous les articles ils soient regroupés par date et qu'ensuite chaque date s'ouvre en accordion avec la liste des articles.
                          De plus le module doit etre integré dans accordionck ce qui risque peut être de faire conflit?

                          Commentaire


                          • #14
                            Re : modifier mod_articles_category

                            Ces accordion ont du paramétrage. Le Skyline, par exemple, permet de paramétrer finement ce qu'on veut, et n'est pas en conflit avec Accordion CK.

                            Au lieu de sans arrêt émettre des objections, fais comme ceux qui te répondent, prennent le temps d'essayer, etc.
                            Pas de demande de support par MP.
                            S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

                            Commentaire


                            • #15
                              Re : modifier mod_articles_category

                              je vais essayer tout ca, merci

                              Commentaire

                              Annonce

                              Réduire
                              Aucune annonce pour le moment.

                              Partenaire de l'association

                              Réduire

                              Hébergeur Web PlanetHoster
                              Travaille ...