fenom + pdopage

Возникли некоторый глюки при работе связки pdoPage + fenom:
1. непонятно как вывести плэйсхолдер [[!+page.nav]] через fenom
2. не работает ajax пагинация pdotools
3. совсем никак не работает mFilter2
под катом немного подробнее и мои некоторые соображения по такому странному поведению.


1. непонятно как вывести плэйсхолдер [[!+page.nav]] через fenom
пытаюсь сделать так:
{$_modx->getPlaceholder('page.nav')}
но ничего не выходит
2. при ajax пагинации на запрос с заголовком
$_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'
сервер отдает часть странички, затем только
{"output":" ....
с результатами выборки для pdoTools — видимо это свзязано с тем, что fenom включен для шаблонов modx, и шаблон на лету, до вызова сниппета pdoPage генерит страничку и сразу отдает клиенту, а когда натыкается на pdoPage — выводит JSON ответ на AJAX запрос и завершает работу по коду:
session_write_close();
exit($modx->toJSON($data));
3. При вызове mFilter2 он просто выдает:
string(14) "XMLHttpRequest"


Дак вот это только у меня такие глюки? Или пока мало кто опробовал все прелести скорости и гибкости работы fenom'а как шаблонизатора для modx?
Алексей
30 сентября 2015, 09:58
modx.pro
2
6 848
0

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

    Алексей
    30 сентября 2015, 15:27
    0
    я так и думал) довольно таки простое решение — вынести pdoPage в начало странички, чтобы во время прервать её передачу и, тем самым, не подгадить AJAX ответ.
    Спасибо!
    а как быть с
    [[!+page.nav]] 
    {$_modx->getPlaceholder('page.nav')}
    для pdoPage
    и для mFilter2:
    {$_modx->getPlaceholder("my.results")}
    [[!+my.results]]
    ??
    синтаксис fenom никак не хочет работать, даже с подтягиванием данных из плэйсхолдеров modx.
      Василий Наумкин
      30 сентября 2015, 17:09
      +2
      Полагаю, что синтаксис здесь не при чем, а просто нечего получать.

      Я не могу ответить на все вопросы на свете, извини.
        DimenSi
        07 ноября 2016, 20:32
        0
        Василий скинул же ответ. Вам нужно вызов сниппета сохранить в переменную, но вызывать это в самом начале чанка/шаблона, а потом уже использовать getPlaceholder(), а потом вставлять в нужное место сам сниппет.
          Dmitry
          07 ноября 2016, 21:08
          0
          Думаете, за полтора года он не разобрался?
            DimenSi
            07 ноября 2016, 21:57
            +1
            А че бы нет?)
      Sergey Leleko
      15 октября 2017, 20:35
      1
      0
      Ответ на первый вопрос:
      {'page.nav' | placeholder}
        Никита Серов
        09 октября 2018, 11:02
        0
        Вот я пытаюсь сделать так:
        {set $block1 = $_modx->runSnippet('pdoPage@msFilterParams', [
        	'element' => 'msProducts'
        	'sortby'  => 'menuindex'
        	'limit'   => '9'
        	'ajaxMode'=> 'scroll'
        	'tpl'     => 'tpl.shop.Products.row'
        	'tplPageWrapper' => '@INLINE <ul id="mse2_pagination" class="pagination list-unstyled">[[+first]][[+prev]][[+pages]][[+next]][[+last]]</ul>'
        	'tplPageActive' => '@INLINE <li class="active"><span class="active-text">[[+pageNo]]</span></li>'
        	])}
        {set $block2 = $_modx->getPlaceholder('page.nav')}
        А потом собственно вывожу данные переменные. Вопрос: Почему не работает ajax подгрузка?
        SYAN
        12 апреля 2021, 23:33
        0
        предлагаю рабочее решение pdoPage под fenom с загрузкой ajax

        <div id="pdopage">
            <div class='row'>
        	{'!pdoPage' | snippet : [
        		'parents' => '0',
        		'limit' => '10',
        		...			
        		'toPlaceholder' => 'result',
        		'ajaxMode' => 'button',
                        'ajaxElemWrapper' => '#pdopage'
                        'ajaxElemRows' => '#pdopage .row'
                        'ajaxElemPagination' => '#pdopage .pagination'
                        'ajaxTplMore' => '@INLINE <div class="text-center"><button class="btn btn-primary btn-more">Загрузить еще</button></div>'
        	]}
                {'result' | placeholder}			
            </div>
             {'page.nav' | placeholder}
        </div>
          SYAN
          13 апреля 2021, 11:08
          0
          ну и не забываем включить jquery на сайте
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          10