Массовые характеристики чек боксы

Доброго времени суток.
Помогите решить вопросы.

  1. Раньше был такой баг. При массовом проставлении характеритик чек боксами или списками, они заполнялись по названию Например если в чек боксе выбираешь
    черный то на всех языках появлялся черный, сейчас вижу подправили и заполняется по ID что правильно. Вопрос, в каком файле исправление.

  2. Было бы удобно и правильно как в массовых характиристиках, так и в редактированиии товара выводить все характеристики (на всех языка) независимо от выбора языка.
    Сейчас заполняешь на русском, завтыкал переключить и у тебя бардак, а если бы отображались было бы сразу видно где затык.

Добрый,

  1. речь про модуль массовые операции?

  2. это плохая история) Характеристик обычно очень много и выводить их все будет трудно для восприятия, ошибки будут неизбежны, так точно делать не будем.

может вы и правы, попробуем сделать. А на счет первого вопроса?

Так не понятно про что первый вопрос, про модуль массовые операции или про редактирование товара?

Про массовые операции. У вас сейчас Выбираешь чек бокс например левое и автоматом в языках левое/ліве/left(правильно) а у меня если выбрать левое то получаешь левое/левое/левое(ошибка)

Файл \admin\nexshops\cp\src\Controller\ShopController.php
После замены почистить кеш админки \admin\nexshops\cp\var\cache\prod

спасибо

1 лайк

не помогло, посмотрите давно ли правился ShopController.php у меня датируется 31/01/2026 Либо еще где-то логика лежит(

Значит дело не в этом.

У характеристики заданы переводы на всех языках?

обижаете)) конечно все перевел, но такое впечатление что у вас по ID тянет в таблицу products_specifications название(specification) а у меня тупо на одном языке

Да, ищет id по названию значения и id характеристики.
Другой логике нет в других файлах, смотрите у себя.

Включил показ ошибок выдает такое, может быть из-за этого?
Вот строка на которую ругается
$spec_array[$pid][$groupId][$id][‘values’] = \vam_get_values_menu($enter_values, $values_select_array, ‘products_specification[p_’.$pid.‘][g_’.$groupId.‘][’ . $id . ‘][’ . $_SESSION[‘languages_id’] . ‘]’, $current_val[$pid]);

Сделал вроде. Но если не сложно скиньте 2 файла для сверки SpecificationsTools.php, ShopController.php, может у меня версия старая, с сайта скачать не получается(нет ссылок в ЛК)
В SpecificationsTools.php

Было
$values_select_array = array(
// ‘id’ => $values_data[‘specification_values_id’],
‘id’ => $clean_value,
‘text’ => $clean_value

Стало
$values_select_array = array(
‘id’ => $values_data[‘specification_values_id’],
// ‘id’ => $clean_value,
‘text’ => $clean_value
);

Было (выводило баг в dev)
$spec_array[$pid][$groupId][$id][‘values’] = \vam_get_values_menu($enter_values, $values_select_array, ‘products_specification[p_’.$pid.‘][g_’.$groupId.‘][’ . $id . ‘][’ . $_SESSION[‘languages_id’] . ‘]’, $current_val[$pid]);

Стало
$spec_array[$pid][$groupId][$id][‘values’] = \vam_get_values_menu($enter_values, $values_select_array, ‘products_specification[p_’.$pid.‘][g_’.$groupId.‘][’ . $id . ‘][’ . $_SESSION[‘languages_id’] . ‘]’, $current_val[$pid]??);

В ShopController.php
Было (глюк при заполнении)
$specValueId = \DB::queryFirstField(‘SELECT specification_values_id FROM ’ . TABLE_SPECIFICATIONS_VALUES . ’ t1 LEFT JOIN ’ . TABLE_SPECIFICATIONS_VALUES_DESCRIPTION . ’ t2 USING (specification_values_id) WHERE BINARY specification_value=%s AND specifications_id=%i’, $specValueName, $specId);

Стало(вроде норм)
$specValueId = (int)$specValueName;

Ссылки все на месте, попробуйте перезайти в акккаунт.

Как сравните файлы и замените у себя, напишите решена ли проблема.

Архив у меня с 9/03 ссылок на архив с шаблоном нету. Просто посмотрите у себя, правились ли эти файлы с этих пор (после 9 марта), если скинете 2 файла то буду признателен, я их поправил, но так чисто для успокоения сверить, что ничего не завтыкал.
SpecificationsTools.php
ShopController.php
Раньше основная логика массового обновления была не верная , сейчас у вас стала правильная по ID :ok_hand:

Раньше. Чек бокс значений. чорный/ чорний/ black
выбрали черный в массовых операциях
В базу попало черный/черный/черный

Сейчас. выбрали черный
В базу залетело чорный. чорний. black

Поменял эту часть
if ($enter_values == ‘multi’ || $enter_values == ‘checkbox’) {
while ($products_data = $dataDb2->fetch_assoc()) {
$specValueId = \DB::queryFirstField(
‘SELECT sv.specification_values_id
FROM ’ . TABLE_SPECIFICATIONS_VALUES . ’ sv
LEFT JOIN ’ . TABLE_SPECIFICATIONS_VALUES_DESCRIPTION . ’ svd
ON sv.specification_values_id = svd.specification_values_id
WHERE sv.specifications_id=%i
AND svd.language_id=%i
AND svd.specification_value=%s’,
$id,
$_SESSION[‘languages_id’],
$products_data[‘specification’]
);

$current_val[$pid] = array(
‘id’ => $specValueId ?: $products_data[‘specification’],
‘text’ => $products_data[‘specification’]
);
}
} else {
$products_data = $dataDb2->fetch_assoc();
$current_val[$pid][$lang[‘id’]] = $products_data[‘specification’];
}
}

Соответственно это

                                    $values_select_array[] = array(
									    'id' => $values_data['specification_values_id'],

// ‘id’ => $clean_value,
‘text’ => $clean_value
);
}

С этой даты, файлы

SpecificationsTools.php
ShopController.php

не правились

значит в магазине https://ns.nexoos.ru/ исправлено, а в архиве нет. Ладно, сделал, проверите у себя. Может просто внимания не оратили, т.к это только при переводе спецификаций происходит