0

我真的需要magento中的以下内容。当客户显示配置产品并选择颜色时,简单的产品图像和描述应显示。我已经在使用 SCP 产品,但颜色和尺寸都需要选择,否则不会改变图片。此外,此模块更改了电子邮件项目的外观以及 pdf 的外观

有人知道不同的解决方案吗?


感谢您的回复,让我把它分成我遇到的2个问题。

问题1:

当我使用 SCP 时,他不再在我的电子邮件和 pdf 中的项目表上显示颜色和大小。因此,不再容易看到我需要抓取哪种产品进行交付。

问题2:

事实上,他需要更改下拉菜单、大小和颜色以显示简单的产品细节。这需要更改为仅颜色。我发现了一个帖子,上面写了一些代码来让它工作,但不适合我。

http://www.magentocommerce.com/boards/site.php/viewthread/30929/P0/

所以我改变了我通过mysql找到的attribID,并将值颜色更改为我的colorattribute,即kleurproduct

添加了此代码

Product.Config.prototype.reloadPrice = function() {
var childProductId = this.getMatchingSimpleProduct();
var childProducts = this.config.childProducts;
var attribID = 158;
var kleurproductDropdown = document.getElementById('attribute' + attribID);
var kleurproductSelectedIndex = kleurproductDropdown.selectedIndex;
var kleurproduct_value  = kleurproductDropdown.options[kleurproductSelectedIndex].text;
//if the price ranges option is checked in the backend then a colon and the price is added to the dropdown
if (kleurproduct_value.indexOf(':') > -1) {
    kleurproduct_value = kleurproduct_value.substr(0,kleurproduct_value.indexOf(':'));
}
var usingZoomer = false;
if(this.config.imageZoomer){
    usingZoomer = true;
}

if (childProductId){
    var price = childProducts[childProductId]["price"];
    var finalPrice = childProducts[childProductId]["finalPrice"];
    optionsPrice.productPrice = finalPrice;
    optionsPrice.productOldPrice = price;
    optionsPrice.reload();
    optionsPrice.reloadPriceLabels(true);
    optionsPrice.updateSpecialPriceDisplay(price, finalPrice);
    this.updateProductShortDescription(childProductId);
    this.updateProductDescription(childProductId);
    this.updateProductName(childProductId);
    this.updateProductAttributes(childProductId);
    this.updateFormProductId(childProductId);
    this.addParentProductIdToCartForm(this.config.productId);
    this.showCustomOptionsBlock(childProductId, this.config.productId);
    if (usingZoomer) {
        this.showFullImageDiv(childProductId, this.config.productId);
    }else{
        this.updateProductImage(childProductId);
    }

}
//added else if for when just a kleurproduct is selected
else if (kleurproduct_value) {
    for (var product in childProducts) {
        //find the kleurproduct attribute in the childProduct html
        var colStartPos = childProducts[product].productAttributes.indexOf('<th class="label">kleurproduct</th>')
        colStartPos = childProducts[product].productAttributes.indexOf('>', colStartPos + 28)
        var colEndPos = childProducts[product].productAttributes.indexOf('</td>', colStartPos)
        //check each child product for matching kleurproduct
        if (childProducts[product].productAttributes.substr(colStartPos + 1, colEndPos - colStartPos - 1)==kleurproduct_value) {
            childProductId = product;
            var price = childProducts[childProductId]["price"];
            var finalPrice = childProducts[childProductId]["finalPrice"];
            optionsPrice.productPrice = finalPrice;
            optionsPrice.productOldPrice = price;
            optionsPrice.reload();
            optionsPrice.reloadPriceLabels(true);
            optionsPrice.updateSpecialPriceDisplay(price, finalPrice);
            this.updateProductShortDescription(childProductId);
            this.updateProductDescription(childProductId);
            this.updateProductName(childProductId);
            this.updateProductAttributes(childProductId);
            this.updateFormProductId(childProductId);
            this.addParentProductIdToCartForm(this.config.productId);
            this.showCustomOptionsBlock(childProductId, this.config.productId);
            if (usingZoomer) {
                this.showFullImageDiv(childProductId, this.config.productId);
            }else{
                this.updateProductImage(childProductId);
             }
            //one product was found, exit the loop
            break;
         }
    }
}
else {
    var cheapestPid = this.getProductIdOfCheapestProductInScope("finalPrice");
    //var mostExpensivePid = this.getProductIdOfMostExpensiveProductInScope("finalPrice");
    var price = childProducts[cheapestPid]["price"];
    var finalPrice = childProducts[cheapestPid]["finalPrice"];
    optionsPrice.productPrice = finalPrice;
    optionsPrice.productOldPrice = price;
    optionsPrice.reload();
    optionsPrice.reloadPriceLabels(false);
    optionsPrice.updateSpecialPriceDisplay(price, finalPrice);
    this.updateProductShortDescription(false);
    this.updateProductDescription(false);
    this.updateProductName(false);
    this.updateProductAttributes(false);
    this.showCustomOptionsBlock(false, false);
    if (usingZoomer) {
        this.showFullImageDiv(false, false);
    }else{
        this.updateProductImage(false);
    }
}

};

4

2 回答 2

1

SCP 扩展做了很多事情。拳头是您提到的 UI 增强功能,其中图像和其他产品细节发生变化,以匹配所选的特定简单产品。SCP 所做的另一件事是改变 Magento 的定价方式,以便在购买可配置产品时,向客户收取所选简单产品变体的任何价格而不是父可配置价格。定价逻辑的变化是电子邮件和 pdf 格式变化背后的原因。

当一个简单的产品通过两个不同的属性链接到一个可配置的属性中时,用户需要同时选择这两个属性,以便唯一地标识特定的简单产品,从而唯一地标识要显示的图像。

但是,在服装示例中,一旦选择了颜色,就可以显示图像,因为在大多数情况下,每种尺寸的图像都是相同的。SCP 扩展提供了它自己的 JavaScript,它响应选择框上的更改事件以触发 Ajax 加载等。一旦选择了颜色,就可以修改这个 JavaScript 代码,找到第一个大小,然后第一个对应的简单产品并加载它的图像。

于 2012-06-11T23:18:59.327 回答
0

你可以试试这个新模块,它比 SCP 做得更多

SDOCP - 可配置产品的简单细节

于 2014-05-22T09:58:39.000 回答