Показывать 3 числа только до и после точного числа в постинкременте - PullRequest
0 голосов
/ 16 декабря 2018

Я не уверен, как задать этот вопрос.Если бы я точно знал, что искать, мне бы не пришлось публиковать здесь сообщения.Я объясню ситуацию, я надеюсь, что вы, ребята, можете сказать мне, что именно искать (или какой тип функции).Это код, над которым я работаю -

$walkaround_pages = 15;
$walkaround_page = $_GET['walkaround_page'];
for ($wp = 1; $wp <= $walkaround_pages; $wp++) {
    echo '<a class="pagination_links'.(($wp==$walkaround_page)?' current_page':"").'" href="/panel/?walkaround_page='.$wp.'">'.$wp.'</a>';
}

Это создает ссылки на нумерацию страниц.Если общее количество страниц ($walkaround_pages) превышает 10, оно не помещается на мобильных устройствах.Поэтому я хочу сделать что-то вроде того, если текущая страница ($walkaround_page), скажем, 7, будет показывать только 3 цифры до (4,5,6) и 3 цифры после (8,9,10) вместо отображения всехномера от 1 до 15. Кто-нибудь может сказать, пожалуйста, что именно я ищу?

Ответы [ 3 ]

0 голосов
/ 16 декабря 2018

Вот пример CSS, использующий правило @media.

Самое замечательное в том, что вы можете сделать его очень плавным.Например, когда пользователь поворачивает свое устройство, будут отображаться дополнительные ссылки.

То же самое, если пользователь изменяет размер окна браузера.

.wide a, .narrow a {
  padding:0px 0.5em;
}
.wide a:hover, .narrow a:hover {
  color:#fff;
  background:#345;
}

/* this would be in your @media rule */
/* @media screen and (max-width: 480px) { */ 
.narrow a:nth-of-type(n+6) {
  display:none;
}
/* } */
<p>For demonstration only</p>
<div class="wide">
<a href="#">1</a> <a href="#">2</a> <a href="#">3</a>
<a href="#">4</a> <a href="#">5</a> <a href="#">6</a>
<a href="#">7</a> <a href="#">8</a> <a href="#">9</a>
<a href="#">10</a>
</div>

<p>Below is all you would have</p>
<div class="narrow">
<a href="#">1</a> <a href="#">2</a> <a href="#">3</a>
<a href="#">4</a> <a href="#">5</a> <a href="#">6</a>
<a href="#">7</a> <a href="#">8</a> <a href="#">9</a>
<a href="#">10</a>
</div>
0 голосов
/ 16 декабря 2018

Вы можете вычислить начальную и конечную части цикла относительно страницы, на которой вы находитесь в данный момент, и просто выполнить цикл над ней ...

$walkaround_pages = 15;
$max_gap = 3;      // How many pages before and after you want
$walkaround_page = $_GET['walkaround_page'];
$start = max(1,$walkaround_page-$max_gap);
$end = min($walkaround_pages,$walkaround_page+$max_gap);
for ($wp = $start; $wp <= $end; $wp++) {

При запуске это случай вычитания числаэлементы, но убедитесь, что 1 - наименьшее значение, которое он может получить, аналогично завершению добавьте количество страниц, но ограничиваясь общим числом страниц.

0 голосов
/ 16 декабря 2018

Просто добавьте условие перед эхом

if( abs($wp - $walkaround_page) <= 3){
        echo '<a class="pagination_links'.(($wp==$walkaround_page)?' current_page':"").'" href="/panel/?walkaround_page='.$wp.'">'.$wp.'</a>';
}

функция abs вернет абсолютное значение, поэтому оно возвращает положительное число, если оно является одним из 3 меньших или больших чисел, чемтекущая страница

см. демоверсия

...