Тут без вмешательства в код ядра не обошлось, но у меня все характеристики должны быть с мультивыбором и других вариантов я не увидел, так-что хакаем ядро:
Админка1. \administrator\components\com_jshopping\controllers\products.php
Меняем строку
$obj->values = JHTML::_('select.genericlist', array_merge($f_option, $tmp), $name, '', 'id', 'name', $product->$name);
На
$selected = explode(',', $product->$name);
$obj->values = JHTML::_('select.genericlist', array_merge($f_option, $tmp), $name.'[]', 'class="inputbox" size="10" multiple="multiple"', 'id', 'name', $selected);
2. После строки
$dispatcher->trigger( 'onBeforeDisplaySaveProduct', array(&$post) );
Вставляем
$newPost = array();
foreach($post as $k => $v){
if(is_array($v) && strpos($k,'extra_field')!== false){
$newPost[$k] = implode(',', $v);
}
else{
$newPost[$k] = $v;
}
}
3. БД сделать запрос
ALTER TABLE `jos_jshopping_products` CHANGE `extra_field_1` `extra_field_1` VARCHAR( 255 ) NOT NULL
естественно поменять префикс таблиц на свой,и ко всем полям, содержащим в названии extra_field. Иначе будет запоминаться только первое выбранное значение.
Морда\components\com_jshopping\tables\product.php
foreach($fields as $field_id){
$field_name = "extra_field_".$field_id;
if ($this->$field_name!=0){
$rows[] = array("name"=>$listfield[$field_id]->name, "value"=>$fieldvalues[$this->$field_name]);
}
}
Меняем на
foreach($fields as $field_id){
$field_name = "extra_field_".$field_id;
if ($this->$field_name!=0){
//экомир добавил мультихарактеристики
$fvalues = explode(',', $this->$field_name);
if(count($fvalues)>1){
$fstring = array();
foreach($fvalues as $fvalue){
$fstring[] = $fieldvalues[$fvalue];
}
$fstring = implode(', ', $fstring);
$rows[] = array("name"=>$listfield[$field_id]->name, "value"=>$fstring);
}
else{
$rows[] = array("name"=>$listfield[$field_id]->name, "value"=>$fieldvalues[$this->$field_name]);
}
}
}
Отбор товаров по мультихарактеристикамСкоро