Перейти к содержанию
Форум поддержки пользователей VamShop

Как сделать в VamShop 2 вывод атрибутов в виде dropdown меню (аналогично VamShop 1)!


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

Делать будем на примере умных часов.
 
 
Заменим выбор цвета в виде ссылок на dropdown меню и что б не обновлялась страница при выборе цвета, а просто можно было сразу добавить в корзину тот цвет, что выбрали.
 
Можно взять уже изменённые файлы в конце сообщения, либо самому внести указанные правки.
 
Открываем файл /app/Vendor/smarty/vam_plugins/function.attribute_list.php и меняем:
 
                {else if $attr.target=="PRODUCT_GROUP"}
<div id="spinner">
<img src="{base_path}/img/ajax-loader.gif" alt="" width="31" height="31" />
</div>
                    <script type="text/javascript"> 
                        $(document).ready(function () { 
                            global_spinner = $("#spinner");
                        });
                    </script>
 
                    <form id="set_attr_form" method="post" action={$base_content}>
                    {foreach from=$attr.element_list item=attr_element}
                        {if $attr_element@first}<ul class="specs">{/if}                     
                        <li>{if $attr_element.make}<b>{/if}
                                {$attr_element.name}:
                            {if $attr_element.make}</b>{/if}                                
                                {$attr_element.values_attribute.name}
                        <ul class="attributes">
                        {foreach from=$attr_element.group_attributes item=attr_val}                        
                            <li>
                                {if $attr_val.make}<b>{/if}
                                    <a class="confirm" href={$attr_val.content_chng_url} onclick=\'$("#attr{$attr_val.values_attribute.id}").attr("value","1");\'> {$attr_val.values_attribute.name} </a>
                                    <input id="attr{$attr_val.values_attribute.id}" name="data[set_attr][{$attr_val.values_attribute.id}]" type="hidden" />
                                {if $attr_val.make}</b>{/if}
                            </li>                          
                        {/foreach}
                        </ul>
                        </li>
                        {if $attr_element@last}</ul>{/if}                      
                    {/foreach}
                    <script type="text/javascript">
                    $(function () {      
                        $(".confirm").click(function(){            
                            var http_send = $(this).attr("href");
                            var form_data = $("#set_attr_form").serialize();
                            $.ajax({
                                    type: "POST",
                                    url: http_send,
                                    data: form_data,
                                    async: true,
                                    success: function (data, textStatus) {
                                        $("#ajaxcontent").html(data);},
                                    beforeSend: function () {
                                        global_spinner.fadeIn("fast");
                                        },
                                    complete: function () {
                                        /*global_spinner.fadeOut("slow");*/
                                        }                                                    
                                });                            
                            return false;
                        });
                    });
                    </script>
                    </form>
                {/if}              
 
 
на:
                {else if $attr.target=="PRODUCT_GROUP"}
                    {foreach from=$attr.element_list item=attr_element}
                        {if $attr_element@first}<ul class="specs">{/if}                     
                        <li>{if $attr_element.make}<b>{/if}
                                {$attr_element.name}:
                            {if $attr_element.make}</b>{/if}                                
                        <select class="form-control" name="select_attribute" id="select_attribute" title="Выберите цвет" required>
                          <option value="">Выберите цвет</option>
                          {foreach from=$attr_element.group_attributes item=attr_val}                        
                          <option value="{$attr_val.content_id}">{$attr_val.values_attribute.name}</option>
                        {/foreach}
                        </select>
                        </li>
                        {if $attr_element@last}</ul>{/if}                      
                    {/foreach}
                    <script type="text/javascript">
                    $(function () {      
                      $("#select_attribute").change(function () {
                        $("input[name=product_id]").val($(this).val());
                      });
                   
                    // validate form
                    $("#product-form{$content_id}").validate();
 
                    });
                    </script>
 
                {/if}              
 
 
 
Для того чтобы запретить добавление товара в корзину, если не выбран цвет, сделайте следующее.
 
В Админке - Оформление - Шаблоны - Шаблон карточки товара поставьте метку:
          {attribute_list}
 
над меткой:
          {/product_form}
          
Например что б получилось вот так:
          {attribute_list}
          {/product_form}
          
Вот как было:
 
post-1-0-45006600-1435682836_thumb.png
 
Вот как стало:
 
post-1-0-36697800-1435682837_thumb.png
 
Исправленный /app/Vendor/smarty/vam_plugins/function.attribute_list.php
 
Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...