Pdopage через снипет при ajaxMode
        Допустим, есть снипет в шаблоне, вызов такой:
Снипет lenta.php
Проблема в том, что данный снипет прекрасно работает при отключенной ajaxMode. Также работает и при включении ajaxMode, но дополнительный блок вставляется только на первой странице, а на подгруженных через ajax эти блоки не вставляются.
Помогите, пожалуйста, решить эту проблему.
    
    
                                                                                
            <div id="pdopage">
    <div class="row grid">
        {$_modx->runSnippet('@FILE snippets/lenta.php', [
            'pagetitle' => $_modx->resource.pagetitle, 
            'id' => $_modx->resource.id, '
            publishedon' => $_modx->resource.publishedon, 
            'description' => $_modx->resource.description, 
            'parent' => $_modx->resource.parent | resource: 'id' 
            ])}
    </div>
    {'page.nav' | placeholder}
</div>Снипет lenta.php
$params = array(
  'ajaxMode'          => 'scroll',
  'ajaxElemRows' => '#pdopage .row',
  'ajaxHistory' => 1,
  'parents'           => '0',
  'sortby'            => 'publishedon',
  'includeTVs'        => '',
  'where'             => '',
  'resources'         => '',
  'templates'         => '2',
  'tpl'               => '@FILE chunks/giftpl.chunk.tpl',
  'tplWrapper'        => '@INLINE {$output}',
  'pageLimit'         => '10',
  'limit'             => '32',
...
);
//Вставляем после второго блока блок РСЯ
function insert_div($html)
{
  // 1. Найти позицию
  $pos = strpos($html, 'div class="grid-item"', strpos($html, 'div class="grid-item"', strpos($html, 'div class="grid-item"') + 1) + 1);
  // 2. Скопировать часть до позиции
  $result = substr($html, 0, $pos - 1);
  // 3. Добавить блок
  $result .= '
  <div class="grid-item" >
//Тут что-то
  </a>
</div>
  ';
  // 4. Добавить оставшуюся часть
  $result .= substr($html, $pos - 1);
  return $result;
}
$output = insert_div ($modx->runSnippet('pdoPage', $params) );
return   $output;В двух словах по снипету: код полученный от pdoPage передаётся в функцию, которая после второго блока вставляет ещё один блок и результат отправляет обратно в шаблон.Проблема в том, что данный снипет прекрасно работает при отключенной ajaxMode. Также работает и при включении ajaxMode, но дополнительный блок вставляется только на первой странице, а на подгруженных через ajax эти блоки не вставляются.
Помогите, пожалуйста, решить эту проблему.
Комментарии: 6
                А почему просто в чанке не вставить {if $idx == 1}ДОП БЛОК{/if}
Ну если феном не работает то можно даже так схитрить
Вызвать
[[$chunk_rsya_[[+idx]]
И создать чанк chunk_rsya_1 и в нем вставить нужный вам код
                    Ну если феном не работает то можно даже так схитрить
Вызвать
[[$chunk_rsya_[[+idx]]
И создать чанк chunk_rsya_1 и в нем вставить нужный вам код
А почему просто в чанке не вставить {if $idx == 1}ДОП БЛОК{/if}Не знал об этом способе, спасибо. Вставил в чанк{if $idx == 4}… Он появляется на четвертой позиции. Но эффект тот же. Он только на первой странице.
                Удалено            
                    
                Выведите {$idx} посмотрите что выведет. Возможно пдопейдж некешированным вызывается.            
                    
                Большое спасибо Иван! 
Поставил {if $idx == 4 or $idx % 32 == 0}
Всё заработало.
                    Поставил {if $idx == 4 or $idx % 32 == 0}
Всё заработало.
                Не уверен, но там может быть доступна переменная {$total}, и тогда лучше сделать % $total == 0            
                    
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.