0

我正在尝试从 wordpress 访问 magento。下面是我用来访问magento侧边栏购物车的简单代码。

<?php

/*
 * Initialize magento.
 */
require_once '/Applications/XAMPP/xamppfiles/htdocs/conover-store/app/Mage.php';
Mage::init();

/*
 * Add specific layout handles to our layout and then load them.
 */
$layout = Mage::app()->getLayout();
$layout->getUpdate()
    ->addHandle('default')
    ->addHandle('some_other_handle')
    ->load();

/*
 * Generate blocks, but XML from previously loaded layout handles must be
 * loaded first.
 */
$layout->generateXml()
       ->generateBlocks();

/* 
 * Now we can simply get any block in the usual way.
 */
$cart = $layout->getBlock('header')->toHtml();
echo $cart;

?>

我正在寻找可用块代码的完整列表/文档,例如“cart_sidebar”、“header”等,

4

2 回答 2

1

从技术上讲,没有完整的列表,因为它们都是任意的!

<block name="..." />布局 XML中的每个声明都可能适用于渲染范围,也可能不适用。渲染范围由调用时为更新对象设置的布局更新句柄确定load()。此外,块可以通过布局对象在 PHP 中直接实例化。

因此,对于特定的渲染范围,有很多选择。如果只需要一个特定的块及其子块,则由开发人员决定是否值得为渲染范围实例化所有块。对于当前的问题,似乎是这样。因此,所有可用的块都可以通过检查布局对象的受保护_blocks属性来确定:

// after generateBlocks() is called...

$blocks = $layout->getAllBlocks();
sort($blocks);

$list = "<table><thead><tr><th>Name in Layout</th><th>Class</th><th>Template</th></tr></thead>";
foreach ($blocks as $block) {
    $list .= sprintf('<tr><td>%s</td><td>%s</td><td>%s</td></tr>',$block->getNameInLayout(),get_class($block),$block->getTemplateFile());
}
$list .= "</table>";

echo $list;
于 2012-11-29T17:01:08.823 回答
0

给出访问Mage.php文件的当前路径。

例如,

Wordpress 在/Applications/XAMPP/xamppfiles/htdocs/wordpress/
下,Magento 在/Applications/XAMPP/xamppfiles/htdocs/magento/下

使用以下代码从 wordpress 根目录下的文件中包含 Mage 文件。

require_once '../magento/app/Mage.php';
于 2012-11-29T13:29:40.457 回答