1

好吧,我根本想不通。我已经搜索过,我也找不到任何东西。将新页面添加到帐户部分的最佳方法是什么。我正在尝试将支持票证系统集成到 magento 帐户页面中,即用户必须登录并注册才能使用此功能。我可以使用 cms 页面和自定义页面布局来实现这一点。但是然后我如何设置这个自定义 cms 页面仅适用于登录用户?

同样这样做是显示类别菜单而不是帐户菜单。我怎样才能让我的帐户菜单改为显示?或者有更好的方法吗?我是 magento 的新手,我真的卡住了,无法弄清楚,所以任何帮助都将不胜感激。

我正在运行 magento 1.7.0.2 社区版。

4

3 回答 3

1

如果我理解正确,只需检查客户是否已登录,但为了使用 PHP,您将不得不使用模板系统并创建一个模块,或者生成您自己的“独立页面”如果您走模块路线:

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;
}

希望有帮助

于 2013-03-19T01:53:28.283 回答
-1

对于任何动作,都有一个控制器和动作函数。

因此,对于您的新功能,您需要定义一个操作。确保此操作值在 URL 中。

现在在您的控制器中添加此操作功能

myAction()
{
    if ($this->helper('customer')->isLoggedIn()){
   //show page contents or do whatever  .. 
    }
    else{
    header( 'Location: http://www.yoursite.com/customer/account/login/' ) ;
    }
}  
于 2013-03-19T04:35:07.227 回答
-1

虽然上面的两个答案可能已经足够了发布的问题,只是为了说明,这肯定不是使用 Magento 的正确方法,我认为更好地理解如何根据 magento 实践来实现这一点Alan Storm的这个教程是个好地方,但是该博客中的 preDispatch 方法存在一些问题,我认为它可能是更好的选择:

public function preDispatch() {
        parent::preDispatch();
        if (!Mage::getSingleton('customer/session')->authenticate($this)) {
                $this->setFlag('', 'no-dispatch', true);
        }
    }

我从这里得到的。在 Alan 的博客中,如果客户已经登录并尝试转到自定义帐户页面,他将被重定向到主页(在我的情况下是这样。)

于 2014-08-01T09:26:27.137 回答