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
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.