loony +11


loony

Партнер-эксперт: http://experts.webasyst.ru/directory/960290/megawebsite/ Партнер-эксперт

  • loony loony 26 октября 2020 20:07 #

    можно. телеграм: @webimperia

    в ответ на Реферальная прогрмма

  • loony loony 11 марта 2020 03:59 #

    обычно в вебмастере -> Турбо добавляю их руками

    в ответ на Турбо страницы для статических страниц

  • loony loony 1 февраля 2020 21:51 #

    Если кому интересно. 

    Привязка корзины идет к домену: витрины на поддоменах => разные корзины. 

    А если витрины как поселения делать в папках, то корзина единая. 

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

    в ответ на Проверка остатка на складе товара в корзине при смене витрины?

  • loony loony 1 февраля 2020 20:09 #

    спасибо за ответ! очень помогли!

    серьёзно: разве при смене витрины со своим складом корзина не должна проверяться по остаткам? "мультицены", "seo-регионы" передают всё накиданное. 

    если это не баг, а фича, то буду тупо обнулять с предварительным "ахтунгом", но неужели никто не натыкался на эту проблему?

    в ответ на Проверка остатка на складе товара в корзине при смене витрины?

  • loony loony 10 февраля 2019 16:38 #

    на лицензии, а главное на хостинге больше потеряете. ну и доработки там через Ж, программисты цены ломить будут.

    а для поиска были плагины. опять-таки поиск от Яндекса или Googl можно поставить.

    в ответ на Проблемы с поиском.

  • loony loony 10 февраля 2019 16:31 #

    Выбор значения из списка (select):Текст

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

    в ответ на Экспорт характеристик товаров

  • loony loony 10 февраля 2019 16:22 #

    Та же проблема была. Решили присваиванием тегов и отдельным окном поиска по тегам. Поиск тут шибко "умный" настраивается "гибко" и чем больше слов в запросе, тем больше мусора в выдаче (потому как поиск по части слова).

    В опенкарте не меньше косяков (начиная с шаблонов и админки)

    в ответ на Проблемы с поиском.

  • loony loony 21 декабря 2018 17:14 #

    Спасибо! заработало!

    в ответ на Как получить список имен тегов (магазин)?

  • loony loony 21 декабря 2018 14:35 #

    немного не то, это вывод в шаблоне. а мне нужно переменную такую получить. как склеить это в переменную в php примерно понимаю, а в Smarty как?

    я эту строку передаю в js. типа подсказка при вводе.

    в ответ на Как получить список имен тегов (магазин)?

  • loony loony 25 августа 2018 15:27 #

    выкручиваемся созданием нового заказа с товаром "Доплата" и номером заказа с предоплатой. но это отразится на отчётах и статистике.

    провести же оплату по тому же заказу невозможно (печать "оплачено" не пущает, особенно после он-лайн оплаты)

    в ответ на Предоплата

  • loony loony 4 августа 2018 02:31 #

    после обновления ссылка стала нормально создаваться, но сообщения так и не приходят

    в ответ на Не приходят сообщения ВК

  • loony loony 19 июля 2018 02:27 #

    вопрос снимается. в админке Задарма нужно поставить галочки ко всем статусам. по-умолчанию стоит только первая. для нашей CRM нет там инструкции, а телепатию не все развили.

    в ответ на Плагин CRM Zadarma не работает

  • loony loony 5 апреля 2018 16:33 #

    Сама спросила - сама отвечаю. Это Smarty корявит доп. параметры. Наверняка можно как-то поправить в конфигурации, но быстрее и проще приписать к переменной: |unescape:"html"

    пример (доп. параметр "anons"):

    {$p.anons|unescape:"html"}

    про |escape знала, а про unescape только сейчас нарыла.


    При всём уважении к Genasyst (отличные плагины!), покупать плагин не единственный выход )))

    в ответ на Дополнительные параметры с html тегами

  • loony loony 5 апреля 2018 15:37 #

    и как оно решит? внезапно начнёт движок воспринимать текст как html? но содержание страницы же как-то с вёрсткой съедает! мне не нужно управление доп. параметрами, мне нужно только, чтобы шаблон скушал доп. параметр как html, а не текст.

    в описании плагина я не вижу данной функции.

    в ответ на Дополнительные параметры с html тегами

  • loony loony 31 марта 2018 21:32 #

    если менять в файле роутинга приложения, то как только удаляю category/, сразу перестают работать ссылки товара. как понимаю, по этой маске создания пути категории генерируются страницы товара. т.е. сам товар ну нужное место (без product) — делается, но как только удаляешь category/, движок начинает думать, что тип формирования не тот, что нам нужен (а нужен плоский, только без этого мусора).

    кто-нибудь решил это???

    в ответ на Как убрать /category/ из URL в WebAsyst shop-script 5 - 6 - 7

  • loony loony 3 февраля 2018 20:09 #

    та же фигня просто в приложении сайт (карта в теме выводится в контактах). похоже, что это из-за https.

    как и где это можно поправить?

    в ответ на Контакты PRO и Google Map

  • loony loony 1 декабря 2017 17:03 #

    УРА! нашла виновника! оказалось, плагин виноват. он был не обновлён, может обновление и поможет, но слила его нафиг, всё-равно не пользуемся.
    «Google Tag Manager и Enhanced Ecommerce»

    в ответ на перестали открываться заказы в админке => ошибка 500 и печатная версия (SS 6)

  • loony loony 1 декабря 2017 16:53 #

    когда начался косяк - все были установлены.

    потом откатили на 3 дня, потом ещё на 3 дня. откатывали с полным затиранием.

    в ответ на перестали открываться заказы в админке => ошибка 500 и печатная версия (SS 6)

  • loony loony 30 ноября 2017 22:45 #

    сравнивала конфигурацию серваков (с ошибкой и работающий) - разницы нет.


    в ответ на перестали открываться заказы в админке => ошибка 500 и печатная версия (SS 6)

  • loony loony 30 ноября 2017 22:44 #

    На др. аккаунте (др. сервак) того же хостинга работает. Ставили https, работало после этого норм, сжатие и ускорение (отключили уже). Это из последних манипуляций на хостинге. на серваке были сбои.

    php 7.1

    с 182 по 192 строку:

    <?php echo $_smarty_tpl->tpl_vars['wa']->value->shop->orderId($_smarty_tpl->tpl_vars['order']->value['id']);?>


    <i class="icon16 loading" style="display:none"></i>


    <!-- plugin hook: 'backend_order.title_suffix' -->

    <?php if (!empty($_smarty_tpl->tpl_vars['backend_order']->value)){?><?php $_smarty_tpl->tpl_vars['_'] = new Smarty_Variable; $_smarty_tpl->tpl_vars['_']->_loop = false;

    $_from = $_smarty_tpl->tpl_vars['backend_order']->value; if (!is_array($_from) && !is_object($_from)) { settype($_from, 'array');}

    foreach ($_from as $_smarty_tpl->tpl_vars['_']->key => $_smarty_tpl->tpl_vars['_']->value){

    $_smarty_tpl->tpl_vars['_']->_loop = true;

    ?><?php echo ifset($_smarty_tpl->tpl_vars['_']->value['title_suffix']);?>

    <?php } ?><?php }?>

    в ответ на перестали открываться заказы в админке => ошибка 500 и печатная версия (SS 6)

  • loony loony 14 ноября 2017 18:41 #

    как раз похожее пытаюсь сделать. нужное оно. но ещё бы как-то прицепить возможность "подарка". не скидки, а товар какой-нибудь в подарок.

    в ответ на Колесо фортуны. Случайный купон на скидку.

  • loony loony 18 сентября 2017 23:23 #

    указали бы контакты какие-нибудь, мне интересно такое.

    в ответ на Ищем человека на постоянную поддержку интернет-магазина

  • loony loony 18 сентября 2017 23:21 #

    Игнорируют косяк до сих пор!

    в ответ на Импорт артикулов нет изображений

  • loony loony 18 сентября 2017 15:39 #

    кусок из product.html:


    	{if $product.images}
    						<div class="product-gallery text-center">
    							<!-- Big foto -->
    
    							<div class="image" data-number="1" id="product-core-image">
    								{$wa->shop->badgeHtml($product.badge)}
    								{if $theme_settings.product_zoom}
    								<a href="{$wa->shop->productImgUrl($product, '970')}" title="{foreach $product.images as $d}{$d.description|escape}{/foreach}">{$wa->shop->productImgHtml($product, $theme_settings.product_image_size, [ class => 'zoom-image-elevate',  'data-zoom-image' => $wa->shop->productImgUrl($product, "970"), 'itemprop' => 'image', 'id' => 'product-image', 'alt' => $product.name|escape])}</a>
    								<div class="descr">
    								<!-- подпись под большим фото слайдера -->
    									
    						
    								</div>
    								{else}
    								<a href="{$wa->shop->productImgUrl($product, '970')}" title="{foreach $product.images as $d}{$d.description|escape}{/foreach}">{$wa->shop->productImgHtml($product, $theme_settings.product_image_size, [ 'itemprop' => 'image', 'id' => 'product-image', 'alt' => $product.name|escape])}</a>
    								<div class="descr">{$d.description|escape}232</div>
    								{/if}
    								<div id="switching-image" style="display: none;"></div>
    								<div class="image-hint"><i class="fa fa-search"></i> Нажмите на изображение чтобы прочитать описание начинки</div>
    							</div>
    
    
    							<!-- Preview -->
    							{if count($product.images) > 1 || (count($product.images) === 1 && $video)}
    							<div class="more-images" id="product-gallery">
    								{foreach $product.images as $image}
    								<div class="push-to-fancybox image{if $image.id == $product.image_id} selected{/if}">
    									<a data-fancybox-group="thumb" data-number="{$image@iteration}" id="product-image-{$image.id}" href="{$wa->shop->imgUrl($image, '970')}" class="fancybox-open"{if $image.description} title="{$image.description|escape}"{/if}>
    									{$wa->shop->imgHtml($image, '96x96', [ 'alt' => $product.name|escape])}
    									</a>
    								</div>
    								{/foreach}
    
    								{if $video}
    								<div class="image video">
    									<a id="product-image-video" href="{$video.url}">
    										<img src="{$video.images[0]}" alt="{$product.name|escape}">
    									</a>
    								</div>
    								{/if}
    							</div>
    							{/if}
    
    						</div>
    						{else}
    						<div class="product-gallery" id="product-core-image">
    							<img src="{$wa_theme_url}img/no-foto.gif">
    						</div>
    						{/if}


    а это полностью product.js

    var MatchMedia = function (media_query) {
        var matchMedia = window.matchMedia,
            is_supported = (typeof matchMedia === "function");
        if (is_supported && media_query) {
            return matchMedia(media_query).matches
        } else {
            return false;
        }
    };
    
    function Product(form, options) {
        this.form = $(form);
        this.add2cart = this.form.find(".add2cart");
        this.button = this.add2cart.find("button[type=submit]");
        for (var k in options) {
            this[k] = options[k];
        }
        var self = this;
        // add to cart block: services
        this.form.find(".services input[type=checkbox]").click(function () {
            var obj = $('select[name="service_variant[' + $(this).val() + ']"]');
            if (obj.length) {
                if ($(this).is(':checked')) {
                    obj.removeAttr('disabled');
                } else {
                    obj.attr('disabled', 'disabled');
                }
            }
            self.updateServicePrice();
        });
    
        this.form.find(".services .service-variants").on('change', function () {
            self.updateServicePrice();
        });
    
        this.form.find('.inline-select a').click(function () {
            var d = $(this).closest('.inline-select');
            d.find('a.selected').removeClass('selected');
            d.find(".sku-selectable").html($(this).data("name"));
            $(this).addClass('selected');
            d.find('.sku-feature').val($(this).data('value')).change();
    
            return false;
        });
    
        this.form.find(".skus input[type=radio]").click(function () {
            if ($(this).data('image-id')) {
                $("#product-image-" + $(this).data('image-id')).click();
                var jump = $("#product-image-" + $(this).data('image-id')).data("slide");
                $(".product-dialog-image").trigger("owl.jumpTo", jump);
            }
            if ($(this).data('disabled')) {
                self.button.attr('disabled', 'disabled');
                self.button.addClass('disabled');
                $(".one-click").hide();
            } else {
                self.button.removeAttr('disabled');
                self.button.removeClass('disabled');
                $(".one-click").show();
            }
            var sku_id = $(this).val();
            self.updateSkuServices(sku_id);
            self.updatePrice();
        });
        var $initial_cb = this.form.find(".skus input[type=radio]:checked:not(:disabled)");
        if (!$initial_cb.length) {
            $initial_cb = this.form.find(".skus input[type=radio]:not(:disabled):first").prop('checked', true).click();
        }
        $initial_cb.click();
    
        this.form.find(".sku-feature").change(function () {
            var key = "";
            self.form.find(".sku-feature").each(function () {
                key += $(this).data('feature-id') + ':' + $(this).val() + ';';
            });
            var sku = self.features[key];
            if (sku) {
                if (sku.image_id) {
                    $("#product-image-" + sku.image_id).click();
                    var jump = $("#product-image-" + sku.image_id).data("slide");
                    $(".product-dialog-image").trigger("owl.jumpTo", jump);
                }
                self.updateSkuServices(sku.id);
                if (sku.available) {
                    self.button.removeAttr('disabled');
                    self.button.removeClass('disabled');
                    $(".one-click").show();
                } else {
                    self.form.find("div.stocks div").hide();
                    self.form.find(".sku-no-stock").show();
                    self.button.attr('disabled', 'disabled');
                    self.button.addClass('disabled');
                    $(".one-click").hide();
                }
                self.add2cart.find(".price").data('price', sku.price);
                self.updatePrice(sku.price, sku.compare_price);
            } else {
                self.form.find("div.stocks div").hide();
                self.form.find(".sku-no-stock").show();
                self.button.attr('disabled', 'disabled');
                self.button.addClass('disabled');
                self.add2cart.find(".compare-at-price").hide();
                self.add2cart.find(".price").empty();
                $(".one-click").show();
    
            }
    
        });
        this.form.find(".sku-feature:first").change();
    
        if (!this.form.find(".skus input:radio:checked").length) {
            this.form.find(".skus input:radio:enabled:first").attr('checked', 'checked');
        }
    
        this.form.submit(function () {
            var f = $(this);
    
            $.post(f.attr('action') + '?html=0', f.serialize(), function (response) {
                f.find('.adding2cart').hide();
                if (response.status == 'ok') {
                    $(".priceblock").fadeOut('fast', function () {
                        $(this).fadeIn('fast', function () {
                        });
                    });
                    $(".cart-count").html(response.data.count);
                    $(".cart-total").html(response.data.total);
    
                    if ($(".bottom-bar .cart-block").is(':visible')) {
                        var cart = $('.bottom-bar .cart-block');
                    } else if ($(".mobile-cart-fly").is(':visible')) {
                        var cart = $('.mobile-cart-fly');
                    } else {
                        var cart = $('.header .cart-block');
                    }
    
                    var imgtodrag = $("#product-core-image");
    
                    if (imgtodrag) {
                        var origin = imgtodrag;
                        var block = $('<div class="clone"></div>').append(origin.html());
                        $('.dialog').fadeOut();
                        block.css({
                            'z-index': 100500,
                            background: '#fff',
                            top: origin.offset().top,
                            left: origin.offset().left,
                            width: origin.width() + 'px',
                            height: origin.height() + 'px',
                            position: 'absolute',
                            overflow: 'hidden'
                        }).appendTo('body').css({
                            'border': '1px solid #eee',
                            'padding': '0',
                            'text-align': 'left',
                            'background': '#fff'
                        }).animate({
                            top: cart.offset().top,
                            left: cart.offset().left,
                            width: '10px',
                            height: '10px',
                            opacity: 0.7
                        }, 700, function () {
                            $('.dialog').find('.dialog-cart').empty();
                            $(this).remove();
                        });
                    }
    
                    if ($(".bottom-bar .cart-block").is(':visible')) {
                        popoverShow(".bottom-bar .cart-block a", "Добавлен в корзину");
                    } else if ($(".mobile-cart-fly").is(':visible')) {
                        popoverShow(".bottom-bar .mobile-cart-fly", "Добавлен в корзину");
                    }
    
                    blink(cart);
    
                    if (response.data.error) {
                        getAlert(response.data.error);
                    }
                } else if (response.status == 'fail') {
                    getAlert(response.errors);
                    $.post(f.attr("action").replace("add", "save"), function (response) {
                        $(".cart-count").html(response.data.count);
                        $(".cart-total").html(response.data.total);
                    });
                }
            }, "json");
    
            return false;
        });
    
    }
    
    Product.prototype.currencyFormat = function (number, no_html) {
        // Format a number with grouped thousands
        //
        // +   original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
        // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
        // +	 bugfix by: Michael White (http://crestidg.com)
    
        var i, j, kw, kd, km;
        var decimals = this.currency.frac_digits;
        var dec_point = this.currency.decimal_point;
        var thousands_sep = this.currency.thousands_sep;
    
        // input sanitation & defaults
        if (isNaN(decimals = Math.abs(decimals))) {
            decimals = 2;
        }
        if (dec_point == undefined) {
            dec_point = ",";
        }
        if (thousands_sep == undefined) {
            thousands_sep = ".";
        }
    
        i = parseInt(number = (+number || 0).toFixed(decimals)) + "";
    
        if ((j = i.length) > 3) {
            j = j % 3;
        } else {
            j = 0;
        }
    
        km = (j ? i.substr(0, j) + thousands_sep : "");
        kw = i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + thousands_sep);
        //kd = (decimals ? dec_point + Math.abs(number - i).toFixed(decimals).slice(2) : "");
        kd = (decimals && (number - i) ? dec_point + Math.abs(number - i).toFixed(decimals).replace(/-/, 0).slice(2) : "");
    
    
        var number = km + kw + kd;
        var s = no_html ? this.currency.sign : this.currency.sign;
        if (!this.currency.sign_position) {
            return s + this.currency.sign_delim + number;
        } else {
            return number + this.currency.sign_delim + s;
        }
    };
    
    
    Product.prototype.serviceVariantHtml = function (id, name, price) {
        return $('<option data-price="' + price + '" value="' + id + '"></option>').text(name + ' (+' + this.currencyFormat(price, 1) + ')');
    };
    
    Product.prototype.updateSkuServices = function (sku_id) {
        this.form.find("div.stocks div").hide();
        this.form.find(".sku-" + sku_id + "-stock").show();
        for (var service_id in this.services[sku_id]) {
            var v = this.services[sku_id][service_id];
            if (v === false) {
                this.form.find(".service-" + service_id).hide().find('input,select').attr('disabled', 'disabled').removeAttr('checked');
            } else {
                this.form.find(".service-" + service_id).show().find('input').removeAttr('disabled');
                if (typeof (v) == 'string') {
                    this.form.find(".service-" + service_id + ' .service-price').html(this.currencyFormat(v));
                    this.form.find(".service-" + service_id + ' input').data('price', v);
                } else {
                    var select = this.form.find(".service-" + service_id + ' .service-variants');
                    var selected_variant_id = select.val();
                    for (var variant_id in v) {
                        var obj = select.find('option[value=' + variant_id + ']');
                        if (v[variant_id] === false) {
                            obj.hide();
                            if (obj.attr('value') == selected_variant_id) {
                                selected_variant_id = false;
                            }
                        } else {
                            if (!selected_variant_id) {
                                selected_variant_id = variant_id;
                            }
                            obj.replaceWith(this.serviceVariantHtml(variant_id, v[variant_id][0], v[variant_id][1]));
                        }
                    }
                    this.form.find(".service-" + service_id + ' .service-variants').val(selected_variant_id);
                }
            }
        }
    };
    Product.prototype.updatePrice = function (price, compare_price) {
        if (price === undefined) {
            var input_checked = this.form.find(".skus input:radio:checked");
            if (input_checked.length) {
                var price = parseFloat(input_checked.data('price'));
                var compare_price = parseFloat(input_checked.data('compare-price'));
            } else {
                var price = parseFloat(this.add2cart.find(".price").data('price'));
            }
        }
    
        if(undefined === compare_price) {
            this.add2cart.find(".saving").hide();
            this.add2cart.find(".compare-at-price").hide();
        } else {
            this.add2cart.find(".saving").show();
            this.add2cart.find(".compare-at-price").show();
        }
        if (compare_price) {
            this.add2cart.find(".compare-at-price").html(this.currencyFormat(compare_price)).show();
            this.add2cart.find(".saving").show().find(".pricenum").html(this.currencyFormat(compare_price - price));
            var savingpercent = Math.round(100 - (price / compare_price) * 100) + "%";
            this.add2cart.find(".saving").find(".pricepercent").html(savingpercent);
    
        } else if (compare_price == 0) {
    
            this.add2cart.find(".compare-at-price").hide();
            this.add2cart.find(".saving").hide();
    
        } else {
    
        }
    
        var self = this;
        this.form.find(".services input:checked").each(function () {
            var s = $(this).val();
            if (self.form.find('.service-' + s + '  .service-variants').length) {
                price += parseFloat(self.form.find('.service-' + s + '  .service-variants :selected').data('price'));
            } else {
                price += parseFloat($(this).data('price'));
            }
        });
        this.add2cart.find(".price").html(this.currencyFormat(price));
    };
    
    Product.prototype.updateServicePrice = function (price, compare_price) {
        if (price === undefined) {
            var input_checked = this.form.find(".skus input:radio:checked");
            if (input_checked.length) {
                var price = parseFloat(input_checked.data('price'));
            } else {
                var price = parseFloat(this.add2cart.find(".price").data('price'));
            }
        }
    
        var self = this;
        this.form.find(".services input:checked").each(function () {
            var s = $(this).val();
            if (self.form.find('.service-' + s + '  .service-variants').length) {
                price += parseFloat(self.form.find('.service-' + s + '  .service-variants :selected').data('price'));
            } else {
                price += parseFloat($(this).data('price'));
            }
        });
        this.add2cart.find(".price").html(this.currencyFormat(price));
    };
    
    
    var isiPad = navigator.userAgent.match(/iPad/i) != null;
    if (typeof zoomtype === "undefined") {
        var zoomtype = true;
    }
    var zoomConfig = {cursor: 'crosshair', scrollZoom: zoomtype};
    var zoomImage = $('#product-image');
    
    function resizeZoom() {
        if (isiPad === false) {
            if ($("body").width() > 748) {
                $(".zoom-image-elevate").elevateZoom(zoomConfig);
            } else {
                $('.zoomContainer').remove();
                zoomImage.removeData('elevateZoom');
            }
        }
    }
    
    resizeZoom();
    
    $(window).resize(function () {
        resizeZoom();
    });
    // product image video
    $('#product-image-video').click(function () {
        $('#product-core-image').hide();
        $('#video-container').fadeIn(300);
        $('.product-gallery .image').removeClass('selected');
        $(this).parent().addClass('selected');
        $('.zoomContainer').remove();
        zoomImage.removeData('elevateZoom');
        return false;
    });
    
    $("#product-gallery a").not('#product-image-video').click(function () {
        var th = $(this);
        $('#product-core-image').show();
        $('#video-container').hide();
        $('.product-gallery .image').removeClass('selected');
        $(this).parent().addClass('selected');
    
        $("#switching-image").show();
        $('.zoomContainer').remove();
        zoomImage.removeData('elevateZoom');
    
        var img = $(this).find('img');
        var size = $("#product-image").attr('src').replace(/^.*\/[^\/]+\.(.*)\.[^\.]*$/, '$1');
        var src = img.attr('src').replace(/^(.*\/[^\/]+\.)(.*)(\.[^\.]*)$/, '$1' + size + '$3');
        $("#product-core-image img").hide();
    
        $("#product-core-image").attr("data-number", th.attr("data-number"));
    
    
        var size = $("#product-image").parent().attr('href').replace(/^.*\/[^\/]+\.(.*)\.[^\.]*$/, '$1');
        var href = img.attr('src').replace(/^(.*\/[^\/]+\.)(.*)(\.[^\.]*)$/, '$1' + size + '$3');
    
        // Check zoom
        if (isiPad === false) {
            if ($('#product-image').hasClass("zoom-image-elevate")) {
                if ($("body").width() > 748) {
                    zoomImage.data('zoom-image', href);
                    zoomImage.elevateZoom(zoomConfig);
                }
            }
        }
        $("#product-core-image img").show();
    
    
        $('<img>').attr('src', src).load(function () {
            $("#product-image").attr('src', src);
            $("#product-image").removeClass('blurred');
            $("#switching-image").hide();
        });
    
    
        $("#product-image").parent().attr('href', href);
    
    
        return false;
    });
    
    $("#product-core-image a").click(function () {
        var nn = $("#product-gallery .image.selected").find("a").data("number");
        getBigPicture(nn - 1);
        return false;
    });
    
    function getBigPicture(nn) {
        var photos = new Array();
    
        var lt = $(".more-images .push-to-fancybox a").length;
    
        $(".more-images .push-to-fancybox a").each(function (key) {
            key = key + 1;
            href = $(this).attr("href");
            title = $(this).attr("title");
            if (title) {
                photos.push({'href': href, 'title': key + '/' + lt + ' ' + title})
            } else {
                photos.push({'href': href, 'title': key + '/' + lt})
            }
    
        });
    
        if (photos == 0) {
            href = $("#product-core-image").find("a").attr("href");
            title = $("#product-core-image").find("a").attr("title");
            photos.push({'href': href, 'title': title})
        }
        $.fancybox(photos, {
                maxWidth: 900,
                autoHeight: true,
                autoSize: true,
                nextClick: true,
                padding: [36, 36, 36, 36],
                margin: [10, 10, 25, 10],
                aspectRatio: true,
                prevEffect: 'none',
                nextEffect: 'none',
                index: nn,
                helpers: {
                    thumbs: {
                        width: 60,
                        height: 60
                    }
                },
                tpl: {
                    closeBtn: '<a title="Закрыть" class="fancybox-item fancybox-close" href="javascript:;"></a>',
                    next: '<a title="Следующая фотография" class="fancybox-nav fancybox-next" href="javascript:;"><span></span></a>',
                    prev: '<a title="Предыдущая фотография" class="fancybox-nav fancybox-prev" href="javascript:;"><span></span></a>'
                }
    
            }
        );
    
    }
    
    
    $(".product-nav a").click(function () {
        var link = $(this).parent("li");
        if (link) {
            var current_page = link.data("link");
            $(".product-tabs").hide();
            $("#" + current_page).show();
            $(".product-nav li").removeClass("selected");
            link.addClass("selected");
            // Mobile
            $(".panel-title a").closest(".panel-heading").removeClass("selected");
            $(".panel-title a[data-link='" + current_page + "']").closest(".panel-heading").addClass("selected");
            return false;
        }
    });
    $(".panel-title a.collapsed").click(function () {
        $(".panel.panel-default").find(".panel-heading").removeClass("selected");
        var current_page = $(this).data("link");
        $(this).closest(".panel-heading").addClass("selected");
        if (current_page) {
            $(".product-tabs").hide();
            $("#" + current_page).show();
            // Desktop tabs
            $(".product-nav li").removeClass("selected");
            $(".product-nav li[data-link='" + current_page + "']").addClass("selected");
    
            // Scroll to tabs
            jQuery.scrollTo("#" + current_page, 1000, {axis: 'y'});
            return false;
        }
    });
    
    
    if (window.location.hash) {
        jQuery.scrollTo('.product-nav', 1000, {axis: 'y'});
        $(".review-scroll a").click();
    }
    
    
    // view product
    var view = $.cookie('shop_view');
    var product_id_view = $('input[name="product_id"]').val();
    if (view) {
        view = view.split(',');
    } else {
        view = [];
    }
    var i = $.inArray(product_id_view, view);
    if (i == -1) {
        view.unshift(product_id_view);
        out_arr = [];
        if (view.length < 30) {
            out_arr_lenght = view.length;
        } else {
            out_arr_lenght = 30
        }
        for (var i = 0; i < out_arr_lenght; i++) {
            out_arr[i] = view[i];
        }
        $.cookie('shop_view', out_arr.join(","), {
            expires: 30,
            path: '/'
        });
    }
    
    $(".prev-product, .next-product").hover(function () {
        var url = $(this).find("a").attr("href");
        var image = $(this).find("a").data("image-url");
        var name = $(this).find("a").data("image-name");
        var price = $(this).find("a").data("price");
        if (image) {
            $(this).append("<div class='prev-next-image'><div class='table-cell image'><a href='"+ url +"'><img src='" + image + "'></a></div><div class='table-cell name'>" + name + "<br><b>"+ price +"</b></div></div>");
        } else {
            $(this).append("<div class='prev-next-image'><div class='table-cell name'>" + name + "<br><b>"+ price +"</b></div></div>");
        }
    }, function () {
        $(this).find("div.prev-next-image:last").remove();
    });
    
    $(".product-dialog-image").owlCarousel({
        loop: true,
        autoPlay: 15000,
        paginationSpeed: 800,
        rewindSpeed: 1000,
        items: 1,
        itemsDesktop: [1000, 1],
        itemsDesktopSmall: [900, 1],
        itemsTablet: [700, 1],
        itemsMobile: false,
        autoHeight: true,
        autoWidth: true,
        transitionStyle: "fade",
        nav: true,
        pagination: true,
        afterInit: function () {
            $(".product-dialog-image").css("display", "block");
        }
    });

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

  • loony loony 17 сентября 2017 22:24 #

    Если кому нужно бесплатно выводить поток последних записей только одного определённого блога, то решение тут:

    https://support.webasyst.ru/2574/kak-vyvesti-nuzhn...

    Если коротко, то выводим 10 последних записей из блога с id=3

    {$wa->blog->posts(3, 10)}

    в ответ на Разделение блога на новости и статьи

  • loony loony 11 сентября 2017 02:00 #

    А как это решит мою проблему? Есть артикул "по умолчанию". его фотка и высвечивается. А мне нужно, чтобы переключение фоток при выборе работало, но с самого начала (при переходе из категории) высвечивалось Первое изображение. В моём случае у Первого нет артикула.

    Всё было бы как нужно, если бы при переходе в карточку артикул по умолчанию не был бы активен.

    в ответ на Как на странице товара вывести первое изображение, а не фото артикула?

  • loony loony 11 сентября 2017 01:30 #

    Павел, вы про что? Вы описываете родной функционал, как раз то, что мне мешает?

    Николай, но в списке товаров ничего не взрывается же от того, что показана первая картинка и цена "по умолчанию".

    Не могу логику того, что мне нужно понять.

    У меня куча картинок каждая соответствует своему артикулу (все они разные виды внутренностей) и главная - основная фотка (внешний вид). Если в js убрать подстановку, то при выборе внутренностей не произойдёт смены фото.

    Т.е. можно сделать артикул с пустой ценой и внутренностями "воздух" и сделать его "по умолчанию". но это как раз бредово.

    Может, как-то можно проверять на "переход" с др. страницы?

    Похоже, придётся первую фотку отдельным блоком ставить, а внутренности уже как выбор опции (((

    Может, есть какие ещё идеи?


    в ответ на Как на странице товара вывести первое изображение, а не фото артикула?

  • loony loony 10 сентября 2017 19:53 #

    а если добавить в начало артикула символ, та же фигня?

    в ответ на Синхронизация с МойСклад: как добавить изображения?

  • loony loony 10 сентября 2017 18:34 #

    Но тогда при выборе артикула фотка меняться не будет. Можно как-то сделать, чтобы при переходе к товару не было бы активного артикула? или это тоже js?

    в ответ на Как на странице товара вывести первое изображение, а не фото артикула?

  • loony loony 2 августа 2017 16:06 #

    оптовики имеют дурацкую привычку выкладывать рекламные материалы на сайт. а те, кто выкладывает, обычно не слишком хорошо знает вёрстку и не очень любит разбираться в том, на какие кнопки жать. вот "удобно" им "положить в папку, а оно само на сайт". а я, волею судеб, не имею привычки объяснять клиентам, что им удобнее оплачивать мне за поддержку и грамотное выкладывание, а не попросить секретаря закинуть не только в папочку на сервере, но ещё и в папочку сайта.

    в ответ на Не могу вывести содержимое папки для скачивания