VM 2.x Модуль смены изображения при смене цвета

Не надо нервничать. Я сверил 2 архива и они оказались одинаковыми. Хотел просто задать вопрос - этот плагин у Вас работает??? Потому что

У меня изображения не меняются. В Console если посмотреть все время появляется ошибка

Uncaught ReferenceError: image_name is not defined

Сами изображения в папке images/dropboxwip формируются, но они не выводятся на сайте. В админке все настоерено одинаково. Пробовал различные варианты Image child element (div, a, img) - не помогает.

Joomla! 3.6.4 Stable
Версия PHP 5.3.29
VirtueMart 3.0.12

Пробовал на 3 сайтах данный плагин (причем один только установленный вообще пустой - конфликтов ни каких не должно быть) стоящих на 3 разных серверах - одна и та же ошибка.

Спасибо что исправили ))
 
По работоспособности этого плагина ничего не могу сказать, я ещё не устанавливал его а приобрёл пакетом из-за catproduct. Он меня больше всего интересует :)
 
[Смена картинок] Доработал (Joomla! 2.5.28 + VirtueMart 2.6.22 + VM Custom - Stockable variants) при использовании плагина контроля остатков + дочерние товары

/plugins/vmcustom/stockable/stockable.php // Передаем id Дочернего товара для дальнейше работы
PHP:
// ищем строку
// recalculate the price by found product child id;
formProduct = Opt.parents("form.product");
virtuemart_product_id = formProduct.find(\'input[name="virtuemart_product_id[]"]\').val();
formProduct.find(\'input[name*="customPlugin['.$field->virtuemart_customfield_id.']['.$this->_name.'][child_id]"]\').val(found_id);
// После вставляем
// -->> 06.02.2018   Хак   Картинки дочек (Метка)
formProduct.IDChildProduct = found_id;  // добавляем поля с ID дочернего товара
// --<< 06.02.2018   Хак   Картинки дочек (Метка)

/components/com_virtuemart/assets/js/vmprices.js // Virtuemart.setproducttype // Ajax запрос + замена атрибутов элементов
// Дорабатываем метод setproducttype (Отправляем ID дочернего товара на бэкенд + Принимаем данные от Бэкенда)
PHP:
setproducttype : function (form, id) {

                //console.log(form.IDParentProduct);

                form.view = null;
                var $ = jQuery, datas = form.serialize();
                var prices = form.parent(".productdetails").find(".product-price");
                if (0 == prices.length) {
                    prices = $("#productPrice" + id);
                }
                datas = datas.replace("&view=cart", "");
                prices.fadeTo("fast", 0.75);
                // -->> 06.02.2018   Хак   Картинки дочек // child_id
                //$.getJSON(window.vmSiteurl + 'index.php?option=com_virtuemart&nosef=1&view=productdetails&task=recalculate&virtuemart_product_id='+id+'&format=json' + window.vmLang, encodeURIComponent(datas),
                $.getJSON(window.vmSiteurl + 'index.php?option=com_virtuemart&nosef=1&view=productdetails&task=recalculate&virtuemart_product_id='+id+'&child_product_id='+form.IDChildProduct+'&format=json' + window.vmLang, encodeURIComponent(datas),
                // -->> 06.02.2018   Хак   Картинки дочек // child_id
                    function (datas, textStatus) {

                        // -->> 06.02.2018   Хак   Картинки дочек // child_id
                        //console.log(datas.childProductMediaId)     
                        if(datas.childProductMediaId != ""){                     
                            try {
                                var i = document.images['product-img__main'];
                                i.src = "/" + datas.childProductMediaId;
                                document.getElementById('product-img-a__main').href = "/" + datas.childProductMediaId;
                            } catch(e) {
                             
                            }
                        }     
                        // --<< 06.02.2018   Хак   Картинки дочек // child_id

                        prices.fadeTo("fast", 1);
                        // refresh price
                        for (var key in datas) {
                            var value = datas[key];
                            if (value!=0) prices.find("span.Price"+key).show().html(value);
                            else prices.find(".Price"+key).html(0).hide();
                        }
                    });
                return false; // prevent reload
            },

/components/com_virtuemart/controllers/productdetails.php // Формирует массивы данных о товаре
// Дорабатываем метод public function recalculate ()
// Получаем ID дочернего тоава - под данному ID вырываем его картинку из БД + передеаем через Json
PHP:
public function recalculate () {

        //$post = JRequest::get('request');

//        echo '<pre>'.print_r($post,1).'</pre>';
        jimport ('joomla.utilities.arrayhelper');
        $virtuemart_product_idArray = JRequest::getVar ('virtuemart_product_id', array()); //is sanitized then

        // -->> 06.02.2018   Хак   Картинки дочек
        $virtuemart_product_parentProduct = JRequest::getVar('virtuemart_product_id','');
        $virtuemart_product_childProduct = JRequest::getVar('child_product_id','');
        // --<< 06.02.2018   Хак   Картинки дочек


        if(is_array($virtuemart_product_idArray)){
            JArrayHelper::toInteger ($virtuemart_product_idArray);
            $virtuemart_product_id = $virtuemart_product_idArray[0];
        } else {
            $virtuemart_product_id = $virtuemart_product_idArray;
        }

        $customPrices = array();
        $customVariants = JRequest::getVar ('customPrice', array()); //is sanitized then
        //echo '<pre>'.print_r($customVariants,1).'</pre>';

        //MarkerVarMods
        foreach ($customVariants as $customVariant) {
            //foreach ($customVariant as $selected => $priceVariant) {
            //In this case it is NOT $selected => $variant, because we get it that way from the form
            foreach ($customVariant as $priceVariant => $selected) {
                //Important! sanitize array to int
                $selected = (int)$selected;
                $customPrices[$selected] = $priceVariant;
            }
        }

        $quantityArray = JRequest::getVar ('quantity', array()); //is sanitized then
        JArrayHelper::toInteger ($quantityArray);

        $quantity = 1;
        if (!empty($quantityArray[0])) {
            $quantity = $quantityArray[0];
        }

        $product_model = VmModel::getModel ('product');

        //VmConfig::$echoDebug = TRUE;
        $prices = $product_model->getPrice ($virtuemart_product_id, $customPrices, $quantity);

        $priceFormated = array();
        if (!class_exists ('CurrencyDisplay')) {
            require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'currencydisplay.php');
        }
        $currency = CurrencyDisplay::getInstance ();
        foreach ($prices as $name => $product_price) {
//         echo 'Price is '.print_r($name,1).'<br />';
            if ($name != 'costPrice') {
                $priceFormated[$name] = $currency->createPriceDiv ($name, '', $prices, TRUE);
            }
        }
        // -->> 06.02.2018   Хак   Картинки дочек
        if($virtuemart_product_childProduct != '') {
            $db = JFactory::getDBO();
            $q = 'SELECT M.`virtuemart_media_id` FROM `#__virtuemart_product_medias` as M '
               . ' WHERE  M.`virtuemart_product_id` ='.(int)$virtuemart_product_childProduct . ' LIMIT 1';
            $db->setQuery($q);
            $resultImgChild = $db->loadObjectList();
            $childProduct_media_id =$resultImgChild[0]->virtuemart_media_id;
            if($childProduct_media_id != null) {
                // получить картинку по id медиа файле (изображение)
                $mediaModel = VmModel::getModel ('media'); // Подключаете модель медиа (Если не подключен)
                $image = $mediaModel->createMediaByIds($childProduct_media_id);

                $priceFormated['childProductMediaId'] = $image[0]->file_url;
            } else {
                $db = JFactory::getDBO();
                $q = 'SELECT M.`virtuemart_media_id` FROM `#__virtuemart_product_medias` as M '
                   . ' WHERE  M.`virtuemart_product_id` ='.(int)$virtuemart_product_parentProduct[0] . ' LIMIT 1';
                $db->setQuery($q);
                $resultImgChild = $db->loadObjectList();
                $childProduct_media_id =$resultImgChild[0]->virtuemart_media_id;

                $mediaModel = VmModel::getModel ('media'); // Подключаете модель медиа (Если не подключен)
                $image = $mediaModel->createMediaByIds($childProduct_media_id);

                $priceFormated['childProductMediaId'] = $image[0]->file_url;
            }


        }
        // --<< 06.02.2018   Хак   Картинки дочек

        // Get the document object.
        $document = JFactory::getDocument ();
        // stAn: setName works in JDocumentHTML and not JDocumentRAW
        if (method_exists($document, 'setName')){
            $document->setName ('recalculate');
        }

        JResponse::setHeader ('Cache-Control', 'no-cache, must-revalidate');
        JResponse::setHeader ('Expires', 'Mon, 6 Jul 2000 10:00:00 GMT');
        // Set the MIME type for JSON output.
        $document->setMimeEncoding ('application/json');
        JResponse::setHeader ('Content-Disposition', 'attachment;filename="recalculate.json"', TRUE);
        JResponse::sendHeaders ();
        echo json_encode ($priceFormated);
        jexit ();
    }

// Демка (возможно потом ссылка будет не доступна)
Для просмотра ссылки Войди или Зарегистрируйся
 
для виртуемарта 3 есть куда более эффективный пллагни STOCKABLE CUSTOM FIELDS
документация: Для просмотра ссылки Войди или Зарегистрируйся
 
А вот и сам плагин пользуйтесь на здоровье ! :)
Скрытое содержимое доступно для зарегистрированных пользователей!
 
Назад
Сверху