?
Если я не ошибаюсь, это флаг "Но показывать в общем списке". Эта проверка действительно нужна?
unserialize($ct['default_caption'])
Это будет название (заголовок) свойства по-умолчанию. В наборе свойств это название может быть переопределено, поэтому правильнее брать его из cms_es_datasets.fields_captions или из таблицы категорий (как в первом посте).
Ну и не забывать, что значения могут хранится не только "по значению", но и ссылками на значения справочников, и еще есть тип "набор флагов"
isnot_all - это уже по вкусу. По мне (и по текущему сайту, на котором 170+ свойств на 5 наборов), так если свойство не отображается в стандартной (опять же для этого сайта) таблице характеристик, то оно и в маркете не нужно.
Что касается второй части вопроса, то соглашусь. Сам как раз пришел к этому. Но не по тем причинам, что вы указали, а из за банальной находки, что fnum - не уникальный параметр. В частности на демо сайте, fnum=15 у свойств "С этим товаром рекомендуем" и "Размер".
Как именно хранится свойство, мне разбираться не хочется (ведь в результатах выборки я получаю уже значение, даже если что то хранится как ссылка на значение справочника. нет?), поэтому функция фильтрует то что мне не надо вот так:
$ct['ftype'] !== 'picture'
Хотя, этот кусок лучше было бы переписать вот так:
!in_array($ct['ftype'], array('picture',...))
А вот за указание на тип набор флагов - спасибо. Надо будет еще и с ним разобраться
В общем, надо еще копнуть. Это была версия 0.0.3 alpha