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