Всем привет. Что хотел сделать - есть товар, есть главные свойства (белый, квадратный) для которых представлены отдельные поля, а есть второстепенные, которые есть не у всех товаров и сбиваются в одно поле (Особенности.) С главными все ясно - в свойствах товаров добавляем отдельно каждому новое свойство, а вот для "Особенности" решил сделать так. В файле \www\admin6978\themes\default\template\controllers\products\features.tpl я сделал список с множественным выбором multiple - добавил
<select id="feature_{$available_feature.id_feature}_value" name="feature_{$available_feature.id_feature}_value" onchange="$('.custom_{$available_feature.id_feature}_').val('');" multiple>
Получилось см. фото. Как видно выбрал три позиции - "График приливов и отливов", "Компас", "Термометр". Теперь нужно обработать т.е. внести в базу выбранные свойства товаров, привязать к товару. Как я нашел, это делается в файле - \www\controllers\admin\AdminProductsController.php в блоке с 952 строки
public function processFeatures()
{
if (!Feature::isFeatureActive())
return;
if (Validate::isLoadedObject($product = new Product((int)Tools::getValue('id_product'))))
{
// delete all objects
$product->deleteFeatures();
// add new objects
$languages = Language::getLanguages(false);
foreach ($_POST as $key => $val)
{
if (preg_match('/^feature_([0-9]+)_value/i', $key, $match))
{
if ($val)
$product->addFeaturesToDB($match[1], $val);
else
{
if ($default_value = $this->checkFeatures($languages, $match[1]))
{
$id_value = $product->addFeaturesToDB($match[1], 0, 1);
foreach ($languages as $language)
{
if ($cust = Tools::getValue('custom_'.$match[1].'_'.(int)$language['id_lang']))
$product->addFeaturesCustomToDB($id_value, (int)$language['id_lang'], $cust);
else
$product->addFeaturesCustomToDB($id_value, (int)$language['id_lang'], $default_value);
}
}
}
}
}
}
else
Вот тут я застрял и понял, что на долго. Поэтому сразу пишу - каким способом можно реализовать то о чем я писал, и если я на правильном пути то как организовать здесь множественный выбор. Так как есть выбирается только одно значение (последнее выбранное). Спасибо, что дочитали. prestashop 1.6.