drinkmaker VIP
Total posts: 25
20 Нояб 2012 17:19

Я молодец, я нашёл ошибку, я заслужил печеньку :)

Если в типе есть несколько полей digit и по ним установлена фильтрация, расширенный фильтр глючит, а именно берётся минимальное и максимальное значения ТОЛЬКО ПЕРВОГО поля.

Приведу картинку чтобы понятнее было:

Так это работает сейчас:

А вот так после исправления:

Как исправить. Ошибка из серии "хрен найдёшь" я потратил вечер пока отловил, надеюсь кому-то поможет.

Итак в файле: example.com/components/com_cobalt/fields/digits/digits.php находим строчку в функции

public function onRenderFilter($section, $module = false)

у меня она под номером 90:

static $data = NULL;

и внимание! Здесь идёт магия очень высокого уровня, заменяем её на:

$data = NULL;

Затем пишем 100 раз:

:) Спасибо за внимание.

Последние изменения: 02 Март 2014


Sergey
Total posts: 13,748
20 Нояб 2012 21:29

Значит ты любитель печенек ? :)

Ну спасибо:) Я поправил в обновлении завтра.


drinkmaker VIP
Total posts: 25
21 Нояб 2012 03:17

Вот если бы ты мне подсказал, как такое реализовать - это было бы круто:

Сейчас площадь - это числовое поле и поиск работает великолепно, однако

есть бизнес-центры, у них доступны различные площади офисов 20, 30, 50, 100 м2

и здесь я вижу 2 варианта:

1.) Плодить большое количество записей для каждого варианта создавать новую - это не хорошо, если у нас 5 бизнес центров и в каждом по 10 вариантов - это уже 50 записей, а в киеве их гораздо больше, и пользователи будут терятся и админу тяжело поддерживать.

2.) Сделать площадь полем чекбос с возможностью добавлять свои значения. Круто, работать будет как надо, но, красивая фильтрация по диапазону будет невозможна. Или где ковырять, чтобы для чекбоксов сделать фильтр по диапазону, при условии что данные числовые?

3.) Возможно есть ещё какой-то вариант, который я не вижу

Основной вопрос - как создавать свои сложные фильтры, через шаблон фильтра? не похоже.


Sergey
Total posts: 13,748
21 Нояб 2012 06:48

Да мне кажется поле чекбокс сюда надо.

К сожалению для того что бы внедрить фильт по диапозону придется не только шаблон фильтра менять а так же и само поле в методе onFilterWhere()

Но если делать но наверно так только. Сделать значения 10, 20, 30, ...

Единиственная проблема что данные будут не точны. НАпример офис 17 всего. Человек выбирет 20 и тот кто ищет даже не думаю о цене может подумать что 20 для него это уже перебор. Надо что бы значение было точное.

Я не вижу ни чего плохого если надо добавлять по одному литиннгу на каждое помещение. Хотя согласен это не идеально но вполне оптимально.


drinkmaker VIP
Total posts: 25
21 Нояб 2012 16:21

О! Спасибо за наводку, то что нужно.

Вот что получилось

Есть ещё маленький вопросик

Сделал это отдельным полем на основе чекбокса с оригинальным названием MultiDigit.

Как думаешь, стоит заморочиться над грамотным оформлением, как отдельного поля и выложить к вам в 3DP extensions, только на сайте кобальта я что то его не нашёл.

Или это весьма специфическое поле, которое мало кому нужно, да и ситуации использования кроме моей придумать больше не могу?

Влюбом случае под Кобальт разрабатывать одно удовольствие, очень грамотно архитектура задана. Документации бы побольше, понаписывали б кучу полезных штук :).

То что вы переехали на гитхаб - это хорошо, но если бы ещё была система коллективной разработки. Со списком задач, и толпой бы их делали. Уже б была куча модулей и прочих полезностей. Хотя с другой стороны вы тогда не сможете их продавать по подписке, но зато привлекательность компонента вырастет и вы сможете больше продатьподписок. Это так, мысли влух :)


Sergey
Total posts: 13,748
21 Нояб 2012 21:54

О! Спасибо за наводку, то что нужно.

Вот что получилось

Ахренительно! Ты просто сказочник а я просто в осадке. :D

О! Спасибо за наводку, то что нужно.

Вот что получилось

Как думаешь, стоит заморочиться над грамотным оформлением, как отдельного поля и выложить к вам в 3DP extensions, только на сайте кобальта я что то его не нашёл.

Думаю тебе будет как минимум несколько людей балгодарны это точно. А с учетом развития я думаю в будующем не мало людей.

О! Спасибо за наводку, то что нужно.

Вот что получилось

Как думаешь, стоит заморочиться над грамотным оформлением, как отдельного поля и выложить к вам в 3DP extensions, только на сайте кобальта я что то его не нашёл.

То что вы переехали на гитхаб - это хорошо, но если бы ещё была система коллективной разработки. Со списком задач, и толпой бы их делали. Уже б была куча модулей и прочих полезностей.

Да я хотел сделать публичную част публичной и только приватную приватной. Пока это не получается сделать. У гитхаба нет таких возможностей. Нельза форкить паблик репо приватно и наоборот. Это значит что стандартными методами синхронизация не будет проходить. А это значит что надо будет ручками делать тяни-толкай. Это не очень удобно. Мы посмотрим я все еще в процессе так как хоче что бы публичная часть была публичной и что бы другие могли тоже контрибутить при желании.

PS: Там у фильтра ползункового есть параметер называется шаг.

steps: <?php echo ceil($data->max - $data->min);?>

Сейчас он сделан так что при движении ты передвикаешься по одному значению. 1, 2, 3, ... Я думаю раз это чекбокс то можно сделть хотябы по 5. 5, 10, 15, 20, ...

steps: <?php echo ceil(($data->max - $data->min) / 5) ;?>
Работает на Cobalt