2010-02-26 2 views
0

Magento의 파견 시스템이 얼마나 효과적인지 파악하려고합니다.Magento가 애플리케이션 외부로 파견하기

응용 프로그램 디렉토리 외부에서 레이아웃의 특정 부분 (예 : 본문)을 보내려합니다.

내가 지금까지 가지고있는 것;

<?php 
$app   = Mage::app(); 
$myRequestUri = '/checkout/cart'; 

$front  = $app->getFrontController(); 
$request  = $front->getRequest(); 

$request->setRequestUri($myRequestUri); 

// dispatch everything 
$front->dispatch(); 
?> 

배송 처리는 정상적으로 처리되지만, 본문 또는 특정 차단으로 처리해야합니다. 또한 생성 된 HTML을 직접 출력하는 대신 출력해야합니다 (출력 버퍼링을 사용하지 않는 것이 더 좋습니다).

// 롤랜드

편집 : 나는 STIL 몇 가지 질문으로 나를 잎, 내가 진전을 추가했습니다.

+0

귀하의 의견에 따라 업데이트되었습니다. –

답변

1

나는 이것을 시도하지는 않았지만, 관례에 어긋나고 자신의 URL을 $ _SERVER [ 'REQUEST_URI']에 스매싱 할 수 있습니다. 그것은 가난한 형태로 간주되지만 핵심을 해킹하기 전에 그렇게 할 것입니다.

편집 : 편집 결과에 따라 일부 답변을 얻으실 수 있습니다. 이제 문제는 모든 HTML이 페이지에 반환된다는 것입니다. 일부 페이지의 경우 HTML을 제거하는 것이 바람직하지 않을 수 있습니다. 우리는 실제로 어떤 정보를 검색하려고합니다.

페이지를 벗겨야 할 경우 페이지 레이아웃을 수정해야합니다. 이 정보는 레이아웃 xml 파일에 저장됩니다. 이것은 약간의 변경을 수반하지만 명령 줄 작업을 확인하는 모듈을 추가하는 것이 좋습니다 (isset ($ _ SERVER [ 'argc'])가 작동 할 수 있음). 그런 다음 사용자 정의 핸들 ($this->getLayout()->getUpdate()->addHandle('my_custom_handle');)을로드하여 모든 헤더 정보를 echo하는 phtml 파일. 이것은 안정적으로 핵심 파일을 해킹하지 않고 문제가 될 것이므로 기본적으로 정보가없는 새 페이지를 만드는 것이 좋습니다. 도움이

희망, 조

+0

일부 게시물을 작성하고 편집했습니다. –

0

내가 다시 만들어 그동안 많은 진전에, 조 저를 도와 주셔서 감사합니다,하지만 여전히 아직 ;-)

내가 실제로 싶지 무엇 달성하기 위해 magento의 모든 페이지를 발송할 수 있습니다. 예를 들어/customer/account/login에 대한 유효한 http 게시물 요청은 여전히 ​​로그인해야합니다.

응답 본문 렌더링을 제외하고는. 레이아웃을 기본적으로 렌더링하고 싶지 않습니다. 대신 프로그램 방식으로 블록 (해당 요청한 레이아웃 xml에 정의 됨)을 가져 오려고합니다.

어떻게 볼 수있는 간단한 코드 예입니다. 최고의

<?php 
// code from previous post 
// - load, set request uri, dispatch 

$someBlock = getABlock('breadcrumbs'); // e.g. name attribute value in the xml 
echo $someBlock->toHtml(); 
?> 

그러나 (있는 경우는 모든 가능한) 전면 컨트롤러는 확장하는 것이 좋습니다 확실하지 메신저, 지역 코드 풀에서이 처리 될 것이다.

레이아웃 업데이트 핸들에 대해 알지 못했습니다. 레이아웃을 업데이트 할 수 있습니까? 그것들이 의미하는 바는 ...

관련 문제