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

[Решено] Артикулы для опций

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

Вывел артикулы для опций. Но не получается теперь их отформатировать. Кусок опции из product.tpl:

<b><?php echo $option['name']; ?>:</b>
          
          <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 value="<?php echo $option_value['product_option_value_id']; ?>"><?php echo $option_value['name']; ?>
            
             <?php echo $option_value['o_sku']; ?>
            
            <?php if ($option_value['price']) { ?>
            (<?php echo $option_value['price_prefix']; ?><?php echo $option_value['price']; ?>)
            <?php } ?>
            </option>
            <?php } ?>
          </select>

Задача в том, чтобы при выборе опции, артикул опции заменял опцию товара. Но столкнулся с тем, что "o_sku" даже класс не задать. Все из-за <option>, стирает все теги.

Кто знает выход из ситуации?

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


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

Задача в том, чтобы при выборе опции, артикул опции заменял опцию товара.

что?.. :?

<option value="<?php echo $option_value['product_option_value_id']; ?>"><?php echo $option_value['name']; ?>
            
             <?php echo $option_value['o_sku']; ?>...
>>

<option data-super-puper-mego-sku="<?php echo $option_value['o_sku']; ?>" value="<?php echo $option_value['product_option_value_id']; ?>"><?php echo $option_value['name']; ?>...
+

google -> jquery get data-x attribute (или типа того, если нет понимания о том, что это и как).

+

jquery/javascript по вкусу

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


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

Сори, опечатался))

 

Задача в том, чтобы при выборе опции, артикул опции заменял артикул товара.

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


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

Посмотрите этот модуль и сделайте по аналогии. Т.е., в самом товаре добавляем параметр sku и присваиваем ему id, должно получится примерно так:

<span id="formated_sku" sku="<?php echo $sku; ?>"><?php echo $sku; ?></span>

Далее, добавляем в тег <option> параметр sku:

sku="<?php echo $option_value['sku']; ?>"

И добавляем имение артикула в самом скрипте:

var sku = $('#formated_sku').attr('sku');
    
    $('.option input:checked,option:selected').each(function() {
       if ($(this).attr('sku') != '') {
        sku = $(this).attr('sku');
      }
    });
    $('#formated_sku').html(sku);
Изменено пользователем underline

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


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

Спасибо за разъяснения. Но по моему вы тоже где-то опечатались)

sku - артикул товара

o_sku - артикул опции товара

 

Что у меня получилось:

1) Обернул обычный артикул

<span id="formated_sku" sku="<?php echo $sku; ?>"><?php echo $sku; ?></span>

2) <option> получился такой

<option sku="<?php echo $option_value['o_sku']; ?>" value="<?php echo $option_value['product_option_value_id']; ?>"><?php echo $option_value['name']; ?>

3) В autocalc_price_option_v2.0.18.xml после <script type="text/javascript"><!-- добавил

var sku = $('#formated_sku').attr('sku');
    
    $('.option input:checked,option:selected').each(function() {
       if ($(this).attr('sku') != '') {
        sku = $(this).attr('sku');
      }
    });
    $('#formated_sku').html(sku);

Кажется в скрипте надо где-то sku на o_sku поменять...

Такой вариант не завелся

Изменено пользователем megrel

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


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

Решил проблему следующим образом:
1) Обернул обычный артикул

<span id="formated_sku" sku="<?php echo $sku; ?>"><?php echo $sku; ?></span>

2) Меняем <option>

<option data-sku="<?php echo $option_value['o_sku'];?> " value="<?php echo $option_value['product_option_value_id']; ?>"><?php echo $option_value['name']; ?>

3) В autocalc_price_option_v2.0.18.xml добавил

$('#formated_sku').html( $('select option').first().attr('data-sku') );
  
$('select').change(function(){ 
$(this).children('option:selected').each(function(){
    if( $(this).attr('data-sku') != "  " ){
    $('#formated_sku').html($(this).attr('data-sku')) 
     }else{
     $('#formated_sku').html( $('#formated_sku').attr('sku') );
     }
  })
})

Если кому пригодится данное решение, то артикулы для опций выводил на основе этого решения. Вывод на фронт допиливал сам.

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


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

Отдельное спасибо afwollis за наводку на data атрибуты. Полезная вещь, буду теперь пользоваться)

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


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

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

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

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

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

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

Войти

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

Войти

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

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

×

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

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