Opencart - Как Установить Значение Опции По Умолчанию В Карточке Товара (без «---выберите---»)

Тема в разделе "Установка, обновление, настройка", создана пользователем admin, 24 июн 2016.

  1. TopicStarter Overlay
    Offline

    admin Команда форума Администратор

    Сообщения:
    1.578
    Симпатии:
    22.273
    Репутация:
    124
    При наличии опции на странице товара пользователю приходится обязательно выбирать какую-то опцию, иначе товар не отправляется в корзину. Как сделать, чтобы значение опции уже было выбрано (установилось по умолчанию какое-нибудь из предлагаемых опций)

    В случае выпадающего списка (Drop-Down List)
    Удалите или закомментируйте строку в файле /catalog/view/theme/<your template>/template/product/product.tpl:

    Код:
    <?php if ($points) { ?>
            <span class="reward"><small><?//php echo $text_points; ?> <?//php echo $points; ?></small></span> <br />
            <?php } ?>
            <?php if ($discounts) { ?>
            <br />
            <div class="discount">
              <?php foreach ($discounts as $discount) { ?>
              <?php echo sprintf($text_discount, $discount['quantity'], $discount['price']); ?><br />
              <?php } ?>
            </div>
            <?php } ?>
          </div>
          <?php } ?>
          <?php if ($options) { ?>
          <div class="options">
            <h2><?php echo $text_option; ?></h2>
            <br />
            <?php foreach ($options as $option) { ?>
            <?php if ($option['type'] == 'select') { ?>
            <div id="option-<?php echo $option['product_option_id']; ?>" class="option">
              <?php if ($option['required']) { ?>
              <span class="required">*</span>
              <?php } ?>
              <b><?php echo $option['name']; ?>:</b><br />
              <select name="option[<?php echo $option['product_option_id']; ?>]" width="300px" style="width:300px;">
                <option value=""><?php echo $text_select; ?></option>
                <?php foreach ($option['option_value'] as $option_value) { ?>
    То есть просто удалим первую предлагаемую строку "--- Выберите ---" до вызова цикла foreach по всем опциям, что выбрали для этого продукта. И теперь опция с меньшим порядком сортировки будет выбранной по умолчанию.

    В случае радиокнопки (Radio Buttons) посложнее:
    Там же в шаблоне товара /catalog/view/theme/<your template>/template/product/product.tpl заменить надо кусок кода:

    Код:
            <?php if ($option['type'] == 'radio') { ?>
            <div id="option-<?php echo $option['product_option_id']; ?>" class="option">
              <?php if ($option['required']) { ?>
              <span class="required">*</span>
              <?php } ?>
              <b><?php echo $option['name']; ?>:</b><br />
              <?php foreach ($option['option_value'] as $option_value) { ?>
              <input type="radio" name="option[<?php echo $option['product_option_id']; ?>]" value="<?php echo $option_value['product_option_value_id']; ?>" id="option-value-<?php echo $option_value['product_option_value_id']; ?>" />
              <label for="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 } ?>
              </label>
              <br />
              <?php } ?>
            </div>
            <br />
            <?php } ?>

    на

    Код:
            <?php if ($option['type'] == 'radio') { ?>
            <div id="option-<?php echo $option['product_option_id']; ?>" class="option">
              <?php if ($option['required']) { ?>
              <span class="required">*</span>
              <?php } ?>
              <b><?php echo $option['name']; ?>:</b><br />
          <?php
          $i = 0;
          $len = count($option['option_value']);
          foreach ($option['option_value'] as $option_value) {
           if ($i == 0) {?>
               <input type="radio" name="option[<?php echo $option['product_option_id']; ?>]" value="<?php echo $option_value['product_option_value_id']; ?>" id="option-value-<?php echo $option_value['product_option_value_id']; ?>" checked/>
                 <label for="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 } ?>
                 </label>
                 <br />   
           <?php } else { ?>
                 <input type="radio" name="option[<?php echo $option['product_option_id']; ?>]" value="<?php echo $option_value['product_option_value_id']; ?>" id="option-value-<?php echo $option_value['product_option_value_id']; ?>" />
                 <label for="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 } ?>
                 </label>
                 <br />
           <?php }
              $i++;
          }?>
          </div>
            <br />
            <?php } ?>
    Все опции radio button формируются циклом foreach. Считаем элементы в массиве опций и первому элементу дописываем "checked" в input. Все следующие элементы без checked.