Magento提供的积木

时间:2012-11-29 12:04:49

标签: wordpress magento block

我正在尝试从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”等,

2 个答案:

答案 0 :(得分:1)

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

布局XML 中的每个<block name="..." />声明可能可能不适用于渲染范围。渲染范围由调用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;

答案 1 :(得分:0)

提供访问 Mage.php 文件的当前路径。

例如,

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

使用以下代码在wordpress root下的文件中包含Mage文件。

require_once '../magento/app/Mage.php';