Доброго времени суток!
Суть вот в чём, я с hostCMS работаю недавно, и соответственно, многих тонкостей и нюансов ещё не освоил.
Есть типовая динамическая страница.
В ней генерируются списки элементов.
В одном случае - Список всех групп.
В следующем, когда мы выбираем какую-то из них, то генерируется список другого вида , а именно:
- если в группе есть подгруппы, то должны выводится , сперва , списком все подгруппы, а потом список всех элементов (товаров) относящихся к этим подгруппам.
- если в группе подгрупп нету, а только элементы (товары), то они должны выводится простым списком.
есть параметр $param['current_group_id'] который в странице меняет способ отображеия списков(так же , согласно офф. документации). А именно, если он false, то выводятся все элементы из подгрупп, текущей группы. Но в этом случае , так же должен выводится список подгрупп текущей группы(перед списком всех элементов).
Тут возник ряд вопросов. ( Прокомментировано в следующем куске кода )
<?php
/**
* В это переменную , в процессе выполнения, записываются , через
* запятую, числовые идентификаторы таблицы : 'shop_groups_table',
* по аттрибуту : 'shop_groups_id' , который соответствует ID группы
* или подгруппы.
* Далее, переменная используется для конструирования дополнительных
* параметров в SQL - запросе. (см. ниже)
*
*/
$str_sub_list = ''
...
...
$param['xml_show_group_type'] = 'all';
$element['type'] = '0';
$element['prefix'] = ' AND ( ';
$element['name'] = ' shop_groups_table.shop_groups_id ';
$element['if'] = ' IN( '. $str_sub_list . '

';
$element['value'] = '';
$element['sufix'] = ' ) ';
$param['select_groups'] [] = $element;
$param['current_group_id'] = false;
?>
По логике, должны выводится отфильтрованные подгруппы, по этим идентификаторам, но SQL - генерируется по другому. И соответственно ничего не выводится.
Такого вида :
SELECT * FROM `shop_groups_table`
-- Следующей строчки, по идее, быть не должно.
WHERE shop_groups_table.shop_groups_id = '606'
AND ( shop_groups_table.shop_groups_id
-- Это - ключевое место. (просто пример из лога, эти две подгруппы и должны были быть выбраны )
IN( 625, 624) )
"4" , "-" , " URL ссылка на текущую ГРУППУ "," Адрес IP";
...
Всего , таких селектов 9, столько же , сколько и ГРУПП.
Может я пропустил какие-то параметры в массиве $params[], что бы выводился сперва список из подгрупп в текущей ГРУППЕ, ну а следом уже все элементы из его подгрупп?
Зарание спасибо.