We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 12880
    • 4 Posts
    Пытаюсь сделать поиск, как описано тут - http://modx.ru/blog/409.

    Вызываю Ditto следующим образом
    [!Ditto? $startID=`61` &depth=`0` &filter=`tvdocumentCategory,@EVAL return $_POST["documentCategory"],7`!]
    

    Форма поиска выглядит так
    <form method="post" action="[~346~]">
    <select name="documentCategory">
    <option>Фотографии</option>
    <option>Статьи</option>
    <option>Видео</option>
    </select>
    <input type="submit" />
    </form>
    


    При этом при вызове Ditto получаю ошибку

    Parse error: syntax error, unexpected $end in ....../public_html/assets/snippets/ditto/classes/filter.class.inc.php(24) : eval()’d code on line 1
    А дальше вывод всех документов (т.е. фильтрация не производится).

    Естественный вопрос - что делать? smiley
      • 17459
      • 268 Posts
      Пытаюсь сделать поиск, как описано тут
      а где ";"?
      [!Ditto? $startID=`61` &depth=`0` &filter=`tvdocumentCategory,@EVAL return $_POST["documentCategory"];,7`!]
        • 12880
        • 4 Posts
        Если использовать точку с запятой - тоже не работает. Я так и пробовал сначала, потом много раз переделывал и к момену поста на форуме её уже было (после стольких-то изменений smiley ).
        Но, повторюсь, точка с запятой проблему не решает. Один в один та же фигня.
          • 17459
          • 268 Posts
          &depth=`0`

          Any number greater than or equal to 1

          > Если использовать точку с запятой - тоже не работает.
          А если не использовать - то работать не может по определению. (см. документацию php)
            • 12880
            • 4 Posts
            Спасибо за помощь.

            Стало чуть получше - теперь выводит no documents found smiley
            Естественно, поиск идет по опубликованным документам, TV назван правильно и документы с нужным значением TV существуют и достигаются через Ditto (depth=20).

            Возможна ли проблема с передачей юникода через POST?

            >> Если использовать точку с запятой - тоже не работает.
            >А если не использовать - то работать не может по определению. (см. документацию php)
            PHP я знаю, но вот как MODx обрабатывает @EVAL для меня не так очевидно. Поэтому я пробовал оба варианта.
              • 17459
              • 268 Posts
              см. поле фильтр, там стоит 7.. попробуйте другеи значения.. 8, например...
                • 3190
                • 12 Posts
                Проблема такая же! Если включаю &debug=`1`, то на закладке параметры, filter равен "tvprice0, @EVAL return $_GE", это в случае $_GET[’var’]; "tvprice0, @EVAL return $_POS" для $_POST[’var’].
                Перепробовал разные варианты. пробовал tvprice0, @EVAL return $_GET[[’var’]], т.е. экранировать скобки, в результате "tvprice0, @EVAL return $_GET,6". Я так понимаю что DITTO просто обрабатывает парсером скобки [] и все что в них есть. А как этого отключить найти не смог. Думаю что пробемема в filter.class.inc.php
                Как решить?

                P.S. версия ditto 2.1
                  • 33694
                  • 742 Posts
                  А &startID у вас всё ещё так же как в первом сообщении прописан — через $?
                    • 17876
                    • 26 Posts
                    У меня почемуто при вызове дитто  строкой
                    [!Ditto? &startID=`368` &depth=`0` &filter=`tvkategoriya,@EVAL return $_POST["kategoriya"];,1`!]

                    и получается так, что при запросе документ находится не по TV ,а просто по content’y.
                    Почему так?
                    И причем выводит только 3 документа
                      • 897
                      • 1,620 Posts
                      правильно писать &startId, но этот параметр устаревший, актуальный &parents
                        "Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein."

                        Не используйте Revo для "просто сайтов". Используйте Evo

                        Who can defeat the Russian bear?