У меня есть установка Magento, интегрированная с внешним веб-сайтом, и я хочу, чтобы блок корзины Magento отображался в заголовке этого внешнего сайта.
Я добился этого с помощью следующего кода:
<?php
require_once(dirname(__FILE__).'/store/app/Mage.php');
$app = Mage::app();
$session = Mage::getSingleton('core/session', array('name'=>'frontend'));
$block = $app
->getLayout()
->getBlockSingleton('checkout/cart_sidebar')
->setTemplate('checkout/cart/sidebar.phtml');
echo $block->toHtml();
Но я хочу (и считаю, что это возможно) более приятный подход.
Мне не нравится тот факт, что я должен указать шаблон вручную через setTemplate()
, что включаеткодирование местоположения шаблона и повторение чего-то, что он определил где-то еще (в файлах макета макета дизайна).Я попытался загрузить блок через $app->getLayout()->getBlock($name)
без результатов (где $name
представляет ссылочное имя блока, как определено в файлах XML макета).
Так что вопрос:
Есть ли способ визуализации блока вне magento (со следующими реквизитами)?
- Я хочу, чтобы базовый макет xml и обновления макета дизайна магазина с изменениями дизайна были загруженыавтоматически, поэтому мне не нужно указывать путь шаблона и тип блока (снова) вручную.
- Я хочу загрузить блок по его ссылочному имени, чтобы я мог использовать свойства, примененные к немув файлах макета XML.
Цель этого вопроса - обернуть его в функцию и визуализировать каждый блок вне Magento так же, как это делается в шаблонах Magento.Например:
<div id="sidebar-cart-container">
<?php echo $this->renderMagentoBlock('cart-block-reference-id'); ?>
</div>
Заранее спасибо.