Magento创建新的客户页面

时间:2013-03-19 01:41:26

标签: magento account custom-pages

好的,我根本无法解决这个问题。我搜索过,我也找不到任何东西。什么是将新页面添加到帐户部分的最佳方式。我正在尝试将支持服务单系统集成到magento帐户页面,即用户必须登录并注册才能使用此功能。我可以使用cms页面和自定义页面布局来实现此功能。但是,如何将此自定义cms页面设置为仅适用于登录用户?

同样这样做是显示类别菜单而不是帐户菜单。如何才能显示我的帐户菜单?或者有更好的方法吗?我是magento的新手,我真的陷入困境,无法想出来,所以任何帮助都会受到赞赏。

我正在运行magento 1.7.0.2社区版。

3 个答案:

答案 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的博客中,如果客户已经登录并尝试进入自定义帐户页面,则会将其重定向到主页(在我的情况下确实如此。)