Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

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


mazein
 Поделиться

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

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

Модуль такой есть, называется 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 месяцев спустя...
  • 2 недели спустя...

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

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

  • 3 месяца спустя...
  • 1 месяц спустя...

Спасибо автору. Работает на манимейкере 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
Ссылка на комментарий
Поделиться на других сайтах

  • 7 месяцев спустя...
  • 2 недели спустя...
  • 2 месяца спустя...
В 04.12.2016 в 18:17, teslaS сказал:

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

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

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


Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...

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

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