Как сказал 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 этого значения.
Надеюсь, это поможет!