Это еще одна идея, которая может или не может быть осуществима: держите переменную, которая может превратить foo в неоперативный:
int broken = 0;
void foo (int a) {
if (broken) return;
printf("a: %d", a);
broken = 1; // "break"
}
int main(void) {
for (int i = 0; i <= 100; i++) {
foo(i);
}
return 0;
}
Это функционально то же самое, за исключением некоторой потери тактов (функция будет вызываться, но выполнять только оператор if
), и нет необходимости изменять цикл. Это не потокобезопасно и работает только в первый раз (но foo
может сбросить переменную broken
в 0, если вызывается с a
, равным 0, если необходимо).
Так что не велика, но идея, которая еще не была упомянута.
Есть модуль «Фасетный поиск» ( http://drupal.org / project / faceted_search ), который предлагает интересную концепцию поиска, которая также применима к полям CCK. Вы можете увидеть демонстрацию здесь . Он скорее предлагает вам выбрать существующие наборы значений (фасеты) и элегантно их просматривать, но все же это поиск. (Используйте вместе с http://drupal.org/project/cck_facets )
Фасетный поиск и модули интеграции ApacheSolr - это два (отдельных) метода, которые я бы порекомендовал.
Вы исчерпали все возможности открытых фильтров Views?
Какие функции нельзя воспроизвести с помощью видов? Я поработал с использованием представлений для интерфейса поиска, но мне нужно знать больше, чтобы помочь.