Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

[Решено] Выбор нужной опции по умолчанию (vqmod)


mazein

Recommended Posts

Появилась необходимость выбрать некоторые опции товара по умолчанию, т.е. чтобы при открытии страницы с товаром какие-то конкретные опции были уже выбраны.

Модуль такой есть, называется OptionSetDefault, и он платный, стоит 10 баксов, а 10 баксов нынче дороговаты для такого простого модуля.

В итоге сделал на основе бесплатного модуля Add description to option, который выводит описание к опции.

 

Порядок установки:

1. Создать столбец option_checked в таблице префикс_product_option_value

ALTER TABLE `product_option_value`  ADD `option_checked` tinyint(1) NOT NULL;

2. Скопировать приложенный файл option_checked.xml в /vqmod/xml/

3. Скопировать option_checked.php в admin/language/russian/catalog/

4. Вставить заменяемый модулем код class="checked" (ничего лучшего так и не придумал) в файл /catalog/view/theme/default/template/product/product.tpl в вывод радиокнопки. Мне нужно было автоматом выбрать опции с изображениями, поэтому я вставил только в блоке <div class="option-image"> в строку <input type="radio", т.е. получилось <input type="radio" class="checked" name=...

 

Пример работы на картинке:

post-689859-0-01359500-1420918302_thumb.png

 

PS: не работает с модулем "связанные опции", правда этого и не надо, т.к. при выборе связанной опции, родительские опции, к которым выбранная не относится, скрываются, кто пользуется, тот поймёт.

Модуль работает на ocStore 1.5.5.1.2, на других версиях не проверял.

option_checked.zip

  • +1 2
Надіслати
Поділитися на інших сайтах

крайне рекомендую

1. переделать option_checked с varchar(3) на tinyint(1);

соответственно:

2. в шаблоне задавать 1 - да, 0 - нет.

3. в модели изменить

$this->db->escape($product_option_value['option_checked'])
>>

(int)$product_option_value['option_checked']
Надіслати
Поділитися на інших сайтах

К выше перечисленному, так же добавляю поменять:

html_entity_decode($option_value['option_checked']),

на:

(int)$option_value['option_checked'],
Надіслати
Поділитися на інших сайтах

Можно и я ? В продолжение рекомендаций

<?php if ($product_option_value['option_checked']) { ?>
                  <option value="Yes" selected="selected">Да</option>
                  <option value="">Нет</option>
                  <?php } else { ?>
                  <option value="Yes">Да</option>
                  <option value="" selected="selected">Нет</option>
                  <?php } ?>

заменить на

<?php if ($product_option_value['option_checked']) { ?>
                  <option value="1" selected="selected">Да</option>
                  <option value="0">Нет</option>
                  <?php } else { ?>
                  <option value="1">Да</option>
                  <option value="0" selected="selected">Нет</option>
                  <?php } ?>
Надіслати
Поділитися на інших сайтах

Спасибо за рекомендации, переделал в базе на числовое значение, так и хотел сделать. Все изменения внёс, проверил, всё работает.

Файл перезалил.

Надіслати
Поділитися на інших сайтах

  • 9 months later...
  • 2 weeks later...
  • 3 months later...
  • 1 month later...

Спасибо автору. Работает на манимейкере 1.9

Не получилось только выбор опции select

Прошу помощи. что делаю не так?

Заранее благодарю

 <?php if ($option['type'] == 'select') { ?>
 <div class="form-group<?php echo ($option['required'] ? ' required' : ''); ?>">
<label class="control-label" for="input-option<?php echo $option['product_option_id']; ?>"><?php echo $option['name']; ?></label>
  <select class="checked" name="option[<?php echo $option['product_option_id']; ?>]" id="input-option<?php echo $option['product_option_id']; ?>" class="form-control">
  <option value=""><?php echo $text_select; ?></option>
     <?php foreach ($option['option_value'] as $option_value) { ?>
 <option value="<?php echo $option_value['product_option_value_id']; ?>"><?php echo $option_value['name']; ?>
  <?php if ($option_value['price']) { ?>
    (<?php echo $option_value['price_prefix']; ?><?php echo $option_value['price']; ?>)
   <?php } ?>
   </option>
  <?php } ?>
    </select>
    </div>

Надіслати
Поділитися на інших сайтах


Спасибо автору. Работает на манимейкере 1.9

Не получилось только выбор опции select

Прошу помощи. что делаю не так?

Заранее благодарю

 

Как-то так:

          <select name="option[<?php echo $option['product_option_id']; ?>]">
            <option value=""><?php echo $text_select; ?></option>
            <?php foreach ($option['option_value'] as $option_value) { ?>
            <option <?php if($option_value['option_checked']==1) { echo "selected"; } ?> value="<?php echo $option_value['product_option_value_id']; ?>"><?php echo $option_value['name']; ?>
            <?php if ($option_value['price']) { ?>
            (<?php echo $option_value['price_prefix']; ?><?php echo $option_value['price']; ?>)
            <?php } ?>
            </option>
            <?php } ?>
          </select>

Конкретнее - надо вставить это условие в опцию select:

<?php if($option_value['option_checked']==1) { echo "selected"; } ?>
Змінено користувачем mazein
Надіслати
Поділитися на інших сайтах

  • 7 months later...
  • 2 weeks later...
  • 2 months later...
В 04.12.2016 в 18:17, teslaS сказал:

было бы еще замечательно если бы автоматом устанавливалось ближайшее ненулевое значение опции

Плюсую, смысл в том чтобы при нажатии "Добавить в корзину" из каталога можно было без перехода в карточку закинуть в корзину товар с дефолтной опцией. Куплю сразу же

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.