Помогите разобраться почему &pageLinkScheme не работает
Здравствуйте, делал все по инструкции и не работает, помогите пожалуйста разобраться.
сниппет как в инструкции тоже добавлял.
хотелось такие урлы как в примере на сайте
вместо /?page=2 что бы были:
/man/page-2
/man/page-3
такой вызов корректно работает и все устраивает.
т.е. выводит товары и по клику на кнопку загрузить еще товары добавляет.
сниппет как в инструкции тоже добавлял.
хотелось такие урлы как в примере на сайте
вместо /?page=2 что бы были:
/man/page-2
/man/page-3
такой вызов корректно работает и все устраивает.
т.е. выводит товары и по клику на кнопку загрузить еще товары добавляет.
[[!mFilter2?
&class=`msProduct`
&element=`msProducts`
&parents=`[[*id]]`
&limit=`3`
&ajax=`1`
&setMeta=`1`
&paginator=`pdoPage`
&filters=`ms|vendor:vendors`
&aliases=`
ms|vendor==vendor`
&tplOuter=`tpl.mFilter2.outer_new`
&tpl=`tpl.msProducts.row_new`
&includeTVs=`download,app_bonus`
&where=`{"class_key":"msProduct"}`
&ajaxMode=`button`
&strictMode=`1`
&filterOptions=`{
"autoLoad":0,
"more": ".main-catalog__more-button",
"more_tpl": "<div class=\"tc dark-beige mb3\"><button style=\"background: 0;\" class=\"button main-catalog__more-button br3 ttu inline-flex items-center justify-center b tc nowrap no-underline pa3 bw1 b--solid f5 b--dark-beige dark-beige\">[[%pdopage_more]]</button>"
}`
&tplFilter.outer.vendor=`tpl.mFilter2.filter.outer_vendor`
&tplFilter.row.vendor=`tpl.mFilter2.filter.checkbox_vendor`
]]
если добавить &pageLinkScheme=`[[+pageVarKey]]-[[+page]]` в сниппет то кнопка загрузить еще не работает. а если поставить &ajaxMode=`default` то и постраничная навигация не работает. Погуглив я не нашел решения и решил написать сюда. пробовал разные варианты уже. Пишите вопросы если есть я отвечу. Спасибо Комментарии: 8
ну кто то же сталкивался с таким?
Специально для вас попробовал сделать тоже самое, но со скроллом.
Ставлю
Значит из коробки работать не должно.
Значит дело в плагине и его надо переделывать под ваши нужды.
Предположу, что ajax не может подгружать страницы, которых по факту нет.
А контент подгружается при непосредственном переходе по ссылке (срабатывает плагин).
К сожалению это все, чем могу помочь.
Ставлю
'pageLinkScheme' => '[[+pageVarKey]]-[[+page]]/',
не работает, убираю — работает.Значит из коробки работать не должно.
Значит дело в плагине и его надо переделывать под ваши нужды.
Предположу, что ajax не может подгружать страницы, которых по факту нет.
&pageLinkScheme=`/[[+pageVarKey]]-[[+page]]`
Просто проставляет ссылки на страницы (посчитали сколько всего, поделили на limit, проставили ссылки)А контент подгружается при непосредственном переходе по ссылке (срабатывает плагин).
К сожалению это все, чем могу помочь.
а то, что у меня просто пагинация не работает если ставлю &ajaxMode=`default` и &ajax=`0` норм?
или у вас так же?
или у вас так же?
Ну второй раз я воссоздавать сие уже не буду. С &ajaxMode=`scroll` работало, думаю и так тоже будет.
Пример надо полностью приводить, работа пагинации с ajax зависит от того, в какие div обернута конструкция.
Пример надо полностью приводить, работа пагинации с ajax зависит от того, в какие div обернута конструкция.
[[!mFilter2?
&class=`msProduct`
&element=`msProducts`
&parents=`[[*id]]`
&limit=`3`
&tplOuter=`tpl.mFilter2.outer_new`
&tpl=`tpl.msProducts.row_new`
&tplPageWrapper=`@INLINE <div class="pagination tc dark-beige mb3">[[+first]][[+prev]][[+pages]][[+next]][[+last]]</div>`
&tplPageFirstEmpty=`@INLINE <span></span>`
&tplPageLastEmpty=`@INLINE <span></span>`
&tplPagePrevEmpty=`@INLINE <span></span>`
&tplPageNextEmpty=`@INLINE <span></span>`
&tplPageFirst=`@INLINE <span></span>`
&tplPageActive=`@INLINE <span></span>`
&tplPage=`@INLINE <span></span>`
&tplPageLast=`@INLINE <span></span>`
&tplPagePrev=`@INLINE <a href="[[+href]]" class="br3 ttu inline-flex items-center justify-center b tc nowrap no-underline pa3 bw1 b--solid f5 b--dark-beige dark-beige">Previous page</a>`
&tplPageNext=`@INLINE <a href="[[+href]]" class="br3 ttu inline-flex items-center justify-center b tc nowrap no-underline pa3 bw1 b--solid f5 b--dark-beige dark-beige "> Next page </a>`
]]
добавляю &pageLinkScheme=`/[[+pageVarKey]]-[[+page]]`и пагинация не работает. убираю и работает.
ну и плагин на событие «OnPageNotFound» как в инструкции:
При переходе по этим ссылкам (кроме первой) MODX будет выдавать ошибку 404, потому что страниц с этими адресами не существует. Так что, нам нужно написать плагин для их обработки:
<?php
// Реагируем только на событие OnPageNotFound
if ($modx->event->name == 'OnPageNotFound') {
// Определяем ключ запроса из настроек
$req = $modx->getOption('request_param_alias');
// Ловим нужный ключ страницы
$pageVarKey = 'page';
// Если в запросе повторяется наш шаблон "pageVarKey-page", то работаем дальше
if (preg_match("#.*?({$pageVarKey}-(\d+))#", $_REQUEST[$req], $matches)) {
// Отрезаем ЧПУ строку и получаем точный адрес текущей страницы
$uri = str_replace($matches[1], '', $matches[0]);
// Ищем страницу по этому адресу
$id = 0;
// Сначала как есть, со слешем на конце
if (!$id = $modx->findResource($uri)) {
// Если не находим - то пробуем отрезать слэш и ищем повторно
$id = $modx->findResource(rtrim($uri, '/'));
}
// Если ресурс найден
if ($id) {
// Добавляем номер страницы в глобальные массивы, чтобы pdoPage их там увидел
$_GET[$pageVarKey] = $_REQUEST[$pageVarKey] = $matches[2];
// И загружаем эту страницу
$modx->sendForward($id);
}
// Если ресурс не был найден - ничего не делаем, возможно запрос поймает другой плагин
}
}
в общем mfilter2 не работает с этой настройкой…
работает корректно только так:
работает корректно только так:
[[!pdoPage?
&class=`msProduct`
&element=`msProducts`
&parents=`[[*id]]`
&limit=`3`
&tpl=`@INLINE <p>[[+idx]] <a href="/[[+uri]]">[[+pagetitle]]</a></p>`
&pageVarKey=`page`
&pageLinkScheme=`[[+pageVarKey]]-[[+page]]`
&tplPageWrapper=`@INLINE <div class="pagination tc dark-beige mb3">[[+first]][[+prev]][[+pages]][[+next]][[+last]]</div>`
&tplPageFirstEmpty=`@INLINE <span></span>`
&tplPageLastEmpty=`@INLINE <span></span>`
&tplPagePrevEmpty=`@INLINE <span></span>`
&tplPageNextEmpty=`@INLINE <span></span>`
&tplPageFirst=`@INLINE <span></span>`
&tplPageActive=`@INLINE <span></span>`
&tplPage=`@INLINE <span></span>`
&tplPageLast=`@INLINE <span></span>`
&tplPagePrev=`@INLINE <a href="[[+href]]" class="br3 ttu inline-flex items-center justify-center b tc nowrap no-underline pa3 bw1 b--solid f5 b--dark-beige dark-beige">Previous page</a>`
&tplPageNext=`@INLINE <a href="[[+href]]" class="br3 ttu inline-flex items-center justify-center b tc nowrap no-underline pa3 bw1 b--solid f5 b--dark-beige dark-beige "> Next page </a>`
]]
[[!+page.nav]]
А если сделать так:
[[!mFilter2?
&class=`msProduct`
&element=`msProducts`
&parents=`[[*id]]`
&limit=`3`
&tplOuter=`tpl.mFilter2.outer_new`
&tpl=`tpl.msProducts.row_new`
&pageVarKey=`page`
&filters=`ms|vendor:vendors`
&aliases=`
ms|vendor==vendor`
&includeTVs=`download,app_bonus`
&where=`{"class_key":"msProduct"}`
&strictMode=`1`
&filterOptions=`{
"autoLoad":0,
"more": ".main-catalog__more-button",
"more_tpl": "<div class=\"tc dark-beige mb3\"><button style=\"background: 0;\" class=\"button main-catalog__more-button br3 ttu inline-flex items-center justify-center b tc nowrap no-underline pa3 bw1 b--solid f5 b--dark-beige dark-beige\">[[%pdopage_more]]</button>"
}`
&tplFilter.outer.vendor=`tpl.mFilter2.filter.outer_vendor`
&tplFilter.row.vendor=`tpl.mFilter2.filter.checkbox_vendor`
&pageLinkScheme=`[[+pageVarKey]]-[[+page]]`
&tplPageWrapper=`@INLINE <div class="pagination tc dark-beige mb3">[[+first]][[+prev]][[+pages]][[+next]][[+last]]</div>`
&tplPageFirstEmpty=`@INLINE <span></span>`
&tplPageLastEmpty=`@INLINE <span></span>`
&tplPagePrevEmpty=`@INLINE <span></span>`
&tplPageNextEmpty=`@INLINE <span></span>`
&tplPageFirst=`@INLINE <span></span>`
&tplPageActive=`@INLINE <span></span>`
&tplPage=`@INLINE <span></span>`
&tplPageLast=`@INLINE <span></span>`
&tplPagePrev=`@INLINE <a href="[[+href]]" class="br3 ttu inline-flex items-center justify-center b tc nowrap no-underline pa3 bw1 b--solid f5 b--dark-beige dark-beige">Previous page</a>`
&tplPageNext=`@INLINE <a href="[[+href]]" class="br3 ttu inline-flex items-center justify-center b tc nowrap no-underline pa3 bw1 b--solid f5 b--dark-beige dark-beige "> Next page </a>`
]]
[[!+page.nav]]
тогда пагинация работает а фильтры нет
в общем вот конечный результат:
допустим я тут /test/?vendor=5 и пагинация предлагает переход сюда /test/page-2 и фильтр получается теряется.
и если результатов фильтра больше лимита на странице их никогда нельзя будет посмотреть… я не знаю как это решить пока. может кто поможет?
[[!mFilter2?
&class=`msProduct`
&element=`msProducts`
&parents=`[[*id]]`
&limit=`3`
&tplOuter=`tpl.mFilter2.outer_new`
&tpl=`tpl.msProducts.row_new`
&pageVarKey=`page`
&paginator=`pdoPage`
&setMeta=`1`
&filters=`ms|vendor:vendors`
&aliases=`
ms|vendor==vendor`
&includeTVs=`download,app_bonus`
&where=`{"class_key":"msProduct"}`
&strictMode=`1`
&pageLinkScheme=`[[+pageVarKey]]-[[+page]]`
&tplPageWrapper=`@INLINE <div class="pagination tc dark-beige mb3">[[+first]][[+prev]][[+pages]][[+next]][[+last]]</div>`
&tplPageFirstEmpty=`@INLINE <span></span>`
&tplPageLastEmpty=`@INLINE <span></span>`
&tplPagePrevEmpty=`@INLINE <span></span>`
&tplPageNextEmpty=`@INLINE <span></span>`
&tplPageFirst=`@INLINE <span></span>`
&tplPageActive=`@INLINE <span></span>`
&tplPage=`@INLINE <span></span>`
&tplPageLast=`@INLINE <span></span>`
&tplPagePrev=`@INLINE <a href="[[+href]]" class="br3 ttu inline-flex items-center justify-center b tc nowrap no-underline pa3 bw1 b--solid f5 b--dark-beige dark-beige">Previous page</a>`
&tplPageNext=`@INLINE <a href="[[+href]]" class="br3 ttu inline-flex items-center justify-center b tc nowrap no-underline pa3 bw1 b--solid f5 b--dark-beige dark-beige "> Next page </a>`
&tplFilter.outer.vendor=`tpl.mFilter2.filter.outer_vendor`
&tplFilter.row.vendor=`tpl.mFilter2.filter.checkbox_vendor`
]]
вот tpl.mFilter2.outer_new<div class="backgroundGambleLargeOpacity msearch2" id="mse2_mfilter">
<div class="pt4 center">
<h1 class="ttu ph3 f2 f1-l tc mb3"><strong><span class="mse2_total">[[+total:default=`0`]]</span> Top-Apps</strong> for you</h1>
<div class="tc dark-beige mb3">
<a href="#" class="br3 ttu inline-flex items-center justify-center b tc nowrap no-underline pa3 bw1 b--solid f5 washed-yellow js-filter-toggle bg-dark-beige b--dark-beige pv2 ">
Filter Apps <i class="material-icons">filter_list</i>
</a>
</div>
<form action="[[~[[*id]]]]" method="post" id="mse2_filters" class="js-filter-form center dn">
<div class="pa3 f2 tc ttu bb b--beige">
<div class="flex items-center mw6-ns center-ns">
<div class="flex-auto tc">
Filtered: <strong><span id="mse2_total">[[+total:default=`0`]]</span> Apps </strong> [[-on 10 pages]]
</div>
<div class="js-filter-close pointer mi-close dib"></div>
</div>
</div>
<div class="js-filter-section">
<div class="pa3 f3 bb b--beige">
<div class="js-filter-section-toggle pointer flex items-center mw6-ns center-ns">
<div class="flex-auto">
<strong>Software</strong>
</div>
<div class="js-filter-section-toggle pointer mi-keyboard-arrow-down dib f2"></div>
</div>
</div>
[[+filters]]
</div>
<div class="pa3 flex flex-row items-center mw6-ns center-ns"></div>
</form>
</div>
<div id="pdopage" class="mwmedns mw6 pa2 center h-100 pa3-l ">
<div class="nl2 nr2">
<div class="sf_introtext">[[!+sf.introtext]]</div>
<h2 class="sf_h1">[[!+sf.h1:default=`[[*pagetitle]]`]]</h2>
<div id="mse2_results" class="js-filter-results flex flex-column flex-row-l flex-wrap-l justify-center items-center items-stretch-l w-100 justify-start-l flex-wrap-ns">
[[+results]]
</div>
</div>
<div class="">
[[!+page.nav]]
</div>
</div>
</div>
с учетом &pageLinkScheme=`[[+pageVarKey]]-[[+page]]` получается лажа с фильтрами и пагинациейдопустим я тут /test/?vendor=5 и пагинация предлагает переход сюда /test/page-2 и фильтр получается теряется.
и если результатов фильтра больше лимита на странице их никогда нельзя будет посмотреть… я не знаю как это решить пока. может кто поможет?
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.