We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 31656
    • 7 Posts
    у документов есть TV параметр tvrooms. возможные значение:0, 1, 2, 3, 4, 5
    как в ditto сделать поиск документов, у которых tvrooms=1 или 2 или 3 (комбинация значений может быть любой)?
    возможно ли такое сделать через filter?
      • 36823
      • 334 Posts
      Да, через фильтр можно.
        • 31656
        • 7 Posts
        А как? )
        я не могу понять, как организовать поиск по "или"
        если можно, дайте пример
          • 36823
          • 334 Posts
            • 31656
            • 7 Posts
            вы меня не поняли)
            в первой ссылки поиск по разным TV. а мне надо поиск по одному TV, причем искаться должны документы, у которых значение этого TV может принимать различные значения (т.е. например, должны вывестить все документы, у которых tvrooms=1 или tvrooms=2 или tvrooms=3)

            пробовал так (и с 2ками тоже пробовал):
            [!Ditto? &tpl=`short_info` &startID=`9` &noResults=` ` &paginate=`1` &summarize=`4` &filter=`tvrooms,@EVAL return $_GET[’numrooms0’];,1|tvrooms,@EVAL return $_GET[’numrooms1’];,1`!]

            но, естественно, такой вариант не работает
              • 36823
              • 334 Posts
              Ошибочка вышла.
              В таких случаях я использовал только tvExplorer.
                • 31656
                • 7 Posts
                решил сделать так:
                написал свой сниппет, который формирует фильт для ditto.
                вот вызов ditto:
                1)
                [!Ditto? &tpl=`short_info` &debug=`1` &startID=`9` &noResults=` ` &paginate=`1` &summarize=`4` &filter=`tvcost,@EVAL return $_GET[’budget_min’];,3|tvcost,@EVAL return $_GET[’budget_max’];,4|[[dittoFilter]]`!] 

                первый раз выводит правильно. но в дальнейшем выводится тоже самое, что в при первом вызове вне зависимости от передаваемых параметров.

                2)
                [[Ditto? &tpl=`short_info` &debug=`1` &startID=`9` &noResults=` ` &paginate=`1` &summarize=`4` &filter=`tvcost,@EVAL return $_GET[’budget_min’];,3|tvcost,@EVAL return $_GET[’budget_max’];,4|[!dittoFilter!]`]] 

                так ничего не выводит. к тому же не заходит в debug console

                3)
                [!Ditto? &tpl=`short_info` &debug=`1` &startID=`9` &noResults=` ` &paginate=`1` &summarize=`4` &filter=`tvcost,@EVAL return $_GET[’budget_min’];,3|tvcost,@EVAL return $_GET[’budget_max’];,4|[!dittoFilter!]`!]

                так тоже не работает.
                значение filter=tvcost,@EVAL return $_GET[’budget_min’];,3|tvcost,@EVAL return $_GET[’budget_max’];,4|[[dittoFilte

                подскажите, как тут надо сделать, чтобы все нормально работало?
                и можно ли вообще делать так, как я? чтобы значение параметра ditto формировалось в сниппете



                  • 897
                  • 1,620 Posts
                  все-таки я поражаюсь людям.

                  ну читайте вы мануалы, ну полезное это занятие, времени займет не больше чем зависание на форуме + эксперименты

                  http://ditto.modxcms.com/tutorials/basic_filtering.html


                  Multiple Filter Clauses

                  A filter may include multiple clauses, separated by the global delimiter, in the form:
                  clause|clause|clause|etc. Where:

                  * "clause" is any filter clause as defined above.
                  * "|" (the pipe symbol) is the Global Filter Delimite, the character that tells Ditto where the division is between clauses.
                  * "etc." means there is no fixed limit to the number of clauses you may include.

                  Multiple clauses have an "OR" relationship. I.e. a document will be excluded if it meets the criterion of any one clause (clause-1 OR clause-2 OR clause-3, etc.).
                  Example

                  The filter
                  id,50,2|id,52,2

                  means "exclude any document whose id field equals 50 or 52."
                    "Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein."

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

                    Who can defeat the Russian bear?
                    • 897
                    • 1,620 Posts
                    а еще, от туда же

                    Ditto allows you to use the &filter parameter to REMOVE UNWANTED DOCUMENTS. That is, any document that meets the criteria of the filter will be REMOVED from the output.


                    @EVAL

                    @EVAL in filters works the same as it does in MODx except it can only be used with basic filtering, not custom filtering (tagging, etc). Make sure that you return the value you wish Ditto to filter by and that the code is valid PHP.

                    итак, вам надо показать все квартиры, у которых число комнат больше 1ой и меньше 3х.

                    [!Ditto? &tpl=`short_info` &parents=`9` &noResults=` :(` &paginate=`1` &display=`4` &filter=`tvrooms,1,5|tvrooms,3,6`!]
                    


                    попробовали без подстановки и убедились, что фильтр работает.

                    дальше думаем почему не работает с подстановкой через @EVAL
                      "Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein."

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

                      Who can defeat the Russian bear?
                      • 31656
                      • 7 Posts

                      итак, вам надо показать все квартиры, у которых число комнат больше 1ой и меньше 3х.

                      это был лишь частный случай. а как, допустим, сделать, если надо выбрать все документы со значениями 1,3,5?

                      п.с. а всетаки, если формировать значение фильтра в другом сниппете, может получиться?
                      п.п.с. проблема заключается в том, что filter в ditto исключает документы, которые удовлетворяют условиям. а мне надо наоборот, показать их. вот я и экперементирую.
                      п.п.п.с. документацию по ditto всю перечитал уже на несколько раз