2012-01-28 3 views
2

처음에는 Magento에 완전히 익숙하지 않으므로 Magento에 대한 지식이 전혀 없으므로 제게 올바른 방향으로 나를 안내 할 수있는 사람에게는 매우 유용 할 것입니다.Magento 신제품 위젯

우리가 가지고있는 문제는 홈 페이지에 놓여있는 새로운 제품 위젯에 있습니다. 설치하지 않았고, Magento를 설치하지 않았으며, 기다리고 있던 친구를 위해이 문제를 해결하려고했습니다. 그녀의 개발자가 6 주 동안 인용 한 사이트를 제작하는 데 1 년이 넘는 시간이 걸렸습니다. 지금은 마 젠토가에서이 당겨 위치를 몰라하고 순서에 해당하는 것 같지 않습니다 -

젠토 버전은 문제가 새로운 제품 위젯에서 제품이 news_from_date으로 분류되고 있다는 점이다 1.5.1

입니다 제품이 entity_id desc로 정렬되도록 제품이 추가되고 있습니다.이 제품을 드롭 다운 정렬 목록에 코딩 할 수 있었지만 새로운 제품 위젯에서이 작업을 수행하기 위해 고심하고 있습니다. 내가 그나마

완전히 magentos 파일 구조를 이해하고이 코드는 위젯 폴더에 기대 동안 나는 거기를 발견하고 내가보고해야 파일을 제안했다 구글을 트롤 어업을하는 것은 여기에있다 할 수 없습니다

응용 프로그램/코드/코어/마법사/카탈로그/차단/제품/New.php 이 파일은 내가보고해야한다고 생각 다음 코드 블록을 포함 : 이제

protected function _beforeToHtml() 
{ 
    $todayDate = Mage::app()->getLocale()->date()->toString(Varien_Date::DATETIME_INTERNAL_FORMAT); 

    $collection = Mage::getResourceModel('catalog/product_collection'); 
    $collection->setVisibility(Mage::getSingleton('catalog/product_visibility')->getVisibleInCatalogIds()); 

    $collection = $this->_addProductAttributesAndPrices($collection) 
     ->addStoreFilter() 
     ->addAttributeToFilter('news_from_date', array('or'=> array(
      0 => array('date' => true, 'to' => $todayDate), 
      1 => array('is' => new Zend_Db_Expr('null'))) 
     ), 'left') 
     ->addAttributeToFilter('news_to_date', array('or'=> array(
      0 => array('date' => true, 'from' => $todayDate), 
      1 => array('is' => new Zend_Db_Expr('null'))) 
     ), 'left') 
     ->addAttributeToFilter(
      array(
       array('attribute' => 'news_from_date', 'is'=>new Zend_Db_Expr('not null')), 
       array('attribute' => 'news_to_date', 'is'=>new Zend_Db_Expr('not null')) 
       ) 
     ) 
     ->addAttributeToSort('news_from_date', 'desc') 
     ->setPageSize($this->getProductsCount()) 
     ->setCurPage(1) 
    ; 

    $this->setProductCollection($collection); 

    return parent::_beforeToHtml(); 
} 

, 나는 이것과 변화와 함께 연주 시도 여러 가지면에서 볼 때 아무 것도 바뀌지 않는 것 같아요. 그래서 나는 심지어 내가 잘못 관리 한 곳이라도 havent 한 것 같아요. 위젯을 잡아라. 내가 시도

마지막 일이었다이 :

protected function _beforeToHtml() 
{ 
    $todayDate = Mage::app()->getLocale()->date()->toString(Varien_Date::DATETIME_INTERNAL_FORMAT); 

    $collection = Mage::getResourceModel('catalog/product_collection'); 
    $collection->setVisibility(Mage::getSingleton('catalog/product_visibility')->getVisibleInCatalogIds()); 

    $collection = $this->_addProductAttributesAndPrices($collection) 
     ->addStoreFilter() 
     ->addAttributeToSort('entity_id', 'desc') 
     ->setPageSize($this->getProductsCount()) 
     ->setCurPage(1) 
    ; 

    $this->setProductCollection($collection); 

    return parent::_beforeToHtml(); 
} 

.... 아무것도 변화 없음, 나다. 많은 조언을 주신 점이 많아요. 저는 여기서 깊은 곳에서 자신을 던져 넣었습니다. 이해가 안되는 복잡한 성가신 시스템에서 익사하고 있습니다. news_from_date 필드라는 것을 알고 도움이 될한다 사전 사람들

답변

2

에서

덕분에 관리자에 "날짜에서 새로 제품을 설정합니다." 일반적으로 제품 편집 페이지의 "일반"탭 (이전 개발자가 변경하지 않은 경우)에 있으므로 제품을 만들 때 볼 수있는 초기 필드도 있습니다.

수동 필드 인 이유는 미래 날짜가 부여되거나 의도적으로 비워 두어 새로운 제품 목록에서 제외하기 위해서입니다. 목록의 시간을 제한하기 위해 "새로운 제품으로 설정"필드도 있습니다.

사이트 캐싱을 사용하면 목록이 너무 자주 변경되지 않으며, 리콜하면 24 시간마다 한 번만 변경되므로 "제품을 새로운 날짜로 설정"을 변경하면 어떤 효과. 캐시를 비우면 강제로 문제를 해결할 수 있습니다. 같은 이유로 코드 변경 사항이 효과적이지 않아 내일 변경 될 수 있습니다. 다음은 자동 업데이트로 덮어 얻을하지 않도록 수정 New.phpapp/code/local/Mage/Catalog/Block/Product/에 복사 설계로


당신은 날짜 필드를 사용하는 대신 정상적인 동작을 변경하려고하는 경우. 수정 사항을 한눈에 볼 수 있으며 실험 할 때 캐시를 끄고 완료되면 다시 켤 수 있습니다.

+0

귀하의 의견이 문제가되어 이전 개발자가 내 변경 사항을 덮어 쓴 app/code/local/Mage/Catalog/Block/Product/New.php에 코드를 추가 했으므로 삭제 해 주셔서 감사합니다. 나는 또한 이것으로 내 노는 것이 이전 코드에 아무런 영향을 미치지 않는 이유에 대해 다소 당혹 스러웠다. – WebweaverD

관련 문제