如何在代码中使用特定的Magento模板在Magento中创建空白页(外部页)

如何在代码中使用特定的Magento模板在Magento中创建空白页(外部页),magento,Magento,不确定解决这个问题的最佳方法,我正在寻找解决方案。我需要创建一个带有特定主题的空白页面(稍后我会添加代码)。我已经在:/app/design/frontend/indigo/mytheme/创建了自定义主题,并且需要知道如何创建一个页面,让我们调用/test.php来应用主题 到目前为止,代码是这样的,但这只显示默认主题: <?php define('MAGENTO_ROOT', $_SERVER['DOCUMENT_ROOT']); $mageFilename = MAGENTO_ROO

不确定解决这个问题的最佳方法,我正在寻找解决方案。我需要创建一个带有特定主题的空白页面(稍后我会添加代码)。我已经在:/app/design/frontend/indigo/mytheme/创建了自定义主题,并且需要知道如何创建一个页面,让我们调用/test.php来应用主题

到目前为止,代码是这样的,但这只显示默认主题:

<?php
define('MAGENTO_ROOT', $_SERVER['DOCUMENT_ROOT']);
$mageFilename = MAGENTO_ROOT . '/app/Mage.php';
if (!file_exists($mageFilename)) {
    echo $mageFilename." was not found";
    exit;
}
require_once $mageFilename;

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');
$footerBlock = $layout->getBlock('footer');

echo $headBlock->toHtml() . $headerBlock->toHtml();
?>
My content goes here
<?php
echo $footerBlock->toHtml();
?>
getUpdate()->load('default');
$layout->generateXml()->generateBlocks();
//获取加载的头和头块并输出
$headBlock=$layout->getBlock('head');
$headerBlock=$layout->getBlock('header');
$footerBlock=$layout->getBlock('footer');
echo$headBlock->toHtml()$headerBlock->toHtml();
?>
我的内容在这里

解决方案非常基本,您只需设置店铺ID:

Mage::app()->setCurrentStore(STORE_ID);
最后的代码如下所示:

<?php
define('MAGENTO_ROOT', $_SERVER['DOCUMENT_ROOT']);
define('STORE_ID', 15);
$mageFilename = MAGENTO_ROOT . '/app/Mage.php';
if (!file_exists($mageFilename)) {
    echo $mageFilename." was not found";
    exit;
}
require_once $mageFilename;

Mage::app()->setCurrentStore(STORE_ID);
Mage::app()->loadArea('frontend');
$layout = Mage::getSingleton('core/layout');

//load default xml layout handle and generate blocks
$layout->getUpdate()->load('default'); 
$layout->generateXml()->generateBlocks();
?>
<!DOCTYPE html>
<html lang="en">
<head>
<?php echo $layout->getBlock('head')->toHtml() ?>
</head>
<body>
<?php echo $layout->getBlock('after_body_start')->toHtml() ?>
<?php echo $layout->getBlock('global_notices')->toHtml() ?>
<?php echo $layout->getBlock('header')->toHtml() ?>
<div class="content-wrapper">
    <div class="container_12">
        <?php echo $layout->getBlock('breadcrumbs')->toHtml() ?>
        <div class="main-container col1-layout">
            <div class="grid_12 col-main">
                <?php echo $layout->getBlock('global_messages')->toHtml() ?>
                <?php echo $layout->getBlock('content')->toHtml() ?>
                My content goes here
            </div>
            <div class="clear"></div>
        </div>    
    </div>
</div>
<?php echo $layout->getBlock('footer')->toHtml() ?>
</body>
</html>
getUpdate()->load('default');
$layout->generateXml()->generateBlocks();
?>
我的内容在这里

我认为有一些更干净的解决方案可以从这些解决方案中获得:取决于您希望离核心有多近:)

编辑-一个干净完整的解决方案:

创建新的自定义控制器()

在themes local.xml(/app/design/frontend/[vendor]/[theme]/layout/local.xml)中:



?我认为这是一个合理的问题,我无法找到答案。也许不是最干净的解决方案,但我认为问题本身是非常合理的!世跆拳道如此。。我也在这里找同样的东西。。但我希望能找到更干净的解决方案。。
class Vendor_Module_LoremController extends Mage_Core_Controller_Front_Action
{
    /**
     * Get a shop now block for specific product
     */
    public function indexAction()
    {
        $this->loadLayout();
        $this->renderLayout();
        // Zend_Debug::dump($this->getLayout()->getUpdate()->getHandles()); // If you need to debug to see which layout handles are available
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<layout version="0.1.0">
    <vendor_module_lorem_index>
        <remove name="header" />
        <remove name="footer" />
    </vendor_module_lorem_index>
</layout>