Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 2 Ответов
  • 533 Просмотров
*

SuschnosT

  • Захожу иногда
  • 119
  • 1 / 2
Всем привет. Народ подскажите пожалуйста есть стандартная пагинация, в интернете нашел код ее стилизации:

Код
/**
 * Код этого файла отвечает за вывод пагинации в шаблон
 */

/*
 * Здесь задается вид кнопок перехода к следующей или к предыдущей записи
 * */
function getArrows()
{
  return [
    'prev' => '‹',
    'next' => '›'
  ];
}

/**
 * Вывод пагинации
 *
 * @param   array $list Массив, в котором содержится информация о пагинации
 *
* @return  string HTML разметка
 *
 * @since   3.0
 */
function pagination_list_render( $list )
{
  // Вычисление необходимого диапазона страниц для показа
  $currentPage = 1;
  $range = 1;
  $step = 5;

  foreach ( $list[ 'pages' ] as $k => $page )
  {
    if ( ! $page[ 'active' ] )
    {
      $currentPage = $k;
    }
  }

  if ( $currentPage >= $step )
  {
    if ( $currentPage % $step == 0 )
    {
      $range = ceil( $currentPage / $step ) + 1;
    } else
    {
      $range = ceil( $currentPage / $step );
    }
  }

  // Начало формирования html-разметки
  $html = '<nav><ul class="pagination">';
  //  $html .= $list[ 'start' ][ 'data' ];
  $html .= $list[ 'previous' ][ 'data' ];

  foreach ( $list[ 'pages' ] as $k => $page )
  {
    if ( in_array( $k, range( $range * $step - ( $step + 1 ), $range * $step ) ) )
    {
      if ( ( $k % $step == 0 || $k == $range * $step - ( $step + 1 ) ) && $k != $currentPage && $k != $range * $step - $step )
      {
        $page[ 'data' ] = preg_replace( '#(<a.*?>).*?(</a>)#', '$1...$2', $page[ 'data' ] );
      }
    }

    $html .= $page[ 'data' ];
  }

  $html .= $list[ 'next' ][ 'data' ];
  //  $html .= $list[ 'end' ][ 'data' ];

  $html .= '</ul></nav>';

  return $html;
}

/**
 * Рендер активного элемента пагинации
 *
 * @param   JPaginationObject $item Текущий объект пагинации
 *
 * @return  string HTML-разметка для активного элемента
 *
 * @since   3.0
 */
function pagination_item_active( &$item )
{
  $arrows = getArrows();
  $class = '';

  // Проверка и формирования элемента "Start"
  /*  if ( $item->text == JText::_( 'JLIB_HTML_START' ) )
    {
          $display = '<span class="icon-first"></span>';
    }*/

  // Проверка и формирования элемента "Prev"
  if ( $item->text == JText::_( 'JPREV' ) )
  {
    $display = '<span class="icon-previous">' . $arrows[ 'prev' ] . '</span>';
  }

  // Проверка и формирования элемента "Next"
  if ( $item->text == JText::_( 'JNEXT' ) )
  {
    $display = '<span class="icon-next">' . $arrows[ 'next' ] . '</span>';
  }

  // Проверка и формирования послденего элемента
  /*if ( $item->text == JText::_( 'JLIB_HTML_END' ) )
  {
        $display = '<span class="icon-last"></span>';
  }*/

  // Если элемент не сформирован, тогда просто формируем его с содержимым текстом
  if ( ! isset( $display ) )
  {
    $display = $item->text;
    //    $class = ' class="hidden-phone"';
  }

  return '<li' . $class . '><a title="' . $item->text . '" href="' . $item->link . '">' . $display . '</a></li>';
}

/**
 * Рендер неактивного элемента
 *
 * @param   JPaginationObject $item Текущий объект пагинации
 *
 * @return  string HTML-разметка для неактивного элемента
 *
 * @since   3.0
 */
function pagination_item_inactive( &$item )
{
  // Проверка и формирования элемента "Start"
  /*if ( $item->text == JText::_( 'JLIB_HTML_START' ) )
  {
    return '<li class="disabled"><a><span class="icon-first"></span></a></li>';
  }*/

  // Проверка и формирования элемента "Prev"
  if ( $item->text == JText::_( 'JPREV' ) )
  {
    return '';
  }

  // Проверка и формирования элемента "Next"
  if ( $item->text == JText::_( 'JNEXT' ) )
  {
    return '';
  }

  // Проверка и формирования послденего элемента
  /*if ( $item->text == JText::_( 'JLIB_HTML_END' ) )
  {
    return '<li class="disabled"><a><span class="icon-last"></span></a></li>';
  }*/

  // Проверка и формирование элемента при условии активной страницы
  if ( isset( $item->active ) && ( $item->active ) )
  {
    return '<li><span class="active">' . $item->text . '</span></li>';
  }

  // Не совпало ни одно из предыдущих условий - выводим обычный элемент
  return '<li><span class="disabled">' . $item->text . '</span></li>';
}

Но привести ее к необходимому виду у меня не выходит - а именно проблема в том что стрелки вперед и назад должны отображаться сразу при появлении пагинации и этого эффекта я не могу добиться т.к. в самом начале появляется кнопка только вперед если я разкомментирую эту часть кода: $html .= $list[ 'end' ][ 'data' ]; и зазкомментирую эту: $html .= $list[ 'previous' ][ 'data' ]; то все получается как нужно, но эффект исчезает на последней странице и остается только неактивная кнопка "В конец" - а хотелось бы что бы активные кнопки вперед и назад отображались постоянно.

Вопрос - знает ли кто плагин или может предложить решение для чтого что бы сделать пагинацию именно такого вида:



Что бы была кнопка вперед и назад всегда. Спасибо большое за любые подсказки.
*

Sgrey

  • Захожу иногда
  • 75
  • 4 / 1
Re: Стилизация пагинации Joomla 3
« Ответ #1 : 12.04.2020, 11:17:26 »
Возьмите пагинацию из стандартного шаблона Protostar.
*

SuschnosT

  • Захожу иногда
  • 119
  • 1 / 2
Re: Стилизация пагинации Joomla 3
« Ответ #2 : 12.04.2020, 14:31:10 »
Protostar
Благодарю, просто невероятная помощь.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Что хранится в таблице overrider Joomla 3?

Автор web1

Ответов: 2
Просмотров: 225
Последний ответ 04.04.2024, 22:10:48
от web1
reCAPTCHA V2 Google - Для Joomla 3

Автор Alex GOOD

Ответов: 35
Просмотров: 8352
Последний ответ 10.01.2024, 21:41:38
от Vastriet
Joomla 3.10.12 и MySQL 8

Автор designer71

Ответов: 0
Просмотров: 401
Последний ответ 19.10.2023, 11:25:18
от designer71
Почему Joomla не поддерживает формат webp?

Автор Sensession

Ответов: 74
Просмотров: 10678
Последний ответ 03.10.2023, 19:44:42
от fsv
erid в Joomla

Автор newalex

Ответов: 0
Просмотров: 328
Последний ответ 25.09.2023, 18:45:34
от newalex