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

それらはすべて恣意的であるため、技術的には完全なリストはありません!

レイアウト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;
于 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 に答える