외부 사용을 위해 Magento 라우팅 외부에 블록로드 / 받기


15

외부 웹 페이지가 있는데이 외부 페이지에서 헤더로 사용하기 위해 Magento 프레임 워크에서 사이트 헤더 블록을 가져 오려고합니다. 이것이 내가 지금까지 가진 것입니다.

// initialize Magento
$rootPath = dirname(dirname(__FILE__));
$mageInc = $rootPath . "/app/Mage.php";
include_once $mageInc;

Mage::app('admin')->setCurrentStore(0);

$headerBlock = Mage::app()->getLayout()->createBlock('page/html_header');
//also tried
//$headerBlock = Mage::app()->getLayout()->createBlock('page/html_header', 'header');

그러나 실행이 중지되고 오류 메시지가 표시되지 않습니다. 내 목표는 block을 당기는 Mage_Page_Block_Html_Header것인데 <block type="page/html_header" name="header" as="header">, page.xml 레이아웃 파일에서 모든 내용 을로드 하고 사용할 수 있다고 생각 합니다. 그 XML 태그는 안에 싸여 있습니다

<default translate="label" module="page">
  <block type="page/html" name="root" output="toHtml" template="page/1column.phtml">

태그, 어떻게 든 지정해야합니까? 내가 뭘 잘못하고 있는지, 어디로 가야할지 모르겠습니다.


이 코드는 작동하지만 로그 아웃 버튼에 문제가 있습니다. 일부 동일한 문제가 있습니까? 안부
마시모 카 모니

답변:


12

나는 비밀 성분을 찾았다. Mage::app()->loadArea('frontend');

<?php
include_once "app/Mage.php";
umask(0);
Mage::app()->loadArea('frontend');

$layout = Mage::getSingleton('core/layout');

//load default xml layout handle and generate blocks
$layout->getUpdate()->load('default');
$layout->generateXml()->generateBlocks();

//get the loaded head and header blocks and output
$headBlock = $layout->getBlock('head');
$headerBlock = $layout->getBlock('header');
echo $headBlock->toHtml() . $headerBlock->toHtml();

@benmarks 감사합니다!


3

당신은 99 % 있습니다. 블록에서 toHtml ()을 호출 한 다음 결과를 보려면 반향해야합니다.

<?php
// initialize Magento
$rootPath = dirname(dirname(__FILE__));
$mageInc = $rootPath . "/app/Mage.php";
include_once $mageInc;

Mage::app('admin')->setCurrentStore(0);

echo $headerBlock = Mage::app()->getLayout()->createBlock('page/html_header')->toHtml();

예, 나는 그것을 시도했지만 아무것도하지 않았습니다. 이것은 대답이지만, 새 설치에서 시도했지만 작동합니다. 감사.
Nick Rolando

이 코드가 작동하지만 사이트 헤더에있는 것이 거의 없습니다. 사이트 헤더에는 여러 로고, 메뉴 및 링크가 있습니다. 이것은 나에게 헤더의 많은 이미지 중 하나를 제공합니다. 아마도 올바르게로드하지 않습니까?
Nick Rolando
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.