public/admin/controller/catalog/product.php:1351 — вместо вывода только привязанных к товару атрибутов, теперь получает ВСЕ атрибуты из БД, сгруппированные по группам, и сопоставляет с сохранёнными значениями.
public/admin/view/template/catalog/product_form.twig:494 — вместо таблицы с автокомплитом и кнопками добавления/удаления, теперь статический вывод: группы атрибутов панелями, слева название, справа textarea. JS-код addAttribute/attributeautocomplete удалён. public/admin/model/catalog/product.php:25,183 — в addProduct() и editProduct() добавлена проверка !empty($text) — сохраняются только заполненные textarea, пустые пропускаются.
This commit is contained in:
@@ -1350,27 +1350,63 @@ if (isset($this->request->post['price_3'])) {
|
||||
|
||||
// Attributes
|
||||
$this->load->model('catalog/attribute');
|
||||
$this->load->model('catalog/attribute_group');
|
||||
|
||||
$attribute_groups = $this->model_catalog_attribute_group->getAttributeGroups();
|
||||
|
||||
$saved_attributes = array();
|
||||
|
||||
if (isset($this->request->post['product_attribute'])) {
|
||||
$product_attributes = $this->request->post['product_attribute'];
|
||||
$saved_attributes_raw = $this->request->post['product_attribute'];
|
||||
|
||||
foreach ($saved_attributes_raw as $attr_id => $attr_data) {
|
||||
if (!empty($attr_data['product_attribute_description'])) {
|
||||
$saved_attributes[] = array(
|
||||
'attribute_id' => $attr_id,
|
||||
'product_attribute_description' => $attr_data['product_attribute_description']
|
||||
);
|
||||
}
|
||||
}
|
||||
} elseif (isset($this->request->get['product_id'])) {
|
||||
$product_attributes = $this->model_catalog_product->getProductAttributes($this->request->get['product_id']);
|
||||
} else {
|
||||
$product_attributes = array();
|
||||
$saved_attributes = $this->model_catalog_product->getProductAttributes($this->request->get['product_id']);
|
||||
}
|
||||
|
||||
$data['product_attributes'] = array();
|
||||
$data['attribute_groups'] = array();
|
||||
|
||||
foreach ($product_attributes as $product_attribute) {
|
||||
$attribute_info = $this->model_catalog_attribute->getAttribute($product_attribute['attribute_id']);
|
||||
foreach ($attribute_groups as $attribute_group) {
|
||||
$attributes = $this->model_catalog_attribute->getAttributes(array(
|
||||
'filter_attribute_group_id' => $attribute_group['attribute_group_id'],
|
||||
'sort' => 'a.sort_order',
|
||||
'order' => 'ASC'
|
||||
));
|
||||
|
||||
if ($attribute_info) {
|
||||
$data['product_attributes'][] = array(
|
||||
'attribute_id' => $product_attribute['attribute_id'],
|
||||
'name' => $attribute_info['name'],
|
||||
'product_attribute_description' => $product_attribute['product_attribute_description']
|
||||
if (!$attributes) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$group_attributes = array();
|
||||
|
||||
foreach ($attributes as $attribute) {
|
||||
$text_data = array();
|
||||
|
||||
foreach ($saved_attributes as $saved) {
|
||||
if ($saved['attribute_id'] == $attribute['attribute_id']) {
|
||||
$text_data = $saved['product_attribute_description'];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$group_attributes[] = array(
|
||||
'attribute_id' => $attribute['attribute_id'],
|
||||
'name' => $attribute['name'],
|
||||
'text' => $text_data
|
||||
);
|
||||
}
|
||||
|
||||
$data['attribute_groups'][] = array(
|
||||
'name' => $attribute_group['name'],
|
||||
'attribute' => $group_attributes
|
||||
);
|
||||
}
|
||||
|
||||
// Options
|
||||
|
||||
Reference in New Issue
Block a user