8

カスタム属性をいくつか定義し、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、探しているものを見つけるためにディレクトリ構造全体を調べますが、この特定の Web ホストではシェル アクセスが無効になっています :(.

編集

属性は、Opencart に組み込まれている新しい機能だと思います。カスタムフィールドのようなものです。

とにかく、管理者側では、[カタログ] > [属性] に移動し、"配送ボックスの種類" というカスタム属性を作成しました。次に、特定の製品の下に属性を設定できます。スクリーンショットを参照してください。私の目標は、「配送ボックスの種類」の値を取得することです。それはあなたの質問@Cleverbotに答えていますか?カスタム db クエリを実行してそれを取得できると確信していますが、属性を取得するための組み込み関数が必要ですか?

opencart 製品の属性

4

2 に答える 2

11

指定された 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);
}
于 2012-07-14T12:53:56.133 に答える
2

これは、Opencart で最も直感的な機能ではありません。まず、カタログ > 属性 > 属性グループに移動し、属性のタイトルとなるグループ名を作成する必要があります。これについては、「出荷仕様」である可能性があります。

次に、catalog>attributes>attributes> に移動し、「Shipping Specifications」の下に「Shipping Box Type」という名前の新しい属性を作成する必要があります。

これで、catalog>products に移動して、属性を製品に追加する準備が整いました。

問題は、あなたが望んでいたように表示されないことです。製品ページの説明の横にある仕様タブの下に表示されます。catalog/view/*your_theme*/products/products.tpl で「仕様」を選択した見出しに変更する簡単なオプションがあります。または、同じ tpl ファイルを編集して、データ出力のコンテナー/形式を変更することもできます。

于 2012-07-14T06:34:27.487 に答える