Как сделать оглавление страниц сгенерированных при помощи pdoPage из полей MIGX?

Привет всем!
Есть ресурс. У ресурса есть дополнительное поле «chapter» с типом MIGX в строках которого храню:
  • заголовок (field: set);
  • картинку (field: image);
  • длинный текст (field: description).
Моя задача: вывести значения строк полей MIGX постранично и сделать навигацию по страницам в виде списка (аля оглавление).

Делаю вывод полей MIGX при помощи pdoPage таким образом, чтобы на одной странице были значения одной строки поля MIGX (limit=1).
Вот вывод:
{$_modx->runSnippet("pdoPage",[
    'element'=>'getImageList',
    'limit'=>'1',
    'tvname'=>'chapter',
    'tpl'=>'tpl_chapter',
])}
{$_modx->getPlaceholder('page.nav')}
Подключаю пагинацию (pageNav) и получаю этакую навигацию по строкам поля MIGX.

Но мне нужно сделать список из ссылок примерно вот такого вида:

1. Заголовок 1-й строки поля MIGX
2. Заголовок 2-й строки поля MIGX
3. Заголовок 3-й строки поля MIGX

и т. д, где соответствующие заголовки подставлялись бы из соответствующих строк поля MIGX.

Я думал решит эту задачу модернизацией стандартных чанков pdoPage (&tplPageActive, &tplPageWrapper и пр.) добавив в них значение одной из колонок поля MIGX (например «set»), но не понимаю как передать значение нужного поля в чанк. Если передаю при помощи getImageList, то передаются значения всех строк и получается примерно такая фигня.

1.
2. Заголовок 1-й строки поля MIGX, Заголовок 2-й строки поля MIGX, Заголовок 3-й строки поля MIGX
3.

Вот пример моего вызова для чанка tplPage:
@INLINE <li class="page-item"><a class="page-link" href="[[+href]]">[[+pageNo]][[getImageList? &tvname=`chapter` &tpl=`@CODE: [[+set]]`]]</a></li>

Помогите с решением этой задачи!
Dmytro Bochkov
15 мая 2019, 15:39
modx.pro
659
0

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

Aleksandr Huz
16 мая 2019, 11:14
0
1. Вы можете получить значение tv chapter в виде массива и обработать его в foreach.
Пример:
{set $chapter = $_modx->resource.chapter | fromJSON}
<ul>
{foreach $chapter as $ch}
    <li>
         <a href="#">{$ch.link}</a>    
    </li>    
{/foreach}
</ul>
    Dmytro Bochkov
    16 мая 2019, 13:09
    0
    Александр, спасибо за ответ!
    Получилось реализовать то, что хотел вот так:

    {set $rows = $_modx->resource.chapter | fromJSON}
        <ul>
            {foreach $rows as $idxArr => $row}
                {set $idxMIGX = $row['MIGX_id']}
                <li>
                    <a href="{$_modx->resource.id | url}?page={$row['MIGX_id']}">{$row.set}</a>    
                </li>    
            {/foreach}
    </ul>
    Правда этот вызов я делаю отдельно, не в чанках pdoPage, как изначально думал.
      Aleksandr Huz
      16 мая 2019, 13:22
      0
      Зачем эта строчка, если вы ее потом не используете?
      {set $idxMIGX = $row['MIGX_id']}
        Dmytro Bochkov
        16 мая 2019, 13:28
        0
        И правда, лишняя) У себя убрал, спасибо!
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    4