如果产品在 Opencart 类别页面中有选项,请添加 "starting at"
Add "starting at" if products have options in Opencart category page
我需要在opencart的分类页面展示
如果此产品有选项,起价为 € xx.xx。
像这样:
if (have options) {
print starting at $price
} else {
print $price }
category.tpl 包含:
<p class="price">
<?php if (!$product['special']) { ?>
<?php echo $product['price']; ?>
<?php } else { ?>
<span class="price-new"><?php echo $product['special']; ?></span> <span class="price-old"><?php echo $product['price']; ?></span>
<?php } ?>
<?php if ($product['tax']) { ?>
<span class="price-tax"><?php echo $text_tax; ?> <?php echo $product['tax']; ?></span>
<?php } ?>
我需要插入另一个控制器,如果我们有选项显示 "starting at €..." 而不是价格。
谢谢大家,
大卫
我需要为 Opencart (v1.5.5.1) 中的客户端提供类似的东西。以下代码检查是否有 价格上涨 的选项,如果有,则将 'From price' 放在类别页面上:
在\catalog\model\catalog\product.php
中添加如下函数
public function hasOptionPriceIncrease($product_id) {
$option_data = $this->getProductOptions($product_id);
if (is_array($option_data)) {
foreach ($option_data as $option) {
if (is_array($option['option_value'])) {
foreach ($option['option_value'] as $value) {
if ($value['price'] > 1) {
return true;
}
}
}
}
}
return false;
}
在 opencart > 2.0 中使用 product_option_value
而不是 option_value
:
public function hasOptionPriceIncrease($product_id) {
$option_data = $this->getProductOptions($product_id);
if (is_array($product_option_value)) {
foreach ($product_option_value as $option) {
if (is_array($option['product_option_value'])) {
foreach ($option['product_option_value'] as $value) {
if ($value['price'] > 1) {
return true;
}
}
}
}
}
return false;
}
然后将以下行添加到类别控制器中的 $this->data['products'][]
数组中:\controller\product\category.php
'has_option_price_increase' =>$this->model_catalog_product->hasOptionPriceIncrease($result['product_id'])
这是我的第 250 行左右,但你的可能有点不同:
$this->data['products'][] = array(
'product_id' => $result['product_id'],
'thumb' => $image,
'name' => $result['name'],
'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 100) . '..',
'price' => $price,
'special' => $special,
'tax' => $tax,
'rating' => $result['rating'],
'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']),
'href' => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url),
'has_option_price_increase' =>$this->model_catalog_product->hasOptionPriceIncrease($result['product_id'])
);
不要忘记在前一行的末尾添加逗号。
然后可以在视图中添加类似下面的内容:\catalog\view\theme\duvalay\template\product\category.tpl
<p class="price">
<?php if ($product['has_option_price_increase']) { echo 'From'; } ?>
jx12345 发布的解决方案非常有用,但是,我花了下午的大部分时间试图弄清楚为什么它不能在 OC v2.0.3.1 上运行,并发现该解决方案只是一个更改原始数组检查变量的问题。他原来的变量
$option_data
需要改为
$product_option_value
因此添加到模型文件的最终代码如下所示:
public function hasOptionPriceIncrease($product_id) {
$product_option_value = $this->getProductOptions($product_id);
if (is_array($product_option_value)) {
foreach ($product_option_value as $option) {
if (is_array($option['product_option_value'])) {
foreach ($option['product_option_value'] as $value) {
if ($value['price'] > 1) {
return true;
}
}
}
}
}
return false;
}
至少这是让代码为我工作所必需的。
感谢jx12345的投稿!
我需要在opencart的分类页面展示
如果此产品有选项,起价为 € xx.xx。
像这样:
if (have options) {
print starting at $price
} else {
print $price }
category.tpl 包含:
<p class="price">
<?php if (!$product['special']) { ?>
<?php echo $product['price']; ?>
<?php } else { ?>
<span class="price-new"><?php echo $product['special']; ?></span> <span class="price-old"><?php echo $product['price']; ?></span>
<?php } ?>
<?php if ($product['tax']) { ?>
<span class="price-tax"><?php echo $text_tax; ?> <?php echo $product['tax']; ?></span>
<?php } ?>
我需要插入另一个控制器,如果我们有选项显示 "starting at €..." 而不是价格。
谢谢大家, 大卫
我需要为 Opencart (v1.5.5.1) 中的客户端提供类似的东西。以下代码检查是否有 价格上涨 的选项,如果有,则将 'From price' 放在类别页面上:
在\catalog\model\catalog\product.php
中添加如下函数public function hasOptionPriceIncrease($product_id) {
$option_data = $this->getProductOptions($product_id);
if (is_array($option_data)) {
foreach ($option_data as $option) {
if (is_array($option['option_value'])) {
foreach ($option['option_value'] as $value) {
if ($value['price'] > 1) {
return true;
}
}
}
}
}
return false;
}
在 opencart > 2.0 中使用 product_option_value
而不是 option_value
:
public function hasOptionPriceIncrease($product_id) {
$option_data = $this->getProductOptions($product_id);
if (is_array($product_option_value)) {
foreach ($product_option_value as $option) {
if (is_array($option['product_option_value'])) {
foreach ($option['product_option_value'] as $value) {
if ($value['price'] > 1) {
return true;
}
}
}
}
}
return false;
}
然后将以下行添加到类别控制器中的 $this->data['products'][]
数组中:\controller\product\category.php
'has_option_price_increase' =>$this->model_catalog_product->hasOptionPriceIncrease($result['product_id'])
这是我的第 250 行左右,但你的可能有点不同:
$this->data['products'][] = array(
'product_id' => $result['product_id'],
'thumb' => $image,
'name' => $result['name'],
'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 100) . '..',
'price' => $price,
'special' => $special,
'tax' => $tax,
'rating' => $result['rating'],
'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']),
'href' => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url),
'has_option_price_increase' =>$this->model_catalog_product->hasOptionPriceIncrease($result['product_id'])
);
不要忘记在前一行的末尾添加逗号。
然后可以在视图中添加类似下面的内容:\catalog\view\theme\duvalay\template\product\category.tpl
<p class="price">
<?php if ($product['has_option_price_increase']) { echo 'From'; } ?>
jx12345 发布的解决方案非常有用,但是,我花了下午的大部分时间试图弄清楚为什么它不能在 OC v2.0.3.1 上运行,并发现该解决方案只是一个更改原始数组检查变量的问题。他原来的变量
$option_data
需要改为
$product_option_value
因此添加到模型文件的最终代码如下所示:
public function hasOptionPriceIncrease($product_id) {
$product_option_value = $this->getProductOptions($product_id);
if (is_array($product_option_value)) {
foreach ($product_option_value as $option) {
if (is_array($option['product_option_value'])) {
foreach ($option['product_option_value'] as $value) {
if ($value['price'] > 1) {
return true;
}
}
}
}
}
return false;
}
至少这是让代码为我工作所必需的。
感谢jx12345的投稿!