Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

[Поддержка] FilterPro Mega


Recommended Posts

Добрый вечер.

Хочу добавить на страницу категорий возможность выбора количества товаров, который должен складываться в корзину.

Необходимо добавить код, предложенный Tom :

В файле category.tpl

 

найти

<div class="cart">
        <input type="button" value="<?php echo $button_cart; ?>" onclick="addToCart('<?php echo $product['product_id']; ?>');" class="button" />
</div>

заменить на

<div class="cart">
     <script type="text/javascript">
     function addQtyToCart(product_id) {
  var qty = $('.item-' + product_id).val();
  if ((parseFloat(qty) != parseInt(qty)) || isNaN(qty)) {
    qty = 1;
  }
  addToCart(product_id, qty);
}
</script>
   Кол-во:
       <input type="text" value="1" size="2" class="item-<?php echo $product['product_id']; ?>" />
      <input type="button" value="<?php echo $button_cart; ?>" onclick="addQtyToCart('<?php echo $product['product_id']; ?>');" class="button" />
</div>

Код стандартного category.tpl перезаписывается кодом из файла /catalog/view/theme/default/template/module/filterpro.tpl.

 

У меня никак не получается адаптировать вышеприведённый код к коду в /catalog/view/theme/default/template/module/filterpro.tpl:

<div class="cart"><a onclick="addToCart('${product_id}');" class="button"><span><?php echo $button_cart; ?></span></a></div>

Подстановка значения ${product_id} в добавляемом коде почему-то не происходит.

Подскажите, пожалуйста, куда копать.

Разобрался сам.

<div class="cart"><a onclick="addToCart('${product_id}');" class="button"><span><?php echo $button_cart; ?></span></a></div>

Меняем на

<div class="cart">
  <input type="text" value="1" size="1" class="item-${product_id}" />
  <input type="button" value="<?php echo $button_cart; ?>" onclick="addQtyToCart('${product_id}');" class="button" />
</div>

А скрипт

<script type="text/javascript">
    function addQtyToCart(product_id) {
        var qty = $('.item-' + product_id).val();
        if ((parseFloat(qty) != parseInt(qty)) || isNaN(qty)) {
            qty = 1;
        }
        addToCart(product_id, qty);
    }
</script>

Выносим за пределы скрипта с корзиной, добавляя код в самый конец файла /catalog/view/theme/default/template/module/filterpro.tpl перед

</div>
<?php } ?>
Надіслати
Поділитися на інших сайтах


Привет.

 

У меня тут сложилась довольно интересная ситуация.

 

На сайте установлен фильтр Про. На всех браузерах работает норм. А вот на айпад эйр в браузере Сафари при выборе бренда в фильтре , и все товары становятся одинаковыми

crhby - http://prntscr.com/2dtavi

 

  сайт ifeelbe.com

  версия модуля filterpro_v2.4.2.4.2(seo)-encoded

Надіслати
Поділитися на інших сайтах

Уважаемый пользователи фильтром, кто-нить знает как сделать сортировку вывода опций и атрибутов. По умолчанию выводит атрибуты сверху фильтра, а опции внизу. Мне нужны опции сверху, а атрибуты внизу

Надіслати
Поділитися на інших сайтах


Не хватает сортировки товаров на странице фильтра по дате изменения (та, что в админке руками назначаеться):

В категориях я это реализовал вписал соответствующие изменения p.date_available

Вот как это было реализовано

Ув freelancer - помогите пожалуйста с допилом этой фичи.

Надіслати
Поділитися на інших сайтах


 

 

первый ответ в теме

 

В первом ответе по этой теме описано как убрать скобки у атрибутов, производителей и в опциях, а как убираются скобки у КАТЕГОРИЙ я не нашел.

Код формиравания строки вывода в файле filterpro.min.js для атрибутов, производителей и опций отличаеться от вывода категорий, если для первых все наглядно понятно то для категорий формирования строки вывода я не нашел ни в filterpro.min.js ни в остальных файлах фильра возможно просмотрел. К сожалению у меня сейчас нет времени разбираться в исходниках, я вас очень прошу написать где формируется строка вывода и как её исправить.

 

Зарание спасибо за понимание.

Надіслати
Поділитися на інших сайтах


Добрый день. 

Подскажите где нужно и что добавить.

 

Нужно добавить  в список товара переменной в виде названия производителя. 

Добавил , установив модуль Product Display Settings v.1.1 

 

Пока не накладываю фильтр то название выводиться, а вот после наложения фильтра на месте названия выводиться null.

 

