如何在Opencart中检索自定义属性?

时间:2012-07-12 19:27:55

标签: php opencart

我已经定义了一些自定义属性,并通过Opencart管理面板将其分配给产品。我试图在结账时检索这些属性以调整一些运费。

我目前正在使用catalog/model/shipping/ups.php函数中的getQuote文件。我正在接近这个:

print_r($this->cart->getProducts());

这给了我以下产品数据:

Array
(
    [59] => Array
        (
            [key] => 59
            [product_id] => 59
            [name] => My Product Name 
            [model] => ABC
            [shipping] => 1
            [image] => data/myproduct.jpg
            [option] => Array
                (
                )

            [download] => Array
                (
                )

            [quantity] => 1
            [minimum] => 1
            [subtract] => 1
            [stock] => 1
            [price] => 29.99
            [total] => 29.99
            [reward] => 0
            [points] => 0
            [tax_class_id] => 0
            [weight] => 3.75
            [weight_class_id] => 5
            [length] => 0.00
            [width] => 0.00
            [height] => 0.00
            [length_class_id] => 3
        )

)

但是,不返回自定义属性。我确信有一种很好的方法可以将产品ID传递给属性获取功能,但我找不到它。 Opencart文档对于开发方面有点缺乏,而且在Google上没有运气。

通常我会grep整个目录结构中的地狱找到我正在寻找的东西,但是在这个特定的网络主机上禁用了shell访问:(。

修改

我相信属性是Opencart中内置的新功能。它就像一个自定义领域。

无论如何,在管理方面我去了Catalog>属性并创建了一个名为“Shipping Box Type”的自定义属性。然后,在特定产品下我可以设置属性。见截图。我的目标是检索“装运箱类型”的值。那是否回答了你的问题@Cleverbot?我确信我可以自定义数据库查询来获取它,但是它们必须是一个内置函数来获取属性吗?

opencart product attributes

2 个答案:

答案 0 :(得分:9)

检索给定product_id的属性

$this->load->model('catalog/product');

$attributes = $this->model_catalog_product->getProductAttributes(59); 

print_r($attributes);

<强>输出

Array
(
    [0] => Array
        (
            [attribute_group_id] => 9
            [name] => Shipping Fields
            [attribute] => Array
                (
                    [0] => Array
                        (
                            [attribute_id] => 16
                            [name] => Shipping Box Type
                            [text] => SM2
                        )

                )

        )

)

进一步说明,这里是一个循环浏览购物车中当前产品的示例,以了解它们具有哪些属性:

$this->load->model('catalog/product');

$cart_products = $this->cart->getProducts();

// get attributes for each product in the cart
foreach($cart_products as $product) {
    $attributes = $this->model_catalog_product->getProductAttributes($product['product_id']);
    print_r($attributes);
}

答案 1 :(得分:2)

这不是Opencart中最直观的功能。首先,您必须转到目录&gt;属性&gt;属性组,并且您必须创建一个组名称,该组名称将是您的属性的标题。为此,它可能是&#34;运输规格&#34;。

然后你需要转到目录&gt;属性&gt;属性&gt;并在&#34;运输规格&#34;下创建一个新属性。命名&#34;装运箱类型&#34;。

现在您已准备好转到目录&gt;产品并将该属性添加到产品中。

捕捉是因为它不会显示出你希望我的想法。它将显示在产品页面上描述旁边的规格选项卡下。您可以轻松选择更改&#34;规格&#34;在catalog / view / * your_theme * / products / products.tpl中选择标题,或者您可以编辑相同的tpl文件来更改数据输出的容器/格式。