&where в getresources

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

Интересует такой вопрос:

Как при работе с getresources, устроить фильтрацию по TV параметрам. Вот пример моего запроса:

&where=`{"ModGoods.price:<=":[[!Get? &var=`vmax`]], "ModGoods.price:>=":[[!Get? &var=`vmin`]], "D:=":[[!Get? &var=`D`]]}

Где
  • ModGoods.price — параметр компонента MiniShop
  • D — TV рессурса.

Вот только с TV не работает :( Префиксы отключил с помощью &tvPrefix=``

В чем может быть причина?
Fedor
08 марта 2013, 19:24
modx.pro
3 685
0

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

Василий Наумкин
08 марта 2013, 23:38
0
Для фильтрации по ТВ там есть отдельные параметры.
    Fedor
    09 марта 2013, 00:15
    0
    &tvFilters работает ОЧЕНЬ медленно, у меня более 700 товаров.
      Fedor
      09 марта 2013, 00:22
      0
      Василий, если я правильно понял, то через &where нельзя по TV отбирать?
        Василий Наумкин
        09 марта 2013, 06:21
        0
        По моему, да.

        ТВ лежат в отдельной таблице, на которую where не распространяется. А использование ТВ очень медленное, это не новость.

        Вроде как в сниппете getProducts, автор улучшил работу с ними.
          Fedor
          09 марта 2013, 13:09
          0
          Я просто не могу поверить, что оказывается фильтр в магазине по 6 TV параметрам — это уже не реально… Никто нигде не писал что Модх так сильно ограничен в ресурсах… Есть же куча ниш магазинов, где 2-3 параметра, кроме цены — это очень мало…

          getProducts я попробовал… но там всплывают ошибки другого рода… но даже с ним, при 6 TV будет медленно :(

          Если у кого то есть опыт в данной проблеме — отпишитесь пожалуйста…
            Василий Наумкин
            09 марта 2013, 13:12
            0
            Так всегда. Чем проще и универсальнее разработка, тем она медленее.

            Выход есть — пиши свой сниппет, который будет фильтровать ресурсы через SQL и возвращать id подходящих, для вывода через getResources.

            P.S. Ну и хостинг у тебя, подозреваю, не очень быстрый, да?
              Fedor
              09 марта 2013, 13:20
              0
              Агава :( Думаю вот куда переехать…
                Fedor
                09 марта 2013, 13:31
                0
                Василий, а getProducts параметры Минишопа не выводит?
                  Василий Наумкин
                  09 марта 2013, 13:35
                  0
                  Скорее всего — нет. Он не знает про дополнительную таблицу с параметрами.

                  Попробуй поразбираться с новым сниппетом от MS2, который быстро работает через pdoTools и умеет выбирать ТВ.

                  Думаю, он и фильтровать по ТВ сможет, но пока не проверял.
                    Fedor
                    09 марта 2013, 13:38
                    0
                    А для этого мне нужно перейти на MS2?
                      Василий Наумкин
                      09 марта 2013, 13:43
                      0
                      Нет.

                      Этот сниппет использует мою билиотеку pdoTools и выбирает ресурсы напрямую из БД, без xPDO.

                      Если разобраться с этой библиотекой — можно делать любые выборки и сортировки, очень быстро. На сайте есть подробная заметка, для подписчиков.
                        Fedor
                        09 марта 2013, 14:00
                        0
                        Подписка — не вопрос! главное чтобы мне это помогло… Я сравнительно плохо разбираюсь в этом…
                        Василий Наумкин
                        09 марта 2013, 14:02
                        0
                        Да я не агитирую на подписку.

                        Просто объясняю, что реальный выход у тебя один — работать с фильтрацией самостоятельно, в чём очень помогает pdoTools.

                        Лично я использую его во всех новых компонентах, то есть: Tickets и miniShop2.
                        Fedor
                        09 марта 2013, 14:07
                        0
                        Я понимаю :) Я даже за!

                        Но у меня переживания на счет «самостоятельно»… я писал раньше админки для сайтов сам, и работал с сложными фильтрами для контент проектов… но я и обучался сам исходя от задачи… на чистом ПХП :)

                        А тут все темный лес… вот к примеру pdoTools для меня ничего пока что не говорит…

                        Буду разбираться..)
                        Fedor
                        09 марта 2013, 14:10
                        0
                        А вообще, очень странно, что компонент Минишоп… да и сам Модх, так изначально ограничен по функционалу. Мне какой магазин в голову не приходит — сложные фильтры нужны везде почти…

                        Не в коем случае не хочу обидеть автора, компонент шикарный, но так странно что только мне стало так тесно в рамках существующего функционала…
                        СикретНаме
                        09 марта 2013, 14:18
                        0
                        А тебе не приходило в голову часть параметров через простые TV, а часть через MIGX выводить? Или же все через MIGX… Это так, мысли вслух, тихонько-тихонько.

                        И тоже вслух, но громко-громко: modx.pro/help/829/#comment-7266

                        Хотя… Ты обещал по-разбираться — зер гут)
                        Fedor
                        09 марта 2013, 14:26
                        0
                        Станислав, я вас не понял…
                        MIGX — мне тоже мало о чем сейчас говорит. Есть компонент, есть его сниппеты… в их рамках я и пытаюсь решить свою задачу.

                        Теперь, когда я знаю что этого функционала мало, я ищу способы альтернативных решений…

                        И да, я тут много чего не понимаю еще. Для этого и пишу сюда…
                        СикретНаме
                        09 марта 2013, 14:57
                        0
                        "… очень странно, что компонент Минишоп… да и сам Модх, так изначально ограничен по функционалу..." — вот это вызвало мою такую реакцию, а не уровень знаний (мне не известный и который может быть выше моих).

                        Нельзя так — можно так = нет ограничения — вот в чём суть моего коммента.
                        Fedor
                        09 марта 2013, 15:09
                        0
                        Станислав, я прекрасно понимаю что при умелых руках ограничений обычно нет.

                        Но суть в другом — ограничения вызваны стандартным функционалом. И не просто МодХа, а компонентом интернет магазинов… так как я уже говорил — я половины магазинов без сложных фильтров не вижу — Подарки, Запчасти, Диски, Шины, одежда…

                        Мне очень нравится МиниШоп, и огромное спасибо автору. Это лишь мое искрение удивление.
                        Fedor
                        09 марта 2013, 15:11
                        0
                        И за чем вобще в модХ фильтры по TV если они так безбожно виснут.
                        СикретНаме
                        09 марта 2013, 15:42
                        0
                        1. Затем, что великое множество магазинов в них вообще не нуждается или нужна пара-тройка.
                        2. Затем, что то, как происходит их вызов и, что накодировано в вызываемом так же влияет на скорость.
                        3. Затем, что есть в порядки большее кол-во задач, помимо магазина, которые требуют лишь 1-2-3 из них — всё прекрасно работает.
                        Есть и ещё аргументы.

                        П.С.
                        "… ограничения вызваны стандартным функционалом. И не просто МодХа, а компонентом интернет магазинов…" — иногда ограничения и «ограничения» вызваны бюджетом и сроком выполнения работ или вышеописанным, а бывает и тем, что автор вынес некоторую часть работ «на завтра», а так же тем, что задел есть, как решать известно — всё в наших руках.

                        Не стоит забывать, что для нас это бесплатно.
                        Fedor
                        09 марта 2013, 16:03
                        0
                        Станислав, вы все не о том. Я все это понимаю. Вы не поняли моей мысли.
                        Я как человек новый в МодХ, выбрал для магазина именно его, потому что на поверхности была информация — 1) Позволяет создавать свои TV и по ним делать выборку.
                        2) Есть МиниШоп, отличный удобный компонент для своих магазинов с богатым функционалом.

                        Казалось бы — выбор сделан. Но вот информация которая лежала уже намного глубже —

                        1) выборка по большому количеству TV на большом количестве ресурсов — не реальна без серьезных доработок.
                        2) МиниШоп использует TV по мимо основных параметров, что возвращает нас к пункту 1.

                        Я не вижу смысла разводить тут флуд. Сейчас я ищу варианты решения своих задач. Надеюсь мне тут помогут :)
                        СикретНаме
                        09 марта 2013, 16:28
                        0
                        То есть мы таки приходим к тому, что корень не в MODX, а в том, что Вы хотели «взять и съесть»?

                        Всё бы ничего, но ключевой + MODX не в том, что много чего есть готового — это к Joomla и иже с нею, а в том, что в MODX нет ограничений для тех, кто умеет больше, чем жмакнуть кнопочку «создать документ.

                        В Joomla и иже с нею многое просто не получится сделать. В отличие от MODX. В этом ключевое преимущество MODX.

                        Ну, и, конечно, Вам помогут, если что, если немного и ненавящиво)
    Юрий Новый
    Юрий Новый
    09 марта 2013, 00:22
    0
    Используйте сниппет getProducts ;)
      Fedor
      09 марта 2013, 00:34
      0
      Такой разве есть?) Нашел… попробую, спасибо!
      Fedor
      09 марта 2013, 01:13
      0
      504 Gateway Time-out — получаю при использовании getPage на msGetResources при поптыки отобрать по одному TV :(

      Что же не так? Мне 6 TV для отбора нужны…
        Fedor
        09 марта 2013, 18:47
        0
        Василий, вывожу ресурсы через pdoTools — выводится быстро, но без параметров магазина.

        Если выводить через снипет snippet.ms_products — ничего не выводит…
          Василий Наумкин
          10 марта 2013, 19:13
          0
          Держи сыренький, плохенький сниппет. Но вроде работает с MS1 и фильтрует по ТВ.

          Это адаптация сниппета от MS2, на скорую руку. Пример вызова:
          [[!ms1Products?
              &limit=`10`
              &parents=`0`
              &includeTVList=`popular,new`
              &where=`{"Data.price:>=":100,"TVnew.value":1,"TVpopular.value":1}`
          ]]
          Обрати внимание на ТВ в where.
            Fedor
            10 марта 2013, 20:25
            0
            Спасибо большое! Сейчас буду побывать!
          Fedor
          10 марта 2013, 21:31
          0
          Василий, я потестил сниппет, и вот что у меня получается:
          Без фильтров выводится все, но в виде массива, шаблон полностью игнорируется, как и страницы так и вывода.
          С фильтрами либо вобще ничего не выводит, либо вот такую ошибку —

          Warning: Invalid argument supplied for foreach() in /home/kolesni9/public_html/core/components/pdotools/model/pdotools/pdofetch.class.php on line 103
          а следом вывод, но без учета фильтров…
          сам вывод:
          [[!ms1Products? &limit=`10` &parents=`3` &includeTVList=`d`  &where=`{"TVd.value":15}` ]]
          На что конкретно обратить внимание в TV?
          Fedor
          11 марта 2013, 14:15
          0
          У меня все было намного проще. Все когда то начинали с простых самописных систем.

          Да, я не изучал ваш код. При такой постановки вопроса, мне наверно надо было вас не отвлекать и самому написать, если я правильно вас понимаю… Я же «админки писал», а тут такое спрашиваю… детский сад…

          Спасибо, буду разбираться.
            Fedor
            11 марта 2013, 20:22
            0
            Василий, фильтры не работают даже на цену.

            Нужна помощь за которую я готов платить. Можете кого нибудь порекомендовать? Если у вас нет на это времени…
              Василий Наумкин
              11 марта 2013, 20:56
              0
              У меня фильтруются товары при использовании этого сниппета. И по цене и по ТВ, всё через параметр &where=``.

              Сниппет работает очень просто — создаётся один запрос в БД, выбирающий все подходящие товары с джоином их свойств. Ты его можешь увидеть установкой параметра &showLog=`1`, и самостоятельно проверить в PhpMyAdmin.

              Если у тебя и сейчас ничего не работает, ничем помочь уже не могу.

              Работать с первым miniShop сразу после выпуска второго у меня нет ни времени ни желания. Порекомендовать тоже некого, разве что разместить объявление вот тут.
                Fedor
                12 марта 2013, 02:21
                0
                А второй miniShop без серьезных доработок мои задачи не решит?
              Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
              35