Перейти к содержанию
mazein

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

Рекомендуемые сообщения

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

Модуль такой есть, называется 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 } ?>

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте! Подскажите есть решение для opencart 2.x?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня пока не было такой необходимости  :-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Отличное решение! 

С модулем от mpn2005 отлично работает  :eek:  

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо автору. Работает на манимейкере 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Готовый модуль для 2.x здесь.

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ocStore 1.5.5.1.2 полет нормальный ! Спасибо автору.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 04.12.2016 в 18:17, teslaS сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.