gpt4 book ai didi

javascript - 根据 js 脚本输出更改产品价格

转载 作者:行者123 更新时间:2023-11-30 05:36:49 26 4
gpt4 key购买 nike

我有 OpenCart 1.5.6。在产品页面内,javascript count.js 附加到文本区域

counter = function() {
var value = $('#bob').val();
if (value.length == 0) {
$('#wordCount').html(o);
return;
}
var wordCount = value.split(/\s+/)
.filter(function(v){ return v.length>2 })
.length;
$('#wordCount').html(wordCount);
};
$(document).ready(function() {
$('#count').click(counter);
$('#bob').change(counter);
$('#bob').keydown(counter);
$('#bob').keypress(counter);
$('#bob').keyup(counter);
$('#bob').blur(counter);
$('#bob').focus(counter);
});

我希望价格根据输出动态变化。所以例如我希望价格变成

price = price * wordcount;

这样价格会根据输入到文本框中的字数而变化

有人可以帮我做这件事吗?我的 PHP 知识很少,而且我不确定我可以在什么位置、什么文件中实现它以及如何实现它。

最佳答案

我认为您需要为此学习一些 PHP。

首先,您的文本区域(我想是 bob)应该设置为类型为“Textarea”的产品的选项。然后将产品的价格设置为每个单词的价格。

在catalog/controller/product/product.php中,需要添加如下代码:

$this->data['word_price'] = $this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax'));

在您的 product.tpl 中,确保显示价格的位置由 <span id="product_price">xxx</span> 封装

然后在你的 javascript 函数中 counter()在一开始

var word_price = <?php echo (float)$word_price; ?>;

(尽管您需要先将您的函数从 count.js 中取出并将其放入 <script> 标签内的 product.tpl 中)

并且在函数 counter() 的末尾

$('#product_price').val(word_price * wordCount);

这将使它显示在产品详细信息页面上。

您还需要在/system/engine/cart.php 中进行更改,以便在将商品添加到购物车时再次计算价格。 (您不希望浏览器告诉您的系统价格是多少!)

函数中getProducts()在下面if声明..

elseif ($option_query->row['type'] == 'text' || $option_query->row['type'] == 'textarea' || $option_query->row['type'] == 'file' || $option_query->row['type'] == 'date' || $option_query->row['type'] == 'datetime' || $option_query->row['type'] == 'time') {

取消对文本区域的检查。

然后在那之后elseif ,再添加一个:

elseif ($option_query->row['type'] == 'textarea') {

$word_count = $this->countWords($option_value);

(countWords() 是您必须添加到此 cart.php 文件中的私有(private)函数,但您似乎已经掌握了它,就像您在 javascript 中拥有它一样)

    $product_price = $word_count * $product_query->row['price'];

$option_data[] = array(
'product_option_id' => $product_option_id,
'product_option_value_id' => '',
'option_id' => $option_query->row['option_id'],
'option_value_id' => '',
'name' => $option_query->row['name'],
'option_value' => $option_value,
'type' => $option_query->row['type'],
'quantity' => '',
'subtract' => '',
'price' => '',
'price_prefix' => '',
'points' => '',
'points_prefix' => '',
'weight' => '',
'weight_prefix' => ''
);
}

然后在你看到的整个循环下面

$price = $product_query->row['price'];

替换为:

if (isset($product_price)) 
$price = $product_price;
else
$price = $product_query->row['price'];

显然代码需要清理,我根本没有测试它(例如它会触发所有 textarea 选项),但这就是我处理它的方式。虽然我不确定如果你说你的 PHP 知识很少,它是否有很大帮助。

关于javascript - 根据 js 脚本输出更改产品价格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23167347/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com