AlexMoiseyuk VIP
Total posts: 123
14 Jan 2016 22:37

ссылка типа сайт.ком/news.html?task=records.filter&filter_name[0]=filter_k80d4095d6ff88fd3f3bc215b31a44d63&filter_val[0]=YES не возвращает статьи в которых значение поля SELECT с указаним ключем установлено в YES. При условии: если был включен параметр в настройках поля "Apply chosen library" и добавлена статья, то эта статья не возвращается. И наоборот - не показывает статьи добавленные с выключеным параметром при включенном. Надеюсь что удалось объясныть=)

при этом код типа if($item->fields_by_id['25']->value[0]=="YES") в шаблоне списка срабатывает на ура во всех случаях

Last Modified: 15 Feb 2016


Sergey
Total posts: 13,748
15 Jan 2016 10:29

Barabashka Надеюсь что удалось объясныть=)

Наверно мне не удалось понять.

Barabashka И наоборот - не показывает статьи добавленные с выключеным параметром при включенном.

При включеном чем?

И еще, слово YES уж большо общее. Попробуйте использовать другой ключа типа MY_YES.


AlexMoiseyuk VIP
Total posts: 123
15 Jan 2016 11:14

Sergey И еще, слово YES уж большо общее. Попробуйте использовать другой ключа типа MY_YES.

я это как пример привел. использую HUMOR_YES, но суть не в этом. в настройках поля селект эсть параметр Apply chosen library (на изображении) 2016-01-15_130712

так вот этот параметр влияет на фильтрацию. по порядку:

  1. включил параметр,
  2. добавил статью (статья 1)
  3. перешел по ссылке (та что вверху топика)
  4. не получил только что добавленной статьи Статья 1

решил попробовать по-другому:

  1. пошел в настройки поля, выключил Apply chosen library
  2. перешел по ссылке
  3. получил Статью 1 (но не получил предыдущие, добавленные с выключеным параметром Apply chosen library

не могу понять проблема в ссылке, поле или параметре

пришлось временно поменять select на radio, но это не подходит


Sergey
Total posts: 13,748
18 Jan 2016 10:38

Проверте что у вас в списке значений ни где пробел не затисался после ключа или до. Так же в таблице _js_res_record_values посмотрите эти значения что они одинаковы и нет пробелов.


AlexMoiseyuk VIP
Total posts: 123
19 Jan 2016 15:10

список значений стараюсь всегда с очень строгой акуратностью делать, проверил, действительно все точно, пробелов нигде нет. даже если бы были, ничего бы не поменалося, так как при изменении параметров поля список значений остается нетронутым. + повторюсь, что код php обрабатывает эти значения всегда верно и точно.

кстати после измения типа поля на radio показывает только старые статьи, значения которых добавленные через поле селект. такое ощущение, что префильтрация готова выводить все, кроме текущей конфигурации

только что присмотрелся к ключам по которым фильтрую, они разные. В том числе: и ключ в админке (там в тултипе в списке полей и в базе _js_res_fields) отличается от нового, который пишеться в базу (таблица _js_res_record_values). Значит получается ключ меняется даже при изменении настроек поля?

  1. попытка перейти по префильтрованной ссылке с новым ключом вообще ничего не вернула - только список статей раздела
  2. но попытка изменить вручную ключ в базе на нужный вернула в результате нужную статью

остается вопрос: как правильно создавать и редактировать поля, для которых необходимо сделать префильтрацию?


AlexMoiseyuk VIP
Total posts: 123
21 Jan 2016 09:42

получилось исправить когда заменил вручную в БД значение ключа поля на возвращаемое полем и так же запустил следующий код, что изменило ключи полей некоторых уже добавленных статей:

UPDATE `_js_res_record_values` SET `field_key` = 'k220bee2c0cadc8b547896ebc45621f22' WHERE `_js_res_record_values`.`field_id` = 25;

но мне кажеться что это не очень хорошее решение, так как такую операцию придется исполнять при каждом редактированиии настроек поля


Sergey
Total posts: 13,748
25 Jan 2016 14:22

Ключь не должен менятся если не поменяся тип. Если тип тот же и название поле. Это 2 значения которые лежат в основе ключа. Если ты сменил на другой тип то ключи изменится.


AlexMoiseyuk VIP
Total posts: 123
26 Jan 2016 11:57

спасибою большое. Вывод: не менять тип поля без крайней необходимости


AlexMoiseyuk VIP
Total posts: 123
31 Jan 2016 13:20

Здравствуйте. Новые симптомы. Как оказалось фильтр не работает на другом языке.

Я решыл создать полностю новое поле и проверить работу на нем.

Ниже результат сохранения настроек поля и 2-х добавленных статей на разных языках:

2016-01-31_151558

2016-01-31_151623

Примечание: ключ поля 25 в таблице js_res_fields изменен вручную и это сработало для одного с языков

Но поле 26 не хочет фильтровать даже при нажатии на автоматически сгенерированную Кобальтом ссылку фильтра в значении поля

Может стоит создать разные поля для разных языков и вручную настроить как это было в первом случае, чтобы хотя бы работало?


Sergey
Total posts: 13,748
02 Feb 2016 11:09

По поводу языков для этого есть отдельная настроках как вы хотите показывать языки все или текущий. Смотрите в разделе. Это и определяет показать статьи всех языков или текущего выбраного.

По поводу ключей, руками не чего не меняйте. Просто переименуйте имя поля временно также. Это автоматически все поправит.

Так же результат поиска может зависить от режима фильрации. Поставте его пока что на все записи всего раздела что бы убедится в работоспособности потом потюните.


AlexMoiseyuk VIP
Total posts: 123
05 Feb 2016 18:58

Вот это волшебство! Название поля поменял и действительно все проблемы решились!

Но по поводу языков. Как только добавил новое значение в переопределение констант, новые статьи перестали отображаться. Как я понял записывается базу ключ не от константы HUMOR, а от значения "Юмор". Испотльзование HUMOR в названии удовлетворительно, но не решает задачу полностью. (пока поможет только кастомный шаблон вывода поля)

Смотрим в базу, действительно, ключи разные:

2016-02-05_205153


Sergey
Total posts: 13,748
08 Feb 2016 02:17

Не понятно. Это же одно и тоже поле. Должно было поменятся лейбл поля.


AlexMoiseyuk VIP
Total posts: 123
11 Feb 2016 15:03

Sergey Не понятно. Это же одно и тоже поле. Должно было поменятся лейбл поля.

лейбл поменялся с HUMOR_IS на HUMOR, а потом я добавил языковую константу, и добавил статью с полем 6313, и получил то, что на скриншоте

разница между двома случаями - это в одном случае есть HUMOR="Юмор" в overrides/..ini а в другом нет


Sergey
Total posts: 13,748
15 Feb 2016 15:52

ну это не столь важно. Эти данные не используются для отображения и для фильрации. Так что ни чего страшного что так происходит. Но я посмотрю и поправлю ошибку если найду. В кобкльт 9 вообще эти поля думаем удалить.

Powered by Cobalt