Как сказал EJB, решение зависит от того, где вы хотите реализовать поиск.
Если вы хотите найти сообщение с конкретным значением поля, поиск только сообщений, отображаемых на текущей странице (например, index.view или вида категории), вы можете сделать это с помощью Chalk в шаблоне, подобном этому :
#foreach($post in $posts)
#if($post.Custom("CustomField1") == "some value")
display or do something with $post
#end
#end
Вы также можете использовать API для повторения всех сообщений и проверки пользовательского значения. К сожалению, у Graffiti CMS нет встроенного метода для запроса базы данных для сообщений на основе определенного значения настраиваемого поля.
Однако вы можете использовать встроенную поисковую систему Lucene. Если вы хотите включить поиск определенного настраиваемого значения поля с помощью поиска, вам нужно сделать пару настроек в исходном коде класса Graffiti.Core.SearchIndex. В методе CreateDocument добавить значение настраиваемого поля в индексированной документа, как это:
doc.Add(Field.Text("CustomField1", t.Custom("CustomField1") ?? string.Empty));
Затем в методе GetQueryParser добавить этот ключ в список полей для поиска по:
return new MultiFieldQueryParser(new string[] { "body", "title", "CustomField1" }, a);
С двумя изменения выше, вы сможете выполнить поиск «некоторого значения» и вернуть ему сообщения с значением CustomField1.
Надеюсь, что это поможет!
Вы пытаетесь сделать это в коде мела/макроса или переписав C#? Решение будет другим. –