состояние по умолчанию настраиваемого параметра для простых продуктов
У меня есть серия продуктов с пользовательскими параметрами типа checkbox. Однако я не могу установить в настройках продукта состояние по умолчанию для этой конкретной опции.
Мне нужно, чтобы по крайней мере один из флажков (опций) был установлен по умолчанию, когда пользователь заходит на страницу товара /добавляет в корзину со страницы категории.
Выполнимо ли это со стороны администрации Magento или потребуется дополнительная разработка (если да, то как это можно сделать)?
2 answers
Я не знаю, считается ли рекомендация расширения допустимым ответом (для вопроса с вознаграждением), но кто-то утверждает здесь , что он написал расширение, которое делает именно то, что вам нужно. Расширение можно загрузить отсюда . Я еще не тестировал его, но, как только я это сделаю, я опубликую и обновлю. Я только просмотрел код, и его там очень много. Я потерял интерес после 2 файлов. Я надеюсь, что это сработает для вас.
[ РЕДАКТИРОВАТЬ]
У меня есть свой интерес назад. Я протестировал расширение на ce-1.7.0.2, и оно (почти) работает.
Если вы используете его в режиме разработчика, вы получите некоторые ошибки. Вот что вам нужно изменить, чтобы это заработало.
в /app/code/local/Magebuzz/Customoption/controllers/Adminhtml/CustomoptionController.php
в строке 28 есть следующее:
$model->setData('value['.$option_id.']',$value[0]['option_type_id']);
Это показывает предупреждение "неопределенный индекс". Чтобы избежать этого, оберните его в оператор if
.
if (isset($value[0])){
$model->setData('value['.$option_id.']',$value[0]['option_type_id']);
}
В /app/code/local/Magebuzz/Customoption/Block/Adminhtml/Customoption/Edit/Tab/Form.php
в строке 129 есть следующее:
foreach ($values as $value) {
$valuesArr[$value['option_type_id']]=$value['title'];
}
$values
может быть нулевым, поэтому измените код на этот:
if (is_array($values)){
foreach ($values as $value) {
$valuesArr[$value['option_type_id']]=$value['title'];
}
}
Теперь он должен работа.
Теперь немного обзора.
- ПРО. Отлично работает для выпадающего списка и пользовательских опций радио
- Нейротал. Вид работает для нескольких пользовательских параметров выбора и флажков. Вы можете выбрать только одно значение из доступных значений.
- Неудобно но я могу не обращать на это внимания. чтобы установить значения по умолчанию, вам нужно нажать на другой пункт меню в бэкэнде и найти свой продукт в списке.
- Кон. Это не работает для текста, текстовой области, даты, времени, времени, пользовательских параметров файла. Но с небольшой работой его можно изменить, чтобы он работал правильно для всех типов (возможно, кроме файла).
Не используется по умолчанию в Magento.
Может быть достигнуто таким образом. Лучше всего вернуться назад, прежде чем продолжить.
$option = array(
'title' => 'Your custom option title',
'type' => 'checkbox', // could be drop_down ,radio , multiple
'is_require' => 1,
'sort_order' => 0,
'values' => getOptions()
);
function getOptions(){
return array(
array(
'title' => 'Option Value 1',
'price' =>100,
'price_type' => 'fixed',
'sku' => 'any sku for 1',
'sort_order' => '1'
),
array(
'title' => 'Option Value 2',
'price' =>100,
'price_type' => 'fixed',
'sku' => 'any sku for 2',
'sort_order' => '1'
),
array(
'title' => 'Option Value 3',
'price' =>100,
'price_type' => 'fixed',
'sku' => 'any sku for 3',
'sort_order' => '1'
)
); }
//Предположим, мы создаем новый продукт.
$product = Mage::getModel('catalog/product');
$product->setProductOptions(array($option));
$product->setCanSaveCustomOptions(true);
//Или если мы добавляем опции в уже созданный продукт.
$product = Mage::getModel('catalog/product')->load($id);
$product->setProductOptions(array($option));
$product->setCanSaveCustomOptions(true);
//Не забудьте сохранить продукт
$product->save();