Afficher éléments selon champs perso - K2

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

  • Afficher éléments selon champs perso - K2

    Bonjour,

    Je suis en train de construire un site, en utilisant Joomla 3! et K2.

    J'aurai besoin d'afficher dans un module les 4 derniers éléments qui ont un champs personnalisé réglé à OUI. Pour certaines catégories j'ai un champs personnalisé "Actu mise en avant ? OUI ou NON". Si c'est oui, alors l'élément pourra être affiché dans le module, sinon non.

    Or le mod_k2_content ne permet pas de trier le contenu en fonction d'un champs (ni même d'un tag, ce qui est dommage, j'aurai sinon pu passer par un tag plutôt qu'un champs). Je me vois mal faire le tri directement dans le template du module via PHP, ça voudrait dire aller chercher tous les articles puis les vérifier 1 par 1, c'est un peu lourd pour afficher 4 liens dans la sidebar :/

    Du coup si vous auriez des astuces/plugins/modules/... à me conseiller je suis preneuse

    Merci !

  • #2
    Re : Afficher éléments selon champs perso - K2

    Dommage flexicontent le peu lol mise a part pour k2 je ne pense pas que cela soit possible
    Société : http://www.com3elles.com
    Bénévole : http://www.flexicontent.org

    Commentaire


    • #3
      Re : Afficher éléments selon champs perso - K2

      tiens a voir pour ton cas :
      We are proud to annouce JA K2 Filter and Search module to provide the search and filter feature for K2 Component based on extra fields parameters. Such specific search or filter capability has been missing for long in K2. Developed for our JA portfolio

      Commentaire


      • #4
        Re : Afficher éléments selon champs perso - K2

        Envoyé par M-kr Voir le message
        Bonjour,

        Je suis en train de construire un site, en utilisant Joomla 3! et K2.

        J'aurai besoin d'afficher dans un module les 4 derniers éléments qui ont un champs personnalisé réglé à OUI. Pour certaines catégories j'ai un champs personnalisé "Actu mise en avant ? OUI ou NON". Si c'est oui, alors l'élément pourra être affiché dans le module, sinon non.

        Or le mod_k2_content ne permet pas de trier le contenu en fonction d'un champs (ni même d'un tag, ce qui est dommage, j'aurai sinon pu passer par un tag plutôt qu'un champs). Je me vois mal faire le tri directement dans le template du module via PHP, ça voudrait dire aller chercher tous les articles puis les vérifier 1 par 1, c'est un peu lourd pour afficher 4 liens dans la sidebar :/

        Du coup si vous auriez des astuces/plugins/modules/... à me conseiller je suis preneuse

        Merci !
        Dupliques modules/mod_k2_content/tmpl/Default/

        Renommes cette copie "actu" par exemple

        Ouvre le default.php qui est dedans

        ligne 22 change la ligne
        <?php foreach ($items as $key=>$item): ?>

        en

        <?php foreach ($items as $key=>$item):
        $flag = false;
        foreach ($item->extra_fields as $key=>$extraField)
        if($extraField->name == 'actu_mise_en_avant' && $extraField->value == "OUI") $flag=true;

        if($flag == true) :
        ?>

        ...
        tout le code servant à afficher l'item
        ...

        et ligne 185 tu as
        <?php endforeach; ?>
        qui ferme la boucle, il faut ajouter la fermeture de notre test

        <?php
        endif;
        endforeach; ?>


        ça aura pour effet de chercher ton champ supplémentaire actu_mise_en_avant, de le tester et si sa valeur est OUI on affiche l'actu sinon on passe à la suivante

        Et pour que ce template de K2 soit appliqué à ton module, n'oublie pas de le sélectionner dans "sélectionner un sous-modèle" lors du paramétrage du module



        Ci-dessous le code complet mais copie plutôt les 2 bouts en vert dans ton fichier car le forum a tendance à ajouter des espaces de le code...

        <?php
        /**
        * @version 2.6.x
        * @package K2
        * @author JoomlaWorks http://www.joomlaworks.net
        * @copyright Copyright (c) 2006 - 2014 JoomlaWorks Ltd. All rights reserved.
        * @license GNU/GPL license: http://www.gnu.org/copyleft/gpl.html
        */

        // no direct access
        defined('_JEXEC') or die;
        ?>

        <div id="k2ModuleBox<?php echo $module->id; ?>" class="k2ItemsBlock<?php if($params->get('moduleclass_sfx')) echo ' '.$params->get('moduleclass_sfx'); ?>">

        <?php if($params->get('itemPreText')): ?>
        <p class="modulePretext"><?php echo $params->get('itemPreText'); ?></p>
        <?php endif; ?>

        <?php if(count($items)): ?>
        <ul>

        <?php foreach ($items as $key=>$item):
        $flag = false;
        foreach ($item->extra_fields as $key=>$extraField)
        if($extraField->name == 'actu_mise_en_avant' && $extraField->value == "OUI") $flag=true;

        if($flag == true) :
        ?>




        <li class="<?php echo ($key%2) ? "odd" : "even"; if(count($items)==$key+1) echo ' lastItem'; ?>">

        <!-- Plugins: BeforeDisplay -->
        <?php echo $item->event->BeforeDisplay; ?>

        <!-- K2 Plugins: K2BeforeDisplay -->
        <?php echo $item->event->K2BeforeDisplay; ?>

        <?php if($params->get('itemAuthorAvatar')): ?>
        <a class="k2Avatar moduleItemAuthorAvatar" rel="author" href="<?php echo $item->authorLink; ?>">
        <img src="<?php echo $item->authorAvatar; ?>" alt="<?php echo K2HelperUtilities::cleanHtml($item->author); ?>" style="width:<?php echo $avatarWidth; ?>px;height:auto;" />
        </a>
        <?php endif; ?>

        <?php if($params->get('itemTitle')): ?>
        <a class="moduleItemTitle" href="<?php echo $item->link; ?>"><?php echo $item->title; ?></a>
        <?php endif; ?>

        <?php if($params->get('itemAuthor')): ?>
        <div class="moduleItemAuthor">
        <?php echo K2HelperUtilities::writtenBy($item->authorGender); ?>

        <?php if(isset($item->authorLink)): ?>
        <a rel="author" title="<?php echo K2HelperUtilities::cleanHtml($item->author); ?>" href="<?php echo $item->authorLink; ?>"><?php echo $item->author; ?></a>
        <?php else: ?>
        <?php echo $item->author; ?>
        <?php endif; ?>

        <?php if($params->get('userDescription')): ?>
        <?php echo $item->authorDescription; ?>
        <?php endif; ?>

        </div>
        <?php endif; ?>

        <!-- Plugins: AfterDisplayTitle -->
        <?php echo $item->event->AfterDisplayTitle; ?>

        <!-- K2 Plugins: K2AfterDisplayTitle -->
        <?php echo $item->event->K2AfterDisplayTitle; ?>

        <!-- Plugins: BeforeDisplayContent -->
        <?php echo $item->event->BeforeDisplayContent; ?>

        <!-- K2 Plugins: K2BeforeDisplayContent -->
        <?php echo $item->event->K2BeforeDisplayContent; ?>

        <?php if($params->get('itemImage') || $params->get('itemIntroText')): ?>
        <div class="moduleItemIntrotext">
        <?php if($params->get('itemImage') && isset($item->image)): ?>
        <a class="moduleItemImage" href="<?php echo $item->link; ?>" title="<?php echo JText::_('K2_CONTINUE_READING'); ?> &quot;<?php echo K2HelperUtilities::cleanHtml($item->title); ?>&quot;">
        <img src="<?php echo $item->image; ?>" alt="<?php echo K2HelperUtilities::cleanHtml($item->title); ?>"/>
        </a>
        <?php endif; ?>

        <?php if($params->get('itemIntroText')): ?>
        <?php echo $item->introtext; ?>
        <?php endif; ?>
        </div>
        <?php endif; ?>

        <?php if($params->get('itemExtraFields') && count($item->extra_fields)): ?>
        <div class="moduleItemExtraFields">
        <b><?php echo JText::_('K2_ADDITIONAL_INFO'); ?></b>
        <ul>
        <?php foreach ($item->extra_fields as $extraField): ?>
        <?php if($extraField->value != ''): ?>
        <li class="type<?php echo ucfirst($extraField->type); ?> group<?php echo $extraField->group; ?>">
        <?php if($extraField->type == 'header'): ?>
        <h4 class="moduleItemExtraFieldsHeader"><?php echo $extraField->name; ?></h4>
        <?php else: ?>
        <span class="moduleItemExtraFieldsLabel"><?php echo $extraField->name; ?></span>
        <span class="moduleItemExtraFieldsValue"><?php echo $extraField->value; ?></span>
        <?php endif; ?>
        <div class="clr"></div>
        </li>
        <?php endif; ?>
        <?php endforeach; ?>
        </ul>
        </div>
        <?php endif; ?>

        <div class="clr"></div>

        <?php if($params->get('itemVideo')): ?>
        <div class="moduleItemVideo">
        <?php echo $item->video ; ?>
        <span class="moduleItemVideoCaption"><?php echo $item->video_caption ; ?></span>
        <span class="moduleItemVideoCredits"><?php echo $item->video_credits ; ?></span>
        </div>
        <?php endif; ?>

        <div class="clr"></div>

        <!-- Plugins: AfterDisplayContent -->
        <?php echo $item->event->AfterDisplayContent; ?>

        <!-- K2 Plugins: K2AfterDisplayContent -->
        <?php echo $item->event->K2AfterDisplayContent; ?>

        <?php if($params->get('itemDateCreated')): ?>
        <span class="moduleItemDateCreated"><?php echo JText::_('K2_WRITTEN_ON') ; ?> <?php echo JHTML::_('date', $item->created, JText::_('K2_DATE_FORMAT_LC2')); ?></span>
        <?php endif; ?>

        <?php if($params->get('itemCategory')): ?>
        <?php echo JText::_('K2_IN') ; ?> <a class="moduleItemCategory" href="<?php echo $item->categoryLink; ?>"><?php echo $item->categoryname; ?></a>
        <?php endif; ?>

        <?php if($params->get('itemTags') && count($item->tags)>0): ?>
        <div class="moduleItemTags">
        <b><?php echo JText::_('K2_TAGS'); ?>:</b>
        <?php foreach ($item->tags as $tag): ?>
        <a href="<?php echo $tag->link; ?>"><?php echo $tag->name; ?></a>
        <?php endforeach; ?>
        </div>
        <?php endif; ?>

        <?php if($params->get('itemAttachments') && count($item->attachments)): ?>
        <div class="moduleAttachments">
        <?php foreach ($item->attachments as $attachment): ?>
        <a title="<?php echo K2HelperUtilities::cleanHtml($attachment->titleAttribute); ?>" href="<?php echo $attachment->link; ?>"><?php echo $attachment->title; ?></a>
        <?php endforeach; ?>
        </div>
        <?php endif; ?>

        <?php if($params->get('itemCommentsCounter') && $componentParams->get('comments')): ?>
        <?php if(!empty($item->event->K2CommentsCounter)): ?>
        <!-- K2 Plugins: K2CommentsCounter -->
        <?php echo $item->event->K2CommentsCounter; ?>
        <?php else: ?>
        <?php if($item->numOfComments>0): ?>
        <a class="moduleItemComments" href="<?php echo $item->link.'#itemCommentsAnchor'; ?>">
        <?php echo $item->numOfComments; ?> <?php if($item->numOfComments>1) echo JText::_('K2_COMMENTS'); else echo JText::_('K2_COMMENT'); ?>
        </a>
        <?php else: ?>
        <a class="moduleItemComments" href="<?php echo $item->link.'#itemCommentsAnchor'; ?>">
        <?php echo JText::_('K2_BE_THE_FIRST_TO_COMMENT'); ?>
        </a>
        <?php endif; ?>
        <?php endif; ?>
        <?php endif; ?>

        <?php if($params->get('itemHits')): ?>
        <span class="moduleItemHits">
        <?php echo JText::_('K2_READ'); ?> <?php echo $item->hits; ?> <?php echo JText::_('K2_TIMES'); ?>
        </span>
        <?php endif; ?>

        <?php if($params->get('itemReadMore') && $item->fulltext): ?>
        <a class="moduleItemReadMore" href="<?php echo $item->link; ?>">
        <?php echo JText::_('K2_READ_MORE'); ?>
        </a>
        <?php endif; ?>

        <!-- Plugins: AfterDisplay -->
        <?php echo $item->event->AfterDisplay; ?>

        <!-- K2 Plugins: K2AfterDisplay -->
        <?php echo $item->event->K2AfterDisplay; ?>

        <div class="clr"></div>
        </li>

        <?php
        endif;
        endforeach; ?>



        <li class="clearList"></li>
        </ul>
        <?php endif; ?>

        <?php if($params->get('itemCustomLink')): ?>
        <a class="moduleCustomLink" href="<?php echo $params->get('itemCustomLinkURL'); ?>" title="<?php echo K2HelperUtilities::cleanHtml($itemCustomLinkTitle) ; ?>"><?php echo $itemCustomLinkTitle; ?></a>
        <?php endif; ?>

        <?php if($params->get('feed')): ?>
        <div class="k2FeedIcon">
        <a href="<?php echo JRoute::_('index.php?option=com_k2&view=itemlist&f ormat=feed&moduleID='.$module->id); ?>" title="<?php echo JText::_('K2_SUBSCRIBE_TO_THIS_RSS_FEED'); ?>">
        <span><?php echo JText::_('K2_SUBSCRIBE_TO_THIS_RSS_FEED'); ?></span>
        </a>
        <div class="clr"></div>
        </div>
        <?php endif; ?>

        </div>
        Christophe
        http://www.webcrea.fr

        Commentaire


        • #5
          Re : Afficher éléments selon champs perso - K2

          Merci webcrea, mais c'est exactement ce que j'explique ne pas vouloir faire :/

          Avec ce système (pas de soucis pour créer un nouveau template pour un module k2, je maitrise à force ), je charge tous les articles pour n'en afficher que 4, c'est dommage.
          Si pas d'autres solutions c'est ce que je ferais.

          Commentaire

          Annonce

          Réduire
          Aucune annonce pour le moment.

          Partenaire de l'association

          Réduire

          Hébergeur Web PlanetHoster
          Travaille ...
          X