0

私のセットアップは次のようになります

  • デフォルト -> メイン ストア -> MainStoreView
  • Web サイト 1 -> ストア 1 -> StoreView1 ストア 2 -> StoreView2

次に、Website1->Store1 または Website1->Store2 からのみ商品を取得する方法を知りたいです。www.mysite.com/api/rest/products/ のような通常の URL を使用して storeId で製品をフィルタリングすることを考えましたが、問題は Website1 から製品を取得できないことです。デフォルトの Web サイトからのみ製品を取得しています。

なぜこれが起こっているのか、誰かが洞察を与えることができますか?

4

1 に答える 1

0

見て: Mage_Catalog_Model_Api2_Product_Rest::_retrieveCollection():

$collection = Mage::getResourceModel('catalog/product_collection');
$store = $this->_getStore();
//[...]
$collection->addStoreFilter($store->getId()) 

そのため、コレクションではストア ビュー フィルターが考慮されます。_getStore()メソッドをさらに掘り下げてみましょう。

Mage_Api2_Model_Resource::_getStore():

protected function _getStore()
    {
        $store = $this->getRequest()->getParam('store');
        try {
            if ($this->getUserType() != Mage_Api2_Model_Auth_User_Admin::USER_TYPE) {
                // customer or guest role
                if (!$store) {
                    $store = Mage::app()->getDefaultStoreView();
                } else {
                    $store = Mage::app()->getStore($store);
                }
            } else {
                // admin role
                if (is_null($store)) {
                    $store = Mage_Catalog_Model_Abstract::DEFAULT_STORE_ID;
                }
                $store = Mage::app()->getStore($store);
            }
        } catch (Mage_Core_Model_Store_Exception $e) {
            // store does not exist
            $this->_critical('Requested store is invalid', Mage_Api2_Model_Server::HTTP_BAD_REQUEST);
        }
        return $store;
    }

これに基づいて、次のように指定できると思います。your_request_url?param...&store=STORE_ID

于 2012-12-31T09:24:24.193 に答える