2013-12-18 2 views
7

비교보기에서 제품을 표시하려고합니다. 관리자 패널을 통해 status = disabled으로 설정되어 있습니다. 장애인 제품 제품 목록 페이지뿐만 아니라 제품 상세 페이지에 표시되지 않습니다으로 기본 젠토에서비교보기에서 비활성화/비활성화 된 제품 표시

이 불가능 보인다.

어떻게 든, 나는 및 제품 상세 페이지Mage_Catalog_Helper_Product를 재정 의하여 제품 목록 페이지에서 사용할 제품을 보여줄 수 있었다. 그 안에 나는 다음과 같은 코드를 주석으로 처리했다.

// if (!$this->canShow($product)) { 
    //  return false; 
    // } 

비교보기에서도 장애가있는 제품을 표시하는 방법을 알려주시겠습니까?

+0

나는 완전한 코어 파일의 섹션을 비교 검색을하지만 난 아무것도 찾을 수 없습니다 .. –

답변

4

오랜 시간 동안 검색 한 후 메이지 코어 파일에서 솔루션을 추출하지 못하면 status 속성과 동일한 속성을 만들었습니다. 이 속성의 이름은 Archive (예/아니오)입니다. 이 새로운 속성은 제품의 생산 중단 여부를 정당화합니다.

Atlast,이 새로운 속성 Archive과 관련된 모든 제품 목록, 제품 세부 정보 및 홈 페이지 만 필터링합니다.

나는 status status = disabled 제품에 대한 예로서 Archive을 트리거 enabled로 동시에 모든 제품을 변경하는 MVC 액션을 쓸 계획입니다. 나는 곧 여기에서 코드를 공유 할 것이다.

코드 :

는 URL을 호출 할 때 다음 코드를 실행하는 더미 컨트롤러 쓰기 :

public function updateproductsAction() { 
    Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); 

    $collectionConfigurable = Mage::getResourceModel('catalog/product_collection') 
      ->addAttributeToFilter('type_id', array('eq' => 'configurable')) 
      ->addAttributeToFilter('entity_id', array('gt' => 0));  // This line should be removed to affect all the configurable products. (to avoid execution time-out) 

    echo 'Total are ' . count($collectionConfigurable) . '<br/>'; 
    $i = 1;       
    foreach($collectionConfigurable as $p) { 
     $product = Mage::getModel('catalog/product')->load($p->getId()); 
     $product->save(); 
     echo $i++ . ') The product Id with ' . $p->getId() . " is done...." . "<br/>"; // if the execution time-out occurs, note down the last product id and change the value above in addAttributeToFilter. so the execution runs from the last stopped product. 
    } 
} 
4

확인 할 수 있습니다 : 공공 기능은 도우미 \ 제품 \ Flat.php

+0

플랫 테이블을 사용하는 상점을 사용하므로주의해야합니다. 하나의 이유로 다른 상점에서이 기능을 사용할 수있는 것은 아닙니다. –

4

내가에 빠른 모습을 촬영 한 \ 젠토 \ 응용 프로그램의 \ 코드 \ 코어 \의 마법사의 \ 카탈로그에

을의 IsEnabled 무엇 블록이 목록을 만듭니다. 시작하기에 좋은 장소는 다음과 같은 파일이 될 것입니다 : 비교/

응용 프로그램/코드/코어/마법사/카탈로그/차단/제품/List.php 항목을 받고 담당하는 기능 getItems 있습니다

프런트 엔드에 표시 할 준비가되었습니다. 이 함수의 끝에서 그것은 가시성 방법을 통해 항목을 전달합니다 코드의 마지막 부분을 제거하면 당신이 원하는 무엇을 얻는 경우에

Mage::getSingleton('catalog/product_visibility') 
       ->addVisibleInSiteFilterToCollection($this->_items); 

임 100 % 확실하지 않은,하지만 아주 기본적인 수준에서 당신은을 변경할 수 있습니다 컬렉션은 사용자가 설정 한 상태를 무시합니다.

+0

위의 코드를 주석 처리/제거하면 비교 섹션에서 '간단한 제품'을 얻을 수 있습니다. 즉,이 코드는 '단종/무효'제품이 아닌 '단순한 제품'을 가능하게하기위한 것입니다.나는 최근에 내 프로젝트에서 이것을했기 때문에 나는 100 % 확실하다. :) –