Tải / Nhận một khối bên ngoài định tuyến Magento để sử dụng bên ngoài


15

Tôi có một trang web bên ngoài và tôi đang cố gắng kéo khối tiêu đề trang web từ khung Magento để sử dụng làm tiêu đề trong trang bên ngoài này. Đây là những gì tôi có cho đến nay:

// 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');

Việc thực thi dừng lại ở đó, tuy nhiên, và tôi không nhận được thông báo lỗi. Mục tiêu của tôi là kéo khối Mage_Page_Block_Html_Header, mà tôi nghĩ rằng tôi có thể sử dụng để tải <block type="page/html_header" name="header" as="header">và tất cả nội dung của nó từ tệp bố cục page.xml. Thẻ XML đó được bọc bên trong

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

thẻ, vì vậy có lẽ tôi cần phải xác định bằng cách nào đó? Tôi không chắc mình đang làm gì sai và đi đâu từ đây.


Mã này hoạt động nhưng tôi có một vấn đề với nút đăng xuất, một số có vấn đề tương tự? Trân trọng
Massimo Camoni

Câu trả lời:


12

Tôi tìm thấy thành phần bí mật .. và nó là 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();

Cảm ơn @benmark!


3

Bạn đang ở đó 99%. Bạn cần gọi toHtml () trên khối và sau đó lặp lại để xem kết quả:

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

Vâng, tôi đã thử điều đó và không có gì. Đây là câu trả lời, tôi đã thử nó trên một bản cài đặt mới và nó hoạt động. Cảm ơn.
Nick Rolando

Tôi đã làm cho mã này hoạt động, tuy nhiên nó không cho tôi gần bất cứ thứ gì mà tiêu đề trang web có. Tiêu đề trang web có một số logo, menu và liên kết. Điều này cho tôi một trong nhiều hình ảnh trong tiêu đề. Có lẽ tôi không tải nó chính xác?
Nick Rolando
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.