// 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 一样。)
任何人都可以帮忙吗?