Jump to content
mazein

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

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

Share this post


Link to post
Share on other sites

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

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']

Share this post


Link to post
Share on other sites

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

html_entity_decode($option_value['option_checked']),

на:

(int)$option_value['option_checked'],

Share this post


Link to post
Share on other sites

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

<?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 } ?>

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Спасибо автору. Работает на манимейкере 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"; } ?>
Edited by mazein

Share this post


Link to post
Share on other sites

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

  • +1 1

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
В 04.12.2016 в 18:17, teslaS сказал:

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.