On March 26, 2019 we launched new MODX Forums. Please join us at the new MODX Community Forums.
Subscribe: RSS
  • Дброго времени суток.
    Столкнулся с задачей - есть список публикаций, отобажаемый через дитто.
    Вывод не имеет значения, для примера возьмем самый простой чанк:
    <div>[+pagetitle+]</div>


    Возник вопрос - как сделать, чтобы перед [+pagetitle+] отображался порядковый номер документа в этом списке?
    Чтобы вывод был такой:

    1) Публикация 1
    2) Публикация 2

    Искал специальный плейсхолдер в доках - фиг нашел sad
    • Если сортировка по положению в меню то [+menuindex+]
      • Quote from: antey at Apr 11, 2008, 08:35 AM

        Если сортировка по положению в меню то [+menuindex+]
        Да, [+menuindex+] можно. Но есть три трабла:
        1. менюиндексы могут повторяться. Т.е. никто не мешает мне задать двух элементам однаковый менюиндекс 1 или там 5
        2. менюиндекс начинается с 0 (ну это в принципе черех phx можно поправить)
        3. и самое главное - новости-то обычно сортируются по дате публикации.

        Блин, неужели у дитто нет стандартного решения, казалось бы что не у меня одного такое желание возникает )
        А вручную ковырять код сниппета и вставлять собственную переменную нехоцца ..

        • Да, как-то странно получается, версия уже 2.1, а такого простого функционала не реализовано.
          Да и с документацией по новому ditto 2.1 как-то слабо.

          Вот как я решил подобную проблему.

          Весь упор на [+ditto_iteration+], который появился в новой версии.
          Собственно в шаблоне вывода списка осталось только написать
          <h2>[+ditto_iteration:math=`?+ОФФСЕТ_ДЛЯ_ТЕКУЩЕЙ_СТРАНИЦЫ`+]. <a href="[~[+id+]~]">[+title+]</a></h2>
          


          Вот с поиском этого ОФФСЕТ_ДЛЯ_ТЕКУЩЕЙ_СТРАНИЦЫ - появились проблемы.
          Как выходит, в шаблоне вывода списка, не доступны плэйсхолдеры постраничной разбивки.
          Казалось, берем (текущую_страницу * количество_на_странице) + 1 и у нас есть оффсет. Но в шаблоне списка к этим данным я не достучался.

          Пришлось создать отдельный extender itemnumber.extender.inc.php
          В котором я создаю новый placeholder myoffset
          <?php
          $placeholders['myoffset'] = array('*','getoffset');
          if (!function_exists("getoffset"))
          {
          	function getoffset()
                  {
                      global $dittoID;
                      $curpage = (isset($_GET[$dittoID.'start'])) ? intval($_GET[$dittoID.'start']) : 0;
                      return $curpage+1;
          	}
          }
          ?>
          


          А после плюсую его к итерации

          <h2>[+ditto_iteration:math=`?+[+myoffset+]`+]. <a href="[~[+id+]~]">[+title+]</a></h2>
          


          Как-то очень сложно, для такой простой вещи, но может я чего-то не знаю.
          Думаю, более опытные разработчики должны меня поправить.

          Минусы:

          • Определени текущей страницы в extender

          Итог: Вопрос остается открытым!