Jump to content
Sign in to follow this  
megrel

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

Recommended Posts

Вывел артикулы для опций. Но не получается теперь их отформатировать. Кусок опции из 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>, стирает все теги.

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

Share this post


Link to post
Share on other sites

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

что?.. :?

<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 по вкусу

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites

Посмотрите этот модуль и сделайте по аналогии. Т.е., в самом товаре добавляем параметр 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);
Edited by underline

Share this post


Link to post
Share on other sites

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

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 поменять...

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

Edited by megrel

Share this post


Link to post
Share on other sites

Решил проблему следующим образом:
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') );
     }
  })
})

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

Share this post


Link to post
Share on other sites

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

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.

Sign in to follow this  

  • 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.