0
// Include Magento application
require_once ( "../app/Mage.php" );
umask(0);

// Initialize Magento
Mage::app("default");

// Load the session
// This has to be done before getLayout() below or the blocks won't see the session
$session Mage::getSingleton("core/session", array("name" => 'frontend'));

// Get the primary layout
global $mageLayout;
$mageLayout = Mage::app()->getLayout();

// Set the layout XML to look for default and wordpress
$mageLayout->getUpdate()
    ->addHandle('default')
    ->addHandle('customer_logged_in')
    ->load();

(我意识到你不应该一直设置 customer_logged_in 句柄。通过 $session->isLoggedIn() 我可以动态地做到这一点。我有一个更大的问题。)

我已经成功地能够使用此代码设置其他句柄。(例如,我有一个名为“wordpress”的句柄,用于更改加载到 WordPress 中的块。)但是,手动设置 customer_logged_in 不起作用。

为什么要手动设置?因为客户模块的 controller_action_layout_load_before 观察者永远不会触发。我已经想出了如何让这个观察者使用stackoverflow上其他地方建议的代码进行调度,但是观察者代码失败了,因为$observer->getEvent()->getLayout()返回null。

所以我的问题是,虽然我可以直接在我的块的 phtml 文件中访问会话,并使用 PHP 执行逻辑,但我不能利用布局 XML 文件中存在的任何登录/注销逻辑,因为它们依赖在正在设置的 customer_logged_in 句柄上。

我不知道为什么我创建的wordpress句柄可以正确设置,但是customer_logged_in句柄被忽略了。(与 customer_logged_out 一样。)

任何人都可以帮忙吗?

4

1 回答 1

1

它正在被添加,但句柄中的内容完全有可能没有被呈现。

于 2013-02-13T03:03:13.880 回答