Я использовал предложенный здесь фрагмент
Загрузить блок за пределами Magento и применить текущий шаблон
для отображения блока вне Magento.
Вот мой код:
Mage::getSingleton('core/session', array('name'=>'frontend'));
$layout = Mage::app()->getLayout();
$layout->getUpdate()
->addHandle('default')
->load();
$layout->generateXml()
->generateBlocks();
$header = $layout->getBlock('header')->toHtml();
echo $header;
Заголовок печатается, но topLinks отличаются от тех, что отображаются в Magento.
Более того, HTML немного отличается (некоторые div отсутствуют).
Это мой макет XML:
<block type="page/html_header" name="header" as="header">
<block type="core/text_list" name="top.menu" as="topMenu" translate="label">
<label>Navigation Bar</label>
</block>
<block type="page/switch" name="store_language" as="store_language" template="page/switch/languages.phtml"/>
<block type="page/template_links" name="top.links" as="topLinks"/>
<block type="page/html_wrapper" name="top.bar" as="topBar" translate="label">
<label>Breadcrumbs</label>
<action method="setElementClass"><value>top-bar</value></action>
<block type="page/html_breadcrumbs" name="breadcrumbs" as="breadcrumbs"/>
</block>
<block type="page/html_wrapper" name="top.container" as="topContainer" translate="label">
<label>Page Header</label>
<action method="setElementClass"><value>top-container</value></action>
</block>
</block>
Что не так?
UPDATE
Благодаря предложению Алана Шторма теперь я знаю, что ошибка не устанавливает правильные дескрипторы.
Мне нужно добавить customer_logged_in или customer_logged_out в макет $.
Я пробовал с
Mage::getSingleton('core/session', array('name'=>'frontend'));
$session = Mage::getSingleton('customer/session', array('name'=>'frontend'));
$login_status = '';
if($session->isLoggedIn()){
$login_status = 'customer_logged_in';
} else {
$login_status = 'customer_logged_out';
}
Но результаты моего пользователя всегда выходили из системы, даже когда он был зарегистрирован.
Чего мне не хватает?