У меня опенкар 1.5.6

Использую ваш модуль filterpro_v2.4.2.4.2(seo)-encoded

Сайт ifeelbe.com

Надіслати
Поділитися на інших сайтах

Может уже спрашивали. Как включить Html теги в описании страницы в Seo версии фильтра. когда создаю сео страницу фильтра нужно описание нормальным сделать.

Надіслати
Поділитися на інших сайтах


В первом ответе по этой теме описано как убрать скобки у атрибутов, производителей и в опциях, а как убираются скобки у КАТЕГОРИЙ я не нашел.

Код формиравания строки вывода в файле filterpro.min.js для атрибутов, производителей и опций отличаеться от вывода категорий, если для первых все наглядно понятно то для категорий формирования строки вывода я не нашел ни в filterpro.min.js ни в остальных файлах фильра возможно просмотрел. К сожалению у меня сейчас нет времени разбираться в исходниках, я вас очень прошу написать где формируется строка вывода и как её исправить.

 

Зарание спасибо за понимание.

 

Уважаемый freelancer прошу вас ответить на мой вопрос так как для меня он стал критичен!

Надіслати
Поділитися на інших сайтах


Доброго времени суток. Поздравляю всех с прошедшим Новым Годом!

 

Когда в filterpro в разделе "производители" я выбираю раздел "картинка" фильтр покрывается серым цветом и зависает - сайт работает, а вот фильтр нет. От сюда вытекает вопрос - это ошибка в фильтре или кто-то у себя тоже замечал такое странное поведение фильтра?

 

P. S. Во всех остальных опциях при выборе отображать картинкой все работает хорошо - отображаются картинки и клики по ним отрабатывают, а в производителях фильтр зависает!

Надіслати
Поділитися на інших сайтах


Огромная просьба сделать редактор ручной сортировки опций/артибутов, по алфавиту это совсем не то.

Необходимо задавать порядок вывода в фильтре аттрибутов через админку - так как порядок аттрибутов может влиять на продажи. 

 

Так же если это глобальная категория для товаров - скажем есть магазин в котором все под заказ, но есть категория "В наличии" - в ней товары из всего магазина.

Очень нужен фильтр именно по категориям для такого случая - сейчас извращаемся аттрибутами с названиями категорий.

Надіслати
Поділитися на інших сайтах


А можно ли сделать, чтобы при методе фильтрации атрибутов "И" при выборе одних атрибутов - оставшиеся   атрибуты скрывались из списка?

 

jju62WDQ.jpg

Надіслати
Поділитися на інших сайтах


var fIID = 0;
var interval = 1;
var $cookie = false;
var container = ".product-{view}";
jQuery.fn.exists = function(){return this.length > 0;}
/**
 * fixs for IE
 */
if (!Array.prototype.indexOf) {
    Array.prototype.indexOf = function(obj, start) {
        for (var i = (start || 0), j = this.length; i < j; i++) {
            if (this[i] === obj) {
                return i;
            }
        }
        return -1;
    }
}
 
