pdoSitemap - как автоматически добавить контексты?

Вопрос по супер модулю.
Если много языков — соответственно контекстов, то как сделать чтоб они все добавлялись без ручного ввода?

[[!pdoSitemap?
&tpl=`@INLINE [[+url]][[+date]]`
&where=`{«hidemenu»:«0»}`
&context=`web,it,en,pl,md`
]]
Alex
12 декабря 2022, 00:06
modx.pro
263
0

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

Артур Шевченко
12 декабря 2022, 00:38
+1
Напиши сниппет, который вернёт список контекстов.
    vectorserver
    12 декабря 2022, 07:52
    1
    +1
    Как писал выше Артур!
    Создай сниппет к примеру contextKeys:
    <?php
    /* @var modX $modx */
    /* @var modContext $ctxs */
    $ctxs_obj = $modx->getCollection('modContext', array('key:!=' => "mgr"));
    $ctxs = [];
    if ($ctxs_obj) {
        foreach ($ctxs_obj as $ctx) {
            $ctxs[] = $ctx->key;
        }
    }
    
    return implode(",", $ctxs);
    Далее впихивай его в pdoSitemap
    [[!pdoSitemap?
        &tpl=`@INLINE [[+url]][[+date]]`
        &where=`{"hidemenu":0}`
        &context=`[[contextKeys]]`
    ]]
      Alex
      13 декабря 2022, 21:33
      0
      Ooo — Спасибо от души )))
      Vladimir
      12 декабря 2022, 11:59
      +1
      Можно это запустить всё через pdoPage и просто указать параметр context, и указать чтобы контекст брался через обращение к текущей страницы, которая сделала запрос, так же через pdoPage можно сделать так чтобы если больше 1к записей, будет 2я страница но с уже другими записями.
      <?php
      $output = $modx->runSnippet('pdoPage',array(
          'element' => 'pdoSitemap',
          'parents' => 0,
          'context' => $modx->context->key,
          'depth' => 10,
          'limit' => 100,
          'showHidden' => 0
      ));
      
      return $output;
      Ниже сам код, выше пример который работает у меня.
      'context' => $modx->context->key,
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        4