Загрузить блок вне Magento и применить текущий шаблон

У меня есть установка 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 () , что включает жестко запрограммировать расположение шаблонов и повторить то, что он определил где-то еще (в XML-файлах макета дизайна). Я попытался загрузить блок через $ 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>

Заранее спасибо.

12
задан azkotoki 29 November 2012 в 16:43
поделиться