Magento создает новую страницу клиента
Хорошо, я не могу понять это вообще. Я искал и ничего не могу найти. Какой лучший способ добавить новую страницу в раздел учетной записи. Я пытаюсь интегрировать систему поддержки в страницу учетной записи magento, т. Е. Чтобы использовать эту функцию, пользователь должен войти в систему и зарегистрироваться. я могу заставить это работать, используя страницу cms и пользовательский макет страницы. но тогда как мне настроить эту пользовательскую страницу cms, чтобы она работала только для зарегистрированных пользователей?
Кроме того, это показывает меню категорий, а не меню учетной записи. Как я могу получить меню моего аккаунта, чтобы показать вместо этого? или есть лучший способ сделать это? Я новичок в magento, и я действительно застрял и не могу понять это, поэтому любая помощь будет оценена.
Я работаю в сообществе magento 1.7.0.2.
3 ответа
Если я вас правильно понимаю, просто проверьте, вошел ли клиент в систему, но чтобы использовать 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;
}
надеюсь, это поможет
Для любого действия есть контроллер и функция действия.
Поэтому для вашей новой функции вы определяете действие. Убедитесь, что это значение действия указано в URL.
Теперь в вашем контроллере добавьте эту функцию действия
myAction()
{
if ($this->helper('customer')->isLoggedIn()){
//show page contents or do whatever ..
}
else{
header( 'Location: http://www.yoursite.com/customer/account/login/' ) ;
}
}
Хотя обоих приведенных выше ответов могло бы быть достаточно для опубликованного вопроса, просто для заметки, это, безусловно, неправильный способ работы с Magento, лучшее понимание того, как этого можно достичь в соответствии с практиками magento, я думаю, этот урок от Alan Storm- отличное место, однако есть некоторая проблема с методом preDispatch в этом блоге, для которого я думаю, что это может быть лучшей альтернативой:
public function preDispatch() {
parent::preDispatch();
if (!Mage::getSingleton('customer/session')->authenticate($this)) {
$this->setFlag('', 'no-dispatch', true);
}
}
Который я получил отсюда. В блоге Алана, если клиент уже вошел в систему и пытается перейти на страницу пользовательского аккаунта, он перенаправляется на домашнюю страницу (в моем случае это было сделано).