外部で使用するためにMagentoルーティングの外でブロックをロード/取得する


15

外部Webページがあり、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">

タグなので、どういうわけか指定する必要がありますか?私は何を間違えているのか、ここからどこへ行くのかわかりません


このコードは機能しますが、ログアウトボタンに問題があります。同じ問題がありますか?よろしく
マッシモカモニ16

回答:


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();

はい、私はそれを試しましたが、何もしませんでした。これが答えですが、私は新しいインストールで試してみましたが、動作します。ありがとう。
ニックロランド

このコードは機能しましたが、サイトヘッダーにあるものの近くには何もありません。サイトヘッダーには、いくつかのロゴ、メニュー、およびリンクがあります。これにより、ヘッダーにある多数の画像の1つが表示されます。おそらく正しくロードしていないのでしょうか?
ニックロランド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.