2013-03-05 5 views
1

여러 웹 사이트 및 여러 상점/상점보기가있는 하나의 maganto 설치 (1.4.0.1)가 있습니다. 또한 모든 매장보기에서 다른 제품을 가지고 있습니다. 내 계정으로 이동 -> 테이블의 내 주문은 모든 상점의 주문을 표시합니다. 현재 열린 상점보기의 주문만으로 목록을 만들려면 어딘가에서 설정하거나 코드에서 뭔가를 변경할 수 있습니까?현재 상점보기의 주문과 함께 "내 주문"테이블

다른 단어로, 내 웹 사이트 mywebsite.com/store2의 스토어 2에 내 주문 mywebsite.com/store2/sales/order/history/에서 주문하면 모든 웹 사이트의 주문 내역이 표시됩니다. 나는 단지 "store2"형태의 주문을 보여 주려고한다.

누군가가 이와 유사한 문제에 대한 답변을 받기를 바랍니다. 도움을 주시면 감사하겠습니다.

요르단

답변

2
/*GetCurrent Website Name*/ 
    $currentWebsiteName = Mage::app()->getStore()->getWebsite()->getName();   
    $currentWebsiteName_LIKE_PHRASE = '%'.$currentWebsiteName.'%'; 

    /*Filter the Order Collection by Current Website Name*/ 
    $orders = Mage::getResourceModel('sales/order_collection') 
     ->addFieldToSelect('*') 
     ->addFieldToFilter('customer_id', Mage::getSingleton('customer/session')->getCustomer()->getId()) 
     ->addFieldToFilter('state', array('in' => Mage::getSingleton('sales/order_config')->getVisibleOnFrontStates())) 
     ->addAttributeToFilter('store_name', array('like' => $currentWebsiteName_LIKE_PHRASE)) 
     ->setOrder('created_at', 'desc'); 

    /*Note the Below Line*/ 
    ->addAttributeToFilter('store_name', array('like' => $currentWebsiteName_LIKE_PHRASE)) 

암 필터링 위의 코드에서이 라인. 그냥 sales_flat_order 테이블은이 열을 볼 수 있습니다 'store_name'을 찾을 수있는 곳 에는 웹 사이트 이름이입니다.

불행하게도 나는 주문 수집에 문을 가입하려면이 주요 순서 테이블 또는 관련 테이블에서 웹 사이트 ID를 찾을 수 없습니다. 내 생각에 ** 웹 사이트 접미사 **로 주문 테이블을 만들 수 있습니다. 기존 컬렉션에 쉽게 가입 할 수있는 경우

+0

감사합니다. :) –

2

아주 간단합니다. 각각의 판매 주문 내역 블록 응용 프로그램 \ 코드 \ 코어 \ 마법사 \ 판매 \ 블록 \ 주문 \ History.php 로컬 코드 풀

에 파일을 그냥 현재 상점 ID로 컬렉션을 필터링

우선합니다.

   $store_id = Mage::app()->getStore()->getId(); 
      $orders = Mage::getResourceModel('sales/order_collection') 
     ->addFieldToSelect('*') 
     ->addFieldToFilter('customer_id', Mage::getSingleton('customer/session')->getCustomer()->getId()) 
     ->addFieldToFilter('state', array('in' => Mage::getSingleton('sales/order_config')->getVisibleOnFrontStates())) 
     ->addFieldToFilter('store_id',$store_id) 
     ->setOrder('created_at', 'desc') 
    ; 

참고 현재 웹 사이트의 이름으로

 /*Current Store View ID*/ 
     $store_id = Mage::app()->getStore()->getId(); 

     /*Filtering the order collection by current store id*/ 
     ->addFieldToFilter('store_id',$store_id) 
+0

고맙습니다. 작업이 잘되었지만 이제는 목록으로 변경해야합니다. 웹 스토어가 아니라 웹 사이트에서 주문하면 $ website_id = Mage :: app() -> getStore() -> getWebsiteId(); and addFieldToFilter ('website_id', $ website_id) 그러나 작동하지 않는 경우, 몇 가지 제안 –

+0

@ JovanovJordan 분명히 웹 사이트 ID가 없으므로 주문 컬렉션을 주문할 수 없습니다. 또한 이미 store_id로 콜렉션을 필터링 했으므로 콜렉션은 해당 스토어 뷰의 순서 만 보유합니다. – Haijerome

+0

안녕하세요.하지만 store_id 선택 양식을 삭제하고 웹 사이트를 선택하고 싶습니다. 다른 방법에 대한 제안 –

관련 문제