Нумерация страниц работает, но не совсем правильно. Повторение первого поста на второй странице

Моя нумерация страниц не совсем работает. Есть только 4 события и нумерация страниц установлена ​​на 3 на страницу. Когда я загружаю вторую страницу, она загружает первое событие самостоятельно вместо последнего сообщения.

Мой код ниже. Я использую менеджер контента kirby, но я предполагаю, что этот материал довольно одинаков для всех веб-сайтов. Я почти уверен, что он не работает из-за цикла внутри цикла событий, но я не знаю, как это исправить.

<div id="main-container">
<div class="content">
<div class="container">
<div class="row">
<div class="col-md-12 content-block">
<ul class="events-list">
<?php $events = $page->children()->paginate(3);
$i = -1;
foreach($events as $event) {
$i++; ?>
<li class="event-list-item">
<?php $calendar = page('events')->children()->nth($i)->calendar()->yaml();
foreach($calendar as $calendarEntry) { ?>
<span class="event-date">
<span class="date">
<?php
$eventday=strtotime($calendarEntry['_begin_date']);
echo date('j',$eventday);
?>
</span>
<span class="month">
<?php
$eventmonth=strtotime($calendarEntry['_begin_date']);
echo date('M',$eventmonth);
?>
</span>
<span class="year">
<?php
$eventmonth=strtotime($calendarEntry['_begin_date']);
echo date('Y',$eventmonth);
?>
</span>
</span>
<div class="event-list-cont">
<span class="meta-data">Starts:
<?php $eventday=strtotime($calendarEntry['_begin_date']);
echo date('l',$eventday);  ?>,
<?php $eventstarttime=strtotime($calendarEntry['_begin_time']);
echo date('g:i A',$eventstarttime); $eventday=strtotime($calendarEntry['_end_date']);
if ($eventday){ ?>
| Finishes: <?php echo date('l',$eventday); ?>,
<?php }  ?>
<?php $eventendtime=strtotime($calendarEntry['_end_time']);
if($eventendtime) {
echo date('g:i A',$eventendtime);
}  ?></span>
<h4 class="post-title"><a href="<?php echo page('events')->children()->nth($i)->url(); ?>"><?php echo $calendarEntry['eventname'] ?></a></h4>
<p>
<?php echo page('events')->children()->nth($i)->eventwriteup()->excerpt(250); ?> <a href="<?php echo page('events')->children()->nth($i)->url(); ?>">read&nbsp;more&nbsp;→</a>
</p>
</div>
<?php } ?>
</li>
<?php } ?>
</ul>
<!-- Page Pagination -->
<?php
$list = $page->children()->paginate(3);
$pagination = $list->pagination();
?>
<nav>
<ul class="pagination pagination-lg">
<?php if($pagination->hasPrevPage()): ?>
<li>
<a href="<?php echo $pagination->prevPageURL() ?>">&larr;</a></li>
<?php else: ?>
<li><span>&larr;</span></li>
<?php endif ?>
<?php foreach($pagination->range(10) as $r): ?>
<li><a<?php if($pagination->page() == $r) echo ' class="active"' ?> href="<?php echo $pagination->pageURL($r) ?>"><?php echo $r ?></a></li>
<?php endforeach ?>
<?php if($pagination->hasNextPage()): ?>
<li class="last"><a href="<?php echo $pagination->nextPageURL() ?>">&rarr;</a></li>
<?php else: ?>
<li class="last"><span>&rarr;</span></li>
<?php endif ?>
</ul>
</nav> ....

0

Решение

Стена,
Я хотел бы помочь здесь, но мне нужно больше контекста в вашем коде. Кажется, в ваших петлях есть какое-то повторение. Не удивительно, почему вы используете переменную $ i внутри цикла. Судя по всему, вы можете сделать что-то гораздо более простое:

<div id="main-container">
<div class="content">
<div class="container">
<div class="row">
<div class="col-md-12 content-block">
<ul class="events-list">
<?php $events = $page->children()->paginate(3);
foreach($events as $event): ?>
<li class="event-list-item">
<?php $calendar = $event->calendar()->yaml();
foreach($calendar as $calendarEntry) { ?>
<span class="event-date">
<span class="date">
<?php
$eventday=strtotime($calendarEntry['_begin_date']);
echo date('j',$eventday);
?>
</span>
<span class="month">
<?php
$eventmonth=strtotime($calendarEntry['_begin_date']);
echo date('M',$eventmonth);
?>
</span>
<span class="year">
<?php
$eventmonth=strtotime($calendarEntry['_begin_date']);
echo date('Y',$eventmonth);
?>
</span>
</span>
<div class="event-list-cont">
<span class="meta-data">Starts:
<?php $eventday=strtotime($calendarEntry['_begin_date']);
echo date('l',$eventday);  ?>,
<?php $eventstarttime=strtotime($calendarEntry['_begin_time']);
echo date('g:i A',$eventstarttime); $eventday=strtotime($calendarEntry['_end_date']);
if ($eventday){ ?>
| Finishes: <?php echo date('l',$eventday); ?>,
<?php }  ?>
<?php $eventendtime=strtotime($calendarEntry['_end_time']);
if($eventendtime) {
echo date('g:i A',$eventendtime);
}  ?></span>
<h4 class="post-title"><a href="<?php echo $event->url(); ?>"><?php echo $calendarEntry['eventname'] ?></a></h4>
<p>
<?php echo $event->eventwriteup()->excerpt(250); ?> <a href="<?php echo $event->url(); ?>">read&nbsp;more&nbsp;→</a>
</p>
</div>
<?php } ?>
</li>
<?php } ?>
</ul>
<!-- Page Pagination -->
<?php
$list = $page->children()->paginate(3);
$pagination = $list->pagination();
?>
<nav>
<ul class="pagination pagination-lg">
<?php if($pagination->hasPrevPage()): ?>
<li>
<a href="<?php echo $pagination->prevPageURL() ?>">&larr;</a></li>
<?php else: ?>
<li><span>&larr;</span></li>
<?php endif ?>
<?php foreach($pagination->range(10) as $r): ?>
<li><a<?php if($pagination->page() == $r) echo ' class="active"' ?> href="<?php echo $pagination->pageURL($r) ?>"><?php echo $r ?></a></li>
<?php endforeach ?>
<?php if($pagination->hasNextPage()): ?>
<li class="last"><a href="<?php echo $pagination->nextPageURL() ?>">&rarr;</a></li>
<?php else: ?>
<li class="last"><span>&rarr;</span></li>
<?php endif ?>
</ul>
</nav> ....

Для получения дополнительной информации о нумерации страниц, проверьте этот пост: пагинация

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]