好的,我根本无法解决这个问题。我搜索过,我也找不到任何东西。什么是将新页面添加到帐户部分的最佳方式。我正在尝试将支持服务单系统集成到magento帐户页面,即用户必须登录并注册才能使用此功能。我可以使用cms页面和自定义页面布局来实现此功能。但是,如何将此自定义cms页面设置为仅适用于登录用户?
同样这样做是显示类别菜单而不是帐户菜单。如何才能显示我的帐户菜单?或者有更好的方法吗?我是magento的新手,我真的陷入困境,无法想出来,所以任何帮助都会受到赞赏。
我正在运行magento 1.7.0.2社区版。
答案 0 :(得分:1)
如果我理解正确,只需检查客户是否已登录,但为了使用PHP,您将不得不使用teplating系统并创建模块,或生成您自己的“独立页面” “如果你去模块路线:
if ($this->helper('customer')->isLoggedIn()){
//show page contents or do whatever ..
}
else{
header( 'Location: http://www.yoursite.com/customer/account/login/' ) ;
}
就是你所需要的。如果你走独立路线:
//LOAD MAGENTO
require_once 'YOUR_PATH_TO_MAGENTO/app/Mage.php';
umask(0);
Mage::app('YOUR_WEBSITE_CODE', 'website');
//GET SESSION DATA
Mage::getSingleton('core/session', array('name'=>'frontend'));
$session = Mage::getSingleton('customer/session', array('name'=>'frontend'));
$customer_data = Mage::getModel('customer/customer')->$session->id);
//CHECK IF LOGGED IN
if($session->isLoggedIn()){
echo 'Welcome ' . $customer_data->firstname . " " . $customer_data->lastname;
} else {
echo "Access Denied: Sorry, but this page is for registered members only.";
exit;
}
希望有所帮助
答案 1 :(得分:-1)
对于任何动作,都有控制器和动作功能。
因此,对于您的新功能,您需要定义一个操作。请确保此操作值位于URL中。
现在在您的控制器中添加此动作功能
myAction()
{
if ($this->helper('customer')->isLoggedIn()){
//show page contents or do whatever ..
}
else{
header( 'Location: http://www.yoursite.com/customer/account/login/' ) ;
}
}
答案 2 :(得分:-1)
虽然上面的两个答案对于发布的问题来说可能已经足够了,但仅仅是为了说明,这肯定不是与Magento合作的正确方法,更好地理解如何根据magento实践实现这一目标,我认为这个tutorial from Alan Storm是一个很棒的地方,但是该博客中的preDispatch方法存在一些问题,我认为这可能是更好的选择:
public function preDispatch() {
parent::preDispatch();
if (!Mage::getSingleton('customer/session')->authenticate($this)) {
$this->setFlag('', 'no-dispatch', true);
}
}
我从here得到的。 在Alan的博客中,如果客户已经登录并尝试进入自定义帐户页面,则会将其重定向到主页(在我的情况下确实如此。)