0

私は本当にmagentoで次のものが必要です。顧客が構成製品を表示し、色を選択すると、単純な製品の画像と説明が表示されます。私はすでにSCP製品を使用していますが、色とサイズの両方を選択する必要があります。そうしないと、画像が変更されません。さらに、このモジュールは、電子メールアイテムの外観とPDFの外観を変更します

誰かが別の解決策を知っていますか?


返信ありがとうございます。これを2つの問題に分けましょう。

問題1:

SCPを使用すると、メールやPDFのアイテムテーブルに色とサイズが表示されなくなります。そのため、配達のためにどの製品を入手する必要があるかを確認するのは簡単ではありません。

問題2:

実際、彼は、シンプルな製品の詳細を表示するために、ドロップダウン、サイズ、色の両方を変更する必要があります。これは色だけに変更する必要があります。これを機能させるためのコードを記載した投稿を見つけましたが、私には向いていません。

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

そこで、mysqlで見つけたattribIDを変更し、値colorをkleurproductであるcolorattributeに変更しました。

このコードを追加しました

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拡張は多くのことを行います。Fistは、選択した特定の単純な製品に一致するように、画像やその他の製品の詳細が変更される場所で言及したUIの機能強化です。SCPが行うもう1つのことは、Magentoの価格設定の仕組みを変更して、構成可能な製品を購入したときに、親の構成可能な価格ではなく、選択した単純な製品バリアントの価格が顧客に請求されるようにすることです。価格設定ロジックの変更は、電子メールおよびPDF形式の変更の背後にあるものです。

単純な製品が2つの異なる属性によって構成可能にリンクされている場合、ユーザーは、特定の単純な製品、したがって表示する画像を一意に識別するために、両方を選択する必要があります。

ただし、衣料品の例では、色を選択すると画像が表示される可能性があります。これは、ほとんどの場合、画像は各サイズで同じになるためです。SCP拡張機能は、選択ボックスの変更イベントに応答してAjaxロードなどをトリガーする独自のJavaScriptを提供します。色が選択されたら、このJavaScriptコードを変更して、最初のサイズを見つけ、最初の対応する単純なものにすることができます。製品とその画像をロードします。

于 2012-06-11T23:18:59.327 に答える
0

SCPよりもはるかに多くのことを行うこの新しいモジュールを試すことができます

SDOCP-構成可能な製品の簡単な詳細

于 2014-05-22T09:58:39.000 に答える