Эх чуть чуть не дождался новой версии, перелопатил уже всю старую )
Я думаю очень не хватает возможности отображения только различающихся характеристик, такой функционал сделал, получилось не очень красиво, но работает...
что я сделал:
перед циклом перебора параметров (shop.compare.php)
foreach( $comparison_matrix['parameters'] as $parameter )
добавляем счетчик кол-ва товаров
$counter = count($comparison_matrix['products']);
в самом цике код ячейки таблицы помещаем в отдельную переменную
$html_n = '<tr><td class="comparison" >'.$parameter['parameter_title_label'].'</td>';
ниже в цикле перебора товаров счетчик уменьшаем
foreach( $comparison_matrix['products'] as $key => $product )
$counter--;
код ячеек с параметрами так же склеиваем в отдельную переменную
$html_co .= '<td class="comparison" >'.$product[$parameter['parameter_name']].'</td>';
а ниже:
//$hide_dub - переменная указывающая скрывать одинаковые параметра (1) или нет (0). Получаю get-ом из формы
//соответственно если скрываем
if ($hide_dubl == 1){
//помещаем параметр сравниваемых товаров в отдельный массив
$chara[$key] = $product[$parameter['parameter_name']];
//если дошли до последнего товара
if ($counter == 0){
//сравниваем сколько совпадений характеристики в массиве текущего параметра ($chara) (array_keys возвращает массив ключей с совпадениями) если их кол-во не равно кол-ву товаров, значит характеристики различаются, устанавливаем переменную $show=1
if (count(array_keys($chara,$product[$parameter['parameter_name']]))!= $numof) $show = 1;
//Если характеристики одинаковые
else $show = 0;
}
}
//Если $hide_dubl == 0, то есть показываем все характеристики
else{
$show = 1;
}
Сразу после цикла перебора товаров
//если показываем строку, то склеиваем переменные ячеек в общую $html
if ($show == 1) $html .= $html_n.$html_co;
//ну и на всякий случай )
unset($html_co);
Выбор режима отображения сделан обычной формой
$hide_dubl = JRequest::getInt('hide_dubl');
$juri = JFactory::getURI();
$juri->delVar('hide_dubl');
if ($hide_dubl == 1) $checked2 = 'checked';
else $checked1 = 'checked';
$html .= '<form action="'.$juri->toString().'" method="post" id="hide_f">';
$html .= '<input type="radio" name="hide_dubl" value="0" '.$checked1.' onclick="hide_f.submit()" />Все характеристики<br/><br/>';
$html .= '<input type="radio" name="hide_dubl" value="1" '.$checked2.' onclick="hide_f.submit()" />Только отличия';
$html .= '</form>';
Как-то так. Пришлось еще в форме модуля поменять метод на GET, иначе не получилось получить ссылку со всеми параметрами, чтоб свои добавить (hide_dubl)