Доброго часу доби шановний відвідувач.
Всі ми знаємо що в opencart опції в картці товару, за замовчуванням не відмічені і коли покупець робить покупку в вашому магазині то йому потрібно вручну вказати потрібний параметр опції, тобто вибрати потрібну опцію, (за умови що ця опція присутня в картці товару і у неї зазначено обов'язковий вибір).
Але що ж робити якщо ви хочете зробити так що б клієнт зайшов в картку товару і перші опції були вже автоматично відзначені.
В принципі складного тут нічого немає, і в даній статті ми сьогодні навчимося робити так щоби опції в товарі були відразу відзначені автоматично.
Для виконання даного завдання все що нам потрібно так це змінити кілька ділянок коду в шаблоні вашого магазину, а саме в файлі:
1 |
catalog/view/theme/default/template/product/product.tpl |
Всі маніпуляції я буду робити на шаблоні за замовчуванням, тому якщо у вас шаблон сильно відрізняється від шаблону за замовчуванням, то можливо вам доведеться робити трохи все по іншому, але головний принцип завжди залишається той же самий!
Отже давайте вже приступимо до нашого завдання і налаштуємо нашу картку товару відразу з зазначеними опціями.
У магазині використовуються кілька варіантів опцій, але ми будемо змінювати найпопулярніші варіанти опцій з розділу "вибір" , а саме список, перемикач, прапорець і зображення.
Але давайте все по порядку.
1. Випадаючий список
Ну тут все просто, знайдіть в файлі рядок:
1 |
<option value=""><?php echo $text_select; ?></option> |
І закоментуйте його або просто видаліть, тим самим ви приберете перший параметр зі списку (--- Виберіть ---), і на першому місці буде відображатися саме перша опція зі списку з меншим порядком сортування.
2. Перемикач (Радіокнопка)
Ну тут трохи все складніше, для того щоб відзначити саме першу опцію нам потрібно зробити так щоб система могла вирахувати цю найпершу опцію.
Опції radio button формуються циклом foreach, нам же потрібно вирахувати саме перший елемент в масиві і дописати йому checked в input.
І так знаходимо код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?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 } ?> |
І замінимо його на:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<?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 Buttons
3. Прапорець (checkbox)
Якщо ви хочете відзначити відразу всі прапорці даної опції, то просто додаєте "checked" в коді виведення даного типу опції, що б вийшло так:
1 |
<input type="checkbox" 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 /> |
Якщо ж вам потрібно відзначити тільки перший чебокс, в першій опції поставити галочку, то вам буде потрібно виконати теж саме що і з опцією перемикач а саме:
Знаходимо код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?php if ($option['type'] == 'checkbox') { ?> <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="checkbox" 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 } ?> |
і замінюємо його на наступний:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<?php if ($option['type'] == 'checkbox') { ?> <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="checkbox" 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="checkbox" 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 } ?> |
Тепер ви вже знаєте як зробити зазначену опцію чебокс, тепер давайте зробимо ще варіант із зображеннями.
4. Зображення
Тут нам потрібно проробити в принципі теж саме що і в опціях прапорець і перемикач, тільки код буде виглядати трішки по іншому так як тут ще виводяться фото опцій.
І так, знову ж знаходимо код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?php if ($option['type'] == 'image') { ?> <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 /> <table class="option-image"> <?php foreach ($option['option_value'] as $option_value) { ?> <tr> <td style="width: 1px;"><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']; ?>" /></td> <td><label for="option-value-<?php echo $option_value['product_option_value_id']; ?>"><img src="<?php echo $option_value['image']; ?>" alt="<?php echo $option_value['name'] . ($option_value['price'] ? ' ' . $option_value['price_prefix'] . $option_value['price'] : ''); ?>" /></label></td> <td><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></td> </tr> <?php } ?> </table> </div> <br /> <?php } ?> |
і замінюємо його на код нижче:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
<?php if ($option['type'] == 'image') { ?> <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 /> <table class="option-image"> <?php $i = 0; $len = count($option['option_value']); foreach ($option['option_value'] as $option_value) { if ($i == 0) {?> <tr> <td style="width: 1px;"><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 /></td> <td><label for="option-value-<?php echo $option_value['product_option_value_id']; ?>"><img src="<?php echo $option_value['image']; ?>" alt="<?php echo $option_value['name'] . ($option_value['price'] ? ' ' . $option_value['price_prefix'] . $option_value['price'] : ''); ?>" /></label></td> <td><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></td> </tr> <?php } else { ?> <tr> <td style="width: 1px;"><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']; ?>" /></td> <td><label for="option-value-<?php echo $option_value['product_option_value_id']; ?>"><img src="<?php echo $option_value['image']; ?>" alt="<?php echo $option_value['name'] . ($option_value['price'] ? ' ' . $option_value['price_prefix'] . $option_value['price'] : ''); ?>" /></label></td> <td><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></td> </tr> <?php } $i++; }?> </table> </div> <br /> <?php } ?> |
Ну ось в принципі і все що нам було потрібно зробити, даний метод працює на всіх версіях opencart версій 1.5 .... для другої версії в принципі теж варіант підходить але там потрібно буде трішки інший код, загалом пробуйте, тестуйте, задавайте питання по можливості відповімо.
Немає коментарів
Ви можете залишити коментар першим.