Last block außerhalb Magento und aktuellen Vorlage anzuwenden

Ich habe eine Magento-installation, die integriert ist mit einer externen website, und ich möchte, dass der Magento Warenkorb-block angezeigt werden, die auf der header dieser fremden Seiten.

Ich erreicht haben Sie dies mit dem folgenden code:

<?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();

Aber ich will (und glauben, dass es möglich ist) ein schöner Ansatz.

Ich mag nicht die Tatsache, dass ich angeben muss das template manuell via setTemplate(), die mit hard-coding Vorlage Standorte und wiederholte etwas, das er definiert wird woanders (in der design-layout-xml-Dateien). Ich habe versucht, laden Sie den block über $app->getLayout()->getBlock($name) keine Ergebnisse (wurden $name stellt die block-Referenz-Namen, wie Sie in den layout-xml-Dateien).

Die Frage ist also:

Gibt es eine Möglichkeit zu Rendern einen block außerhalb magento (mit folgenden Angaben)?

  • Ich möchte das Basis-layout von xml-und store-design die layout-updates der design-änderungen werden automatisch geladen, so dass ich nicht brauchen, um geben Sie den Vorlage Pfad und den block-Typ (wieder) manuell.
  • Ich möchte zum laden der block wird durch den Referenz-Namen, also ich kann die Eigenschaften angewendet, um es auf die layout-xml-Dateien.

Den Zweck dieser Frage ist, wickeln Sie es in eine Funktion aus, und machen jeden block außerhalb Magento auf die gleiche Weise wie auf der Magento templates. Zum Beispiel:

<div id="sidebar-cart-container">
    <?php echo $this->renderMagentoBlock('cart-block-reference-id'); ?>
</div>

Vielen Dank im Voraus.

InformationsquelleAutor azkotoki | 2011-06-14

Schreibe einen Kommentar