0 votes

Alternance de couleurs dans UL en php Joomla mod_feed

J'utilise Joomla 1.5 pour mon site et je veux que le module de flux RSS (mod_feed) affiche des lignes alternées dans une couleur différente. J'espère que quelqu'un ici pourra m'aider ! Voici le code principal pour la mise en page du module (j'ai supprimé le haut de page)

<div style="direction: <?php echo $rssrtl ? 'rtl' :'ltr'; ?>; text-align: <?php echo $rssrtl ? 'right' :'left'; ?> ! important">
<?php
if( $feed != false )
{
 //image handling
 $iUrl  = isset($feed->image->url)   ? $feed->image->url   : null;
 $iTitle = isset($feed->image->title) ? $feed->image->title : null;
 ?>
 <table cellpadding="0" cellspacing="0" class="moduletable<?php echo $params->get('moduleclass_sfx'); ?>">
 <?php
 // feed description
 if (!is_null( $feed->title ) && $params->get('rsstitle', 1)) {
  ?>
  <tr>
   <td>
    <strong>
     <a href="<?php echo str_replace( '&', '&amp', $feed->link ); ?>" target="_blank">
      <?php echo $feed->title; ?></a>
    </strong>
   </td>
  </tr>
  <?php
 }

 // feed description
 if ($params->get('rssdesc', 1)) {
 ?>
  <tr>
   <td><?php echo $feed->description; ?></td>
  </tr>
  <?php
 }

 // feed image
 if ($params->get('rssimage', 1) && $iUrl) {
 ?>
  <tr>
   <td><img src="<?php echo $iUrl; ?>" alt="<?php echo @$iTitle; ?>"/></td>
  </tr>
 <?php
 }

 $actualItems = count( $feed->items );
 $setItems    = $params->get('rssitems', 5);

 if ($setItems > $actualItems) {
  $totalItems = $actualItems;
 } else {
  $totalItems = $setItems;
 }
 ?>
 <tr>
  <td>
   <ul class="newsfeed <?php echo $params->get( 'moduleclass_sfx'); ?>"  >
   <?php
   $words = $params->def('word_count', 0);
   for ($j = 0; $j < $totalItems; $j ++)
   {
    $currItem = & $feed->items[$j];
    // item title
    ?>
    <li>
    <?php
    if ( !is_null( $currItem->get_link() ) ) {
    ?>
     <a href="<?php echo $currItem->get_link(); ?>" target="_blank">
     <?php echo $currItem->get_title(); ?></a>
    <?php
    }

    // item description
    if ($params->get('rssitemdesc', 1))
    {
     // item description
     $text = $currItem->get_description();
     $text = str_replace('&apos;', "'", $text);

     // word limit check
     if ($words)
     {
      $texts = explode(' ', $text);
      $count = count($texts);
      if ($count > $words)
      {
       $text = '';
       for ($i = 0; $i < $words; $i ++) {
        $text .= ' '.$texts[$i];
       }
       $text .= '...';
      }
     }
     ?>
     <div style="text-align: <?php echo $params->get('rssrtl', 0) ? 'right': 'left'; ?> ! important" class="newsfeed_item<?php echo $params->get( 'moduleclass_sfx'); ?>"  >
      <?php echo $text; ?>
     </div>
     <?php
    }
    ?>
    </li>
    <?php
   }
   ?>
   </ul>
  </td>
  </tr>
 </table>
<?php } ?>
</div>

2voto

Chris Points 2982

Vous pouvez utiliser l'opérateur modulus pour déterminer si votre variable de boucle ($j) est actuellement paire ou impaire, puis appliquer une classe CSS en conséquence. En une seule ligne, vous pouvez changer votre balise li d'ouverture en quelque chose comme ceci :

<li class="<? ($j % 2) ? echo "even" : echo "odd"; ?>">

CSS pourrait être appliqué comme suit :

.newsfeed li.even{ background: #fff; }
.newsfeed li.odd{ background: #efefef; }

L'opérateur modulo pour les rangs alternés - Snook.ca

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X