Вывод списка фильтров mFilter2

Здравствуйте!

Возникли вопросы с построением фильтров mFilter2 в нужном порядке/виде. Знаний не хватает, мягко говоря, а поддержку лишний раз беспокоить не хочется простыми вопросами, так как дополнение то работает отлично.

1. Есть несколько десятков категорий в MS2, и необходимо что бы при использовании mFilter2 эти категории/фильтры выводились согласно тому, как они построены в дереве (админки). По умолчанию получается какой-то разнобой. В документации как решить задачу — я не смог осознать…

2. При использовании «createdon:day» появляются числа — дата создания ресурса. Необходимо что бы дата соответствовала дате отмены публикации, соответствующая в моём случае событию. То есть пользователь сможет отфильтровать ресурсы по дате события, описанного в каждом из ресурсов.

Понимаю что помощь мне может потребовать времени. Готов рассмотреть вариант морального или трудового возмещения в денежном эквиваленте.
Александр Н
24 мая 2015, 09:07
modx.pro
2 582
0

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

Василий Наумкин
24 мая 2015, 12:12
+1
1. Они так и должны выводиться, по menuindex. Но нужно понимать, что выводится не дерево, а именно категории, и к ним уже добираются раздельно их родители.
То есть, отсортированы по menuindex именно категории, без своих родителей.

2. Если у ресурсов указана дата отмены публикации, то нужно использовать поле unpub_date, а не createdon.
    Александр Н
    24 мая 2015, 12:25
    0
    Благодарю за практически мгновенный ответ!

    По первому вопросу. Можно ли сделать вывод категорий строго с приоритетом по родителям?

    Род1/Кат1
    Род1/Кат2
    Род1/Кат3
    Род2/Кат1
    Род2/Кат2
    Род2/Кат3


    Что бы в фильтрах был визуальный порядок, ясность
      Василий Наумкин
      24 мая 2015, 12:27
      +1
      Можно, если расширить метод buildCategoriesFilter и прописать там свой порядок.
        Александр Н
        24 мая 2015, 12:34
        0
        Могли бы вы указать примеры (варианты) расширений? Возможно подобные вопросы уже задавались. Понять это из документации не хватает знаний…
          Василий Наумкин
          24 мая 2015, 12:37
          0
          Что значит, варианты? Это PHP класс, его можно унаследовать и расширить как принято в объектно-ориентированном программировании.

          Вариант тут только один — написать что нужно на PHP.
            Александр Н
            24 мая 2015, 12:39
            0
            Направление понял. Благодарю за подсказки!
      Василий Столейков
      24 мая 2015, 13:12
      0
      Попутный вопрос можно?
      Выводить фильтры можно только через плейсхолдер [[+filters]]? Нельзя их выводить не в кучу, а в произвольном месте страницы, например один фильтр в перед выводом результатов, а второй после?
        Василий Наумкин
        24 мая 2015, 13:35
        0
        Почитай документацию, есть параметр &toSeparatePlaceholders.
          Василий Столейков
          24 мая 2015, 13:36
          0
          Спасибо, не пользовался им ещё!
            Василий Столейков
            24 мая 2015, 14:02
            0
            Классно всё работает (даже вызовы pdoTools!!!), кроме одного:
            в плейсхолдер [[+my.results]] не подставляется вывод результатов изначально. Хотя пагинация выводится исправно. Подставляются результаты только при клике на пагинацию или фильтр.
              Василий Наумкин
              24 мая 2015, 14:27
              0
              Думаю, его стоит вызвать некэшированным.
                Василий Столейков
                24 мая 2015, 15:01
                0
                Странно, вроде все варианты перепробовал:
                кэшированный сниппет на кэшированной странице
                некэшированный сниппет на кэшированной странице
                кэшированный сниппет на некэшированной странице
                некэшированный сниппет на некэшированной странице
                К тому же испробовал кэширование разных плейсхолдеров (типа [[!+my.results]]), результат не поменялся…
                И кэш чистил соответственно
                  Василий Наумкин
                  24 мая 2015, 15:03
                  4
                  +2
                  Сделай сниппет
                  <?php
                  echo '<pre>';
                  print_r($modx->placeholders);
                  die;
                  и вызови его на странице после mFilter2 — увидишь все выставленные плейсхолдеры.
                    Василий Столейков
                    24 мая 2015, 15:14
                    0
                    Сниппет в закладки — полезный!

                    Вот что мне удалось выяснить:
                    [[!mFilter2? 
                        &element=`getTickets`
                    не выставляет плейсхолдер [[+my.results]]
                    В то время как с
                    [[!mFilter2? 
                        &element=`pdoResources`
                    Всё нормально выводится…

                    Выходит прийдётся отказаться от использования getTickets в пользу pdoResources?
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      17