function escapeHtml(text) {
  return text
      .replace(/&/g, "&")
      .replace(/</g, "<")
      .replace(/>/g, ">")
      .replace(/"/g, """)
      .replace(/'/g, "'");
}
 
String.prototype.hashCode = function(){
    var hash = 0, i, ch;
    if (this.length == 0) return hash;
    for (i = 0; i < this.length; i++) {
        ch = this.charCodeAt(i);
        hash = ((hash<<5)-hash)+ch;
        hash = hash & hash; // Convert to 32bit integer
    }
    return hash;
};
 
function getCont() {
    if ($cookie){
        var view = $cookie("display");
    }
    if (!view) {
        view = "list";
    }
    var cont = container.replace('{view}', view);
    if (!$(cont).exists()){
        cont = container.replace('{view}', 'grid');
    }
    return container.replace('{view}', view);
}
 
 
var tag_tmpl = $.template(null, '<tr><td><input id="tag_${tag}" class="filtered" type="checkbox" name="tags[]" value="${tag}" {{if checked}} checked="checked" {{/if}}></td>' +
    '<td><label for="tag_${tag}">${name}</label></td></tr>');
var cat_tmpl = $.template(null, '<tr><td><input id="cat_${category_id}" class="filtered" type="checkbox" name="categories[]" value="${category_id}" {{if checked}} checked="checked" {{/if}}></td>'+
'<td><label for="cat_${category_id}">${name}</label></td></tr>');
$(".price_limit").live("change", (function () {
    var b = parseInt($("#min_price").val());
    var a = parseInt($("#max_price").val());
    $("#slider-range").slider("values", [b, a]);
    iF()
}));
function synchronizeImgCheckboxes() {
    $("#filterpro input.filtered[type=\"checkbox\"]").each(function() {
        var $img = $(this).next('img');
        if ($img.length) {
            if ($(this).is(":checked")) {
                $img.addClass("selected");
            } else {
                $img.removeClass("selected");
            }
        }
    });
}
$("#filterpro .filtered").live("change", (function () {
    iF();
}));
$(function () {
    $("#slider-range").slider({range:true, min:0, max:0, values:[0, 0], stop:function (a, b) {
        iF()
    }, slide:function (a, b) {
        $("#min_price").val(b.values[0]);
        $("#max_price").val(b.values[1])
    }});
    $("#min_price").val($("#slider-range").slider("values", 0));
    $("#max_price").val($("#slider-range").slider("values", 1))
});
function iF() {
    clearTimeout(fIID);
    $("#filterpro_page").val(0);
    fIID = setTimeout("doFilter(false)", interval)
}
 
function success(g, b) {
 
 
    var hash = window.location.hash.substr(1);
    var cont = getCont();
    if (g.result_html /*&& hash*/) {
        $(cont).html(g.result_html);        
 
if (typeof(display) != "undefined") {
            if ($cookie) { var view = $cookie("display"); }
            if (!view) { view = "list"; }
            view ? display(view) : display("list");
}
    }
    $(".pagination").html(g.pagination);
    if (b && g.min_price == g.max_price) {
        $('.price_slider').hide();
    }
    var d = parseInt(g.min_price);
    var c = Math.ceil(parseFloat(g.max_price));
 
    if (b) {
        $("#slider-range").slider("option", {min:d, max:c});
        if ($("#max_price").val() >= 1) {
            d = parseInt($("#min_price").val());
            c = parseInt($("#max_price").val())
        }
        $("#slider-range").slider("option", {values:[d, c]});
        $("#min_price").val(d);
        $("#max_price").val(c)
    }
    if (g.totals_data) {
        if (g.totals_data.tags.length) {
            $('#filter_tags').html('');
            $.tmpl(tag_tmpl, g.totals_data.tags).appendTo('#filter_tags');
            $('#filter_tags').parents('.option_box').show();
        } else {
            $('#filter_tags').parents('.option_box').hide();
        }
 
        $('#filter_categories').html('');
        if (g.totals_data.categories.length) {
            $.tmpl(cat_tmpl, g.totals_data.categories).appendTo('#filter_categories');
            $('#filter_categories').parents('.option_box').show();
        } else {
            $('#filter_categories').parents('.option_box').hide();
        }
 
        var atts = {};
        $.each(g.totals_data.attributes, function(k, v) {
            atts[(v.id + "_" + v.text).replace(/\s/g, '_')] = v.t;
        });
 
        $('.a_name').each(function (k, v) {
            var at_v_i = $(v).attr('at_v_i').replace(/\s/g, '_');
            var at_v_i_e = escapeHtml(at_v_i);
            if (atts[at_v_i]) {
                $('[at_v_t="' + at_v_i_e + '"]').text($('[at_v_t="' + at_v_i_e + '"]').attr('data-value') + " (" + atts[at_v_i] + ")");
                $(v).removeAttr("disabled");
            } else {
                $('[at_v_t="' + at_v_i_e + '"]').text($('[at_v_t="' + at_v_i_e + '"]').attr('data-value'));
                $(v).attr("disabled", "disabled");
                $(v).removeAttr('checked');
                $(v).removeAttr(':selected');
            }
        });
 
        var h = [];
        $.each(g.totals_data.manufacturers, function (f, k) {
            if (k.id) {
                h[h.length] = k.id;
                var j = $("#manufacturer_" + k.id);
                j.removeAttr("disabled");
                if (j.get(0).tagName == "OPTION") {
                    j.text($("#m_" + k.id).val() + " (" + k.t + ")")
                } else {
                    $('label[for="manufacturer_' + k.id + '"]').text($("#m_" + k.id).val() + " (" + k.t + ")")
                }
            }
        });
        $(".manufacturer_value").each(function (f, k) {
            var j = $(this);
            var l = j.attr("id").match(/manufacturer_(\d+)/);
            if ($.inArray(l[1], h) < 0) {
                j.attr("disabled", "disabled");
                if (this.tagName == "OPTION") {
                    j.text($("#m_" + l[1]).val());
                    j.prop("selected", false)
                } else {
                    $('label[for="manufacturer_' + l[1] + '"]').text($("#m_" + l[1]).val());
                    j.prop("checked", false)
                }
            }
        });
        var e = [];
        $.each(g.totals_data.options, function (j, k) {
            if (k.id) {
                e[e.length] = k.id;
                var f = $("#option_value_" + k.id);
                if (f.length) {
                    f.removeAttr("disabled");
                    if (f.get(0).tagName == "OPTION") {
                        f.text($("#o_" + k.id).val() + " (" + k.t + ")")
                    } else {
                        $('label[for="option_value_' + k.id + '"]').text($("#o_" + k.id).val() + " (" + k.t + ")")
                    }
                }
            }
        });
        $(".option_value").each(function (j, k) {
            var f = $(this);
            var l = f.attr("id").match(/option_value_(\d+)/);
            if ($.inArray(l[1], e) < 0) {
                f.attr("disabled", "disabled");
                if (this.tagName == "OPTION") {
                    f.text($("#o_" + l[1]).val());
                    f.attr("selected", false)
                } else {
                    $('label[for="option_value_' + l[1] + '"]').text($("#o_" + l[1]).val());
                    f.attr("checked", false)
                }
            }
        })
    }
}
var cache = [];
function doFilter(b) {
    var a = $("#filterpro").serialize().replace(/[^&]+=\.?(?:&|$)/g, "").replace(/&+$/, "");
    if (!b) {
        window.location.hash = a
    }
    var h = a.hashCode();
    if (cache[h]){
        success(cache[h]);
    } else {
 
var cont = getCont();
               $.ajax({url:"index.php?route=module/filterpro/getproducts", type:"POST", data:a + (b ? "&getPriceLimits=true" : ""), dataType:"json",
            success:function (g) {
                success(g, b);
                cache[h] = g;
var cont = getCont();
$(cont).unmask();
                $(".filterpro").unmask();
            }});
    }
}
$(document).ready(function () {
    if ($.totalStorage != undefined && $.totalStorage('display') != null) {
        $cookie = $.totalStorage;
    } else if ($.cookie != undefined && $.cookie('display') != null) {
        $cookie = $.cookie;
    }
 
    $(".option_box .option_name").click(function () {
        $(this).siblings(".collapsible").toggle();
        $(this).toggleClass("hided")
    });
    $(".option_box .attribute_group_name").click(function () {
        $(this).siblings(".attribute_box").toggle();
        $(this).toggleClass("hided")
    });
    $(".clear_filter").click(function () {
        $("#filterpro img").removeClass("selected");
        $("#filterpro select").val("");
        $("#filterpro :input").each(function () {
            if ($(this).is(":checked")) {
                $(this).attr("checked", false)
            }
        });
        var b = $("#slider-range").slider("option", "min");
        var a = $("#slider-range").slider("option", "max");
        $("#slider-range").slider("option", {values:[b, a]});
        $("#min_price").val(b);
        $("#max_price").val(a);
$("div[id^=slider-range-]").each(function(index, element) {
   var id = this.id.replace(/[^\d]/g, '');
 
   var b = $(element).slider("option", "min");
   var a = $(element).slider("option", "max");
   
   hs = $(element).slider();
   hs.slider("option", {values:[b, a]});
   hs.slider("option","slide").call(hs, null, { handle: $(".ui-slider-handle", hs), values:[b, a] });
 
   $("#attribute_value_"+id+"_min").val('');
   $("#attribute_value_"+id+"_max").val('');
 
});
        iF()
    });
    $(".pagination .links a").live("click", (function () {
        var a = $(this).attr("href");
        var b = a.match(/page=(\d+)/);
        $("#filterpro_page").val(b[1]);
        doFilter(false);
        $('html, body').animate({ scrollTop: $('.product-filter').offset().top }, 'slow');
        return false;
    }));
 
    if($(".sort select").length){
        $(".sort select").get(0).onchange = null;
        $(".sort select").change(function () {
            vars = $(this).val().split("&");
            $("#filterpro_sort").val(vars[0]);
            $("#filterpro_order").val(vars[1]);
            iF()
        });
        $(".sort select option").each(function () {
            var d = $(this).val();
            var a = gUV(d, "sort");
            $(this).val(a + "&" + gUV(d, "order"))
        });
    }
 
    if ($(".limit select").length) {
        $(".limit select").get(0).onchange = null;
        $(".limit select").change(function () {
            $("#filterpro_limit").val($(this).val());
            iF()
        });
        $(".limit select option").each(function () {
            $(this).val(gUV($(this).val(), "limit"))
        });
    }
 
// deserialize
    var hash = window.location.hash.substr(1);
    if (hash && $('instock').is(':visible') && $('instock').is(':checked')) {
        $('instock').attr("checked", false);
    }
    $("#filterpro").deserialize(hash);
 
    synchronizeImgCheckboxes();
 
    $("#filterpro img").bind("click", function() {
        var $input = $(this).prev("input");
        if ($input.attr("disabled")) {
            return;
        }
        $(this).toggleClass("selected");
        $input.prop('checked', !$input.prop('checked'));
        iF();
    });
 
 
    $("div[id^=slider-range-]").each(function(index, element) {
var id = this.id.replace(/[^\d]/g, '');
var arr = window['attr_arr_'+id];
 
var b = parseInt($("#attribute_value_"+id+"_min").val());
var a = parseInt($("#attribute_value_"+id+"_max").val());
b = arr.indexOf(b);
a = arr.indexOf(a);
if (a >= 0 && b >= 0){
   hs = $(element).slider();
   hs.slider("option", {values:[b, a]});
   hs.slider("option","slide").call(hs, null, { handle: $(".ui-slider-handle", hs), values:[b, a] });
}
    });
 
    if ($(".sort select").length) {
        if ($("#filterpro_sort").val()) {
            $(".sort select").val($("#filterpro_sort").val() + "&" + $("#filterpro_order").val())
        } else {
            vars = $(".sort select").val().split("&");
            $("#filterpro_sort").val(vars[0]);
            $("#filterpro_order").val(vars[1])
        }
    }
    if ($("#filterpro_limit").length) {
        if ($("#filterpro_limit").val()) {
            $(".limit select").val($("#filterpro_limit").val())
        } else {
            $("#filterpro_limit").val($(".limit select").val())
        }
    }
    doFilter(true)
});
function gUV(e,f){var c=String(e).split("?");var a="";if(c[1]){var b=c[1].split("&");for(var g=0;g<=(b.length);g++){if(b[g]){var d=b[g].split("=");if(d[0]&&d[0]==f){a=d[1]}}}}return a}

После каких или вместо каких строк добавлять?

Надіслати
Поділитися на інших сайтах


Доброго времени суток. Подскажите, где изменить расположение цен, над слайдером в фильтре. Сам слайдер после установки выходил за пределы блока, но я нашел где изменить, а вот с ценами - не могу понять, почему они друг над другом висят, ведь не должно быть так.

 

Второй вопрос, как сделать вывод товаров как в самом шаблоне, поскольку после применения фильтра отображение товаров становится совсем другим (второй скрин).

 

P.S. смотрите прикрепленные скриншоты.

P.S.S. третий скрин - после установки.

 

Сам по себе модуль отличный! Автору большое спасибо!

post-676661-0-07168400-1389622728_thumb.jpg

post-676661-0-43771300-1389622731_thumb.jpg

post-676661-0-50091200-1389624554_thumb.jpg

Надіслати
Поділитися на інших сайтах


Доброго времени суток. Подскажите, где изменить расположение цен, над слайдером в фильтре. Сам слайдер после установки выходил за пределы блока, но я нашел где изменить, а вот с ценами - не могу понять, почему они друг над другом висят, ведь не должно быть так...

адрес магазина можно увидеть?

Надіслати
Поділитися на інших сайтах

как скрывать неактивные атрибуты(checkbox)

catalog/view/javascript/filterpro.min.js

 

Цитата

if (atts[at_v_i]) { 

     $('[at_v_t=' + at_v_i_e + ']').text($('[at_v_t=' + at_v_i_e + ']').attr('data-value') + " (" + atts[at_v_i] + ")"); 

     $(v).removeAttr("disabled"); 

     $(v).parent().parent().show();

} else { 

    $('[at_v_t=' + at_v_i_e + ']').text($('[at_v_t=' + at_v_i_e + ']').attr('data-value')); 

    $(v).attr("disabled", "disabled"); 

    $(v).parent().parent().hide();

    $(v).removeAttr('checked'); 

    $(v).removeAttr(':selected'); 

}

 

 

Скажите, пожалуйста, вместо каких или после каких строк вставлять данный код?!
Надіслати
Поділитися на інших сайтах


Почему то после фильтрации меняется отображение карты товара. Прикрепил скрин.

Заместо того что было (краткое описание) появляется слово: null

 

2e87caa58cfd.jpg

у меня та же проблема что нужно делать

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.