Vue et Pagination : modifier l'affichage [<<][<]1 2 3 4 5 6... 90 91 [>][>>]

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour à tous,

Ma pagination en bas de page ressemble à ça [<<][<]1 2 3 4 5 6 7 8 9 10 11 ... 90 91 [>][>>]
Le problème est que j'ai trop de chiffres affiché et que l'affichage de la pagination est sur 2 et dés fois 3 lignes.

J'aimerai juste que la pagination des chiffres s'affiche sur 4 chiffres maximum : 1 2 ... 90 91

Comment faire ça svp ?

Bonjour et merci de ta réponse. Mais comment utiliser cette fonction dans le template.php ? Je ne vois pas comment l'appeler et surtout quels paramètres lui passer (hormis $quantity). Un petit exemple serait bienvenue.

Merci d'avance

Tu peux copié la fonction entière de Drupal API (le lien que je t'ai mis) dans ton template.php de ton thème en remplaçant theme_apger par le nom de ton thème (exemple : zen_pager) et tu changes $quantity à ta convenance.

re, merci encore de cette réponse. Cependant ça ne fonctionne pas. J'ai bien bien dans template.php 'montheme_pager(..)' ou 'montheme_theme_pager' ou theme_pager() (quel domage que drupal ne soit pas écrit en objet, sinon ça aurait fonctionné). Mais ma fonction pager() est ignoré.

Du coup, je ne sais pas comment appeler la fonction de theme_...() dans template.php. Une idée ?

Bon voici par exemple un theme_pager revisité pour modifier le type de pagination

function ludo_pager($tags = array(), $limit = 10, $element = 0, $parameters = array(), $quantity = 5) {
  global $pager_page_array, $pager_total;
  $tags = array("<<", "", "", "", ">>");

  // Calculate various markers within this pager piece:
  // Middle is used to "center" pages around the current page.
  $pager_middle = ceil($quantity / 2);
  // current is the page we are currently paged to
  $pager_current = $pager_page_array[$element] + 1;
  // first is the first page listed by this pager piece (re quantity)
  $pager_first = $pager_current - $pager_middle + 1;
  // last is the last page listed by this pager piece (re quantity)
  $pager_last = $pager_current + $quantity - $pager_middle;
  // max is the maximum page number
  $pager_max = $pager_total[$element];
  // End of marker calculations.

  // Prepare for generation loop.
  $i = $pager_first;
  if ($pager_last > $pager_max) {
    // Adjust "center" if at end of query.
    $i = $i + ($pager_max - $pager_last);
    $pager_last = $pager_max;
  }
  if ($i <= 0) {
    // Adjust "center" if at start of query.
    $pager_last = $pager_last + (1 - $i);
    $i = 1;
  }
  // End of generation loop preparation.
 
  $li_first = theme('pager_first', (isset($tags[0]) ? $tags[0] : t('<<')), $limit, $element, $parameters);
  $li_last = theme('pager_last', (isset($tags[4]) ? $tags[4] : t('>>')), $limit, $element, $parameters);

  if ($pager_total[$element] > 1) {
    if ($li_first) {
      $items[] = array(
        'class' => 'pager-first',
        'data' => $li_first,
      );
    }

    // When there is more than one page, create the pager list.
    if ($i != $pager_max) {
      // Now generate the actual pager piece.
      for (; $i <= $pager_last && $i <= $pager_max; $i++) {
        if ($i < $pager_current) {
      if ($pager_first > 1 && $i == $pager_first) {
  $output = ''.$i;
  $stopPreEllipsis = true;
  } else {
  $output = $i;
  }
          $items[] = array(
            'class' => 'pager-item',
            'data' => theme('pager_previous', $output, $limit, $element, ($pager_current - $i), $parameters),
          );
        }
        if ($i == $pager_current) {
          $items[] = array(
            'class' => 'pager-current',
            'data' => $i,
          );
        }
        if ($i > $pager_current) {

      if ($pager_last < $pager_max && $i == $pager_last) {
  $output = $i.'';
  } else {
  $output = $i;
  }

          $items[] = array(
            'class' => 'pager-item',
            'data' => theme('pager_next', $output, $limit, $element, ($i - $pager_current), $parameters),
          );
        }
      }
    }
    // End generation.
   if ($li_last) {
      $items[] = array(
        'class' => 'pager-last',
        'data' => $li_last,
      );
    }

    return theme('item_list', $items, NULL, 'ul', array('class' => 'pager'));
  }
}

Ce code est bien dans le template.php de mon thème activé et marche parfaitement.

Regardes si tu n'as pas oublié quelque chose.

C'est étrange, ça ne fonctionne pas. Pourtant je comprends bien le principe de surcharger une fonction thème. En fait, j'ai fait simple, j'ai écris une fonction pour être sûr que ça ne fonctionne pas de ce type function montheme_pager($tags = array(), $limit = 10, $element = 0, $parameters = array(), $quantity = 5) {exit;}

Mais je ne passe jamais dans le exit.

C'est vraiment étrange car dans mon template.php j'ai des fonctions surcharger. Je pense que ce sera dur de m'aider à distance à ce niveau. Mais si tu as une idée, je suis preneur.

Je vais continuer à faire des tests

j'ai parcouru tous le CSS, mais je ne voit pas a ou effectuer le changement !!
j'ai le meme soucci pour changer la couleur des lien utilisateur de mes modérateurs dans les articles ou commentaire ;)je te remerci de ton aide :)

Regarde avec firebug les élements à changer et dans le style.css de ton thème tu rajout à la fin ce que tu veux. Pour ton 2e soucis il va falloir être plus précis :)

EDIT : Fait un nouveau post pour ton 2e soucis, parce que là on va polluer ce post...