Сбой работы пагинации при вызове getTickets
Здравствуйте! В ходе работы с модулем Tickets возникла необходимость в подсчете количества выводимых по запросу тикетов. Контент страницы успешно формируется следующим вызовом pdoPage:
Для решения задачи придумал следующий костыль:
Перед выводом контента, я делаю дублирующий вывод всех тикетов раздела.
Прилагаю листинг:
Прилагаю результат работы [[!+page.nav]]
P.S.: Закрадывается подозрение, что результат работы page.nav как-то пересекается с дублирующим вызовом pdoPage при параметре limit=`all`. Как этого можно избежать?
[[!pdoPage?
&tpl=`tmpl.Tickets.resume.row`
&element=`getTickets`
&includeContent=`1`
&parents=`42`
&includeTVs=`employeesName, resumeCategory, education, specialty,
age, moreAbout, desiredVacancy, currency, multiplicityList, summList,
result, email, telephone1, telephone2, note`
&tplPageFirst=`@INLINE <li class="first"><a href="[[+href]]"></a></li>`
&tplPageFirstEmpty=`@INLINE <li class="first inactive"><a href="javascript:void(0);"></a></li>`
&tplPageLast=`@INLINE <li class="last"><a href="[[+href]]"></a></li>`
&tplPageLastEmpty=`@INLINE <li class="last inactive"><a href="javascript:void(0);"></a></li>`
&tplPagePrev=`@INLINE <li class="control"></li>`
&tplPageNext=`@INLINE <li class="control" style="display: none"><a href="[[+href]]" id="pageNext"></li>`
&tplPagePrevEmpty=`@INLINE <li class="control"></li>`
&tplPageNextEmpty=`@INLINE <li class="control"></li>`
&limit=`5`
&sortby=`{"publishedon":"DESC"}`
]]
В документации к Tickets я не нашел параметра, который отвечал бы за вывод общего количества тикетов в разделе (в дальнейшем нужно будет считать количество тикетов, выведенных при различных значениях tv-параметра).Для решения задачи придумал следующий костыль:
Перед выводом контента, я делаю дублирующий вывод всех тикетов раздела.
[[!pdoPage?
&tpl=`tmpl.Tickets.positions.counter`
&element=`getTickets`
&parents=`42`
&limit=`all`
]]
В шаблоне tmpl.Tickets.positions.counter содержится лишь вызов js-функции, увеличивающeй счетчик.Прилагаю листинг:
var counter = 0;
function incCounter()
{
counter = counter + 1;
}
В результате работы скрипт успешно считает количество вызовов пустого шаблона и выводит счетчик в нужный мне блок-див. Но возникает проблема: работавшая ранее пагинация, которая создавалась после формирования контента страницы вызовом pdoPage — не работает. Вернее, происходит следующее: формируется список страниц, содержащих &limit тикетов на каждой. Для каждого элемента навигации присваиваются валидные ссылки. Но при попытке перехода по ним нужная страница с тикетами не прогружается, а возвращает первую.Прилагаю результат работы [[!+page.nav]]
<!-- begin page navigation -->
<!--<div class="page_navigation">
<ul>
<div class="pagination">
<ul class="pagination">
<li class="first inactive">
<a href="javascript:void(0);"></a>
</li><li class="control"></li>
<li class="active">
<a href="/rezyume/">1</a>
</li>
<li>
<a href="/rezyume/?page=2">2</a>
</li>
<li>
<a href="/rezyume/?page=3">3</a>
</li>
<li>
<a href="/rezyume/?page=4">4</a>
</li>
<li>
<a href="/rezyume/?page=5">5</a>
</li>
<li class="control" style="display: none">
<a href="/rezyume/?page=2" id="pageNext">
</li>
<li class="last"><a href="/rezyume/?page=5"></a></li>
</ul>
</div>
</ul>
</div>-->
<!-- page navigation eof -->
Возникает вопрос: с чем это может быть связано, и есть ли более «изящный» способ подсчета выводимых тикетов? Был бы рад Вашим объяснениям и/или советам.P.S.: Закрадывается подозрение, что результат работы page.nav как-то пересекается с дублирующим вызовом pdoPage при параметре limit=`all`. Как этого можно избежать?
Комментарии: 4
Для pdoPage есть плейсхолдер [[+page.total]]
Большое спасибо! Плейсхолдер [[+page.total]] помог. Но проблема с подсчетом результатов по другим выборкам остаётся — ведь там придется применять мой неработающий костыль. Хотя, если есть возможность пробежаться по всем результатам выборки, в качестве увеличителя счетчика используя значение tv-параметра — это было бы решением. Но я пока не представляю, как можно при помощи js проанализировать результаты выборки, разбитой на n страниц =)
Большое спасибо, Василий! Ваша статья помогла решить поставленную задачу.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.