답변:
이벤트가 전달되는 순서는 모듈이로드되는 순서에 따라 다릅니다. CatalogInventory
모듈 옵저버가 동작하기 전에 반드시 모듈 옵저버가 실행되도록해야하기 때문에 모듈에 따라 모듈을 구성하기 만하면 Mage_CatalogInventory
됩니다. app/etc/modules/My_Module.xml
파일 의 코드에 종속 노드를 추가하여이를 수행 할 수 있습니다 .
<config>
<modules>
<My_Module>
<active>true</active>
<codePool>local</codePool>
<depends>
<Mage_CatalogInventory />
</depends>
</My_Module>
</modules>
</config>
depends
가 당신보다 먼저로드 젠토 코어 모듈을 강제로 위의 XML의 노드는, 여기서 구성의 중요한 조각이다.
이벤트가 전달되는 순서는 쉽게 보장 할 수 없습니다. 모듈이로드되는 순서에 따라 다릅니다. 일반적으로 모든 핵심 이벤트 관찰자는 커뮤니티 및 로컬 코드 풀 관찰자보다 먼저 호출됩니다.
핵심 모듈의 로컬 또는 커뮤니티 모듈에 대한 종속성을 "가짜"로 지정하여 사용자 지정 마 젠토 옵저버를 강제로 실행시키는 방법이 있습니다. Lee의 답변을 여기에서 살펴보십시오 : 기존 마 젠토 옵저버 전에 커스텀 옵저버를 발사하십시오 .
/app/etc/modules/Groupname_Page.xml
<config>
<modules>
<Groupname_Page>
<active>true</active>
<codePool>local</codePool>
<depends>
<!-- Your dependencies go here -->
</depends>
</Groupname_Page>
<Enterprise_PageCache>
<depends>
<Groupname_Page />
</depends>
</Enterprise_PageCache>
</modules>
</config>
나는 그 의존성이 어떤 결과를 가져올 지 모르기 때문에 개인적으로 그 접근법을 좋아하지 않습니다.
유스 케이스의 경우 데이터 / 상태를 감지하여 실행 여부를 알 수 있어야합니다. 이벤트 순서를 강제하는 것보다 모델에서 데이터 / 상태를 확인하는 것이 좋습니다.
관찰자는 먼저 영역 별로 실행 된 다음 모듈로드 순서에 따라 실행됩니다.
즉, 등록 된 모든 옵저버는 또는에 등록 된 모든 옵저버 보다 먼저<global>
실행 됩니다.<frontend>
<adminhtml>
영역 내에서 옵저버는 병합 된 구성 XML 트리에 나타나는 순서대로 실행됩니다. 이는 기술적으로 모듈이로드 된 순서를 의미합니다.
의 종속성 그래프는의 <depends>
정의에서 작성 app/etc/modules/*.xml
됩니다. X가 Y에 의존하는 경우 Y가 X보다 먼저로드됩니다.
종속성별로 주문한 후 핵심 모듈이 커뮤니티 및 로컬 모듈보다 우선합니다.
다른 모든 것은 알파벳 순서로로드됩니다. 파일 이름 app/etc/modules
은 실제 모듈 이름이 아니라 비교에 사용됩니다.
( "3. 핵심 코드 풀에 모듈 추가"는 계산되지 않습니다)
그냥 제안을 모두 관찰 catalog_model_product_duplicate
및 catalog_model_product_save_after
싱글 관찰자. 에서 catalog_model_product_duplicate
설정 인벤토리 데이터 관찰자 데이터와 같은, 그리고에서 catalog_model_product_save_after
사용하는 중복 된 제품에 대한 채우기 재고 데이터.
catalog_model_product_save_after
할 수 있습니다. 유일한 함정은 save()
아무 생각도 하지 않고 재산을 유지하는 것입니다 ...