Помогите разобраться почему &pageLinkScheme не работает

Здравствуйте, делал все по инструкции и не работает, помогите пожалуйста разобраться.
сниппет как в инструкции тоже добавлял.
хотелось такие урлы как в примере на сайте
вместо /?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` то и постраничная навигация не работает. Погуглив я не нашел решения и решил написать сюда. пробовал разные варианты уже. Пишите вопросы если есть я отвечу. Спасибо
Александр Иващенко
27 декабря 2018, 20:01
modx.pro
1 247
0

Комментарии: 8

Александр Иващенко
28 декабря 2018, 16:22
0
ну кто то же сталкивался с таким?
    Алексей
    28 декабря 2018, 19:53
    0
    Специально для вас попробовал сделать тоже самое, но со скроллом.
    Ставлю
    'pageLinkScheme' => '[[+pageVarKey]]-[[+page]]/',
    не работает, убираю — работает.
    Значит из коробки работать не должно.
    Значит дело в плагине и его надо переделывать под ваши нужды.
    Предположу, что ajax не может подгружать страницы, которых по факту нет.
    &pageLinkScheme=`/[[+pageVarKey]]-[[+page]]`
    Просто проставляет ссылки на страницы (посчитали сколько всего, поделили на limit, проставили ссылки)
    А контент подгружается при непосредственном переходе по ссылке (срабатывает плагин).
    К сожалению это все, чем могу помочь.
      Александр Иващенко
      29 декабря 2018, 00:48
      0
      а то, что у меня просто пагинация не работает если ставлю &ajaxMode=`default` и &ajax=`0` норм?
      или у вас так же?
        Алексей
        29 декабря 2018, 09:59
        0
        Ну второй раз я воссоздавать сие уже не буду. С &ajaxMode=`scroll` работало, думаю и так тоже будет.
        Пример надо полностью приводить, работа пагинации с ajax зависит от того, в какие div обернута конструкция.
          Александр Иващенко
          05 января 2019, 22:02
          0
          [[!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);
                  }
                  // Если ресурс не был найден - ничего не делаем, возможно запрос поймает другой плагин
              }
          }
            Александр Иващенко
            05 января 2019, 22:21
            0
            в общем 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]]
              Александр Иващенко
              05 января 2019, 22:32
              0
              А если сделать так:

              [[!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]]
              тогда пагинация работает а фильтры нет
        Александр Иващенко
        06 января 2019, 03:30
        0
        в общем вот конечный результат:
        [[!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&nbsp;<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 и фильтр получается теряется.
        и если результатов фильтра больше лимита на странице их никогда нельзя будет посмотреть… я не знаю как это решить пока. может кто поможет?
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          8