在woocommerce /花式产品设计师的结帐部分的多个缩略图

问题描述 投票:2回答:2

在我的Woocommerce网站中,用户可以通过Fancy product designer插件设计自己最多6个不同的图像。我正在尝试在结帐页面中的购物车项目上输出这些用户缩略图,而不是仅显示一个产品图片。

Website我试图让这成为可能。

enter image description here(示例照片)


类-WC-cart.php

$dom = new DOMDocument;
libxml_use_internal_errors(true);
$dom->loadHTML( $thumbnail );
$xpath = new DOMXPath( $dom );
libxml_clear_errors();

$doc = $dom->getElementsByTagName("img")->item(1);
$src = $xpath->query(".//@src");
$srcset = $xpath->query(".//@srcset");

// custom image from customer 
foreach ( $src as $s ) {
    $s->nodeValue = $fpd_data['fpd_product_thumbnail'];
}
foreach ( $srcset as $s ) {
    $s->nodeValue = $fpd_data['fpd_product_thumbnail'];
}
return $dom->saveXML( $doc );

我使用foreach循环来自花哨的产品设计师的图像。但它就像它只是列出我的结帐中的第一张图片。

任何想法,如果它甚至可能或我应该在woocommerce的class-wc-cart.php文件中使用另一种方法。


类-WC-product.php

//the additional form fields
public function add_product_designer_form() {

        global $post;
        $product_settings = new FPD_Product_Settings($post->ID);

        if( $product_settings->show_designer() ) {
            ?>
            <input type="hidden" value="<?php echo esc_attr( $post->ID ); ?>" name="add-to-cart" />
            <input type="hidden" value="" name="fpd_product" />
            <input type="hidden" value="" name="fpd_product_thumbnail[]" />
            <input type="hidden" value="<?php echo isset($_GET['cart_item_key']) ? $_GET['cart_item_key'] : ''; ?>" name="fpd_remove_cart_item" />
            <?php

            if( !fpd_get_option('fpd_wc_disable_price_calculation') )
                echo '<input type="hidden" value="" name="fpd_product_price" />';

            do_action('fpd_product_designer_form_end', $product_settings);
        }
}

在代码中有一个函数“after_product_designer”,我在其中添加一些jquery代码来获取应该从FPD发布多个fpd_thumbnails的输入字段。

它在if(order.product!= false)

    var values = [];

if(<?php echo fpd_get_option('fpd_cart_custom_product_thumbnail'); ?>) {
    // $cartForm.find('input[name="fpd_product_thumbnail"]').val(dataURL); (OLD/Original)

    $('input[name="fpd_product_thumbnail[]"]').each(function(){ // NEW 
     values.push($(this).val(dataURL));
    });
}
php wordpress woocommerce shopping-cart
2个回答
1
投票

1)您应该向Qazxswpoi询问WP相关问题

2)您的解决方案应该低于代码(添加WP.SE并根据您的需要进行修改):

functions.php

1
投票

我找到了一个解决方案,从花哨的产品设计师中提取base64图像并在我的结帐中列出。不知何故,它们都组合在一个垂直的base64文件中。尚未找到解决方案。但这与此主题无关​​。

更改:class-wc-product.php并将// Product thumbnail in checkout add_filter( 'woocommerce_cart_item_thumbnail', 'product_thumbnail_in_checkout', 200, 3 ); function product_thumbnail_in_checkout( $thumbnail, $cart_item, $cart_item_key ) { $use_product_thumb = false; //true or false if (array_key_exists('fpd_data', $cart_item)) { $thumbnail =""; //clear existing thumb if ($use_product_thumb) { $fp = json_decode( stripslashes($cart_item['fpd_data']['fpd_product']) , true); foreach($fp['product'] as $each) { $thumb = $each["thumbnail"]; $thumbnail .= '<img src="'.$thumb.'" style="width:50px; float:left; margin:5px;" />'; } } else{ $thumbnail = '<img src="'.$cart_item['fpd_data']['fpd_product_thumbnail'].'" style="float: left; margin: 5px; width: 200px; max-width: 550px;" />'; } } return $thumbnail; } 更改为fancyProductDesigner.viewInstances[0].toDataURL这将在一个数据URL中创建所有视图。如FPD jquery fancyProductDesigner.getProductDataURL所述,不同的视图将位于彼此之下。

更改:class-wc-order.php函数add_order_item_meta到下面的代码。

documentation

那是我的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.