2013-03-19 4 views
1

Хорошо, я не могу понять это вообще. Я искал, и я тоже ничего не нашел. Каким образом можно добавить новую страницу в раздел учетной записи. Я пытаюсь интегрировать систему билета поддержки на страницу учетной записи magento, то есть пользователь должен быть зарегистрирован и зарегистрирован для использования этой функции. Я могу заставить это работать, используя страницу cms и настраиваемый макет страницы. но как настроить эту страницу cms для работы только для зарегистрированных пользователей?Magento создает новую страницу клиента

Кроме того, это так показывает меню категорий, а не меню учетной записи. Как я могу вместо этого отобразить меню моей учетной записи? или есть лучший способ сделать это? Im новый для magento и im действительно застрял и не мог понять это, поэтому любая помощь будет оценена.

Im running magento 1.7.0.2 издание сообщества.

ответ

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

Надежда, что помогает

+0

спасибо, да, это часть его, как я ее устанавливаю чтобы показать меню моего аккаунта? есть ли способ просто сказать, что это страница учетной записи, чтобы установить обе функции? – JSweete

+0

Я считаю, что вам нужно будет вызвать блок NAV моей учетной записи, вместо того, чтобы ссылаться на страницу «Моя учетная запись», если это имеет смысл. Он должен быть таким же прямым, как вызов левого навигатора на любой другой странице. – Zak

+0

. Ах им с тобой хорошо, что очень полезно :) – JSweete

-1

Для любого действия есть контроллер и действие функции.

Итак, для вашей новой функции вы определяете действие. Убедитесь, что это значение действия находится в URL-адресе.

Теперь в контроллере добавить эту функцию действия

myAction() 
{ 
    if ($this->helper('customer')->isLoggedIn()){ 
    //show page contents or do whatever .. 
    } 
    else{ 
    header('Location: http://www.yoursite.com/customer/account/login/') ; 
    } 
} 
+0

Забавный ... Похоже на верхнюю часть моего ответа, но с функцией, обернутой вокруг него ... Может быть, упомянуть об этом в следующий раз? Копирование и вставка ответа, который уже находится на странице и обертывания его функцией, вряд ли оригинален и несколько скандален. Кроме того, нет необходимости в «действии», и упомянутое «действие» не имеет никакого смысла, учитывая область видимости, т. Е. // показывать содержимое страницы или делать что угодно .. ». – Zak

+0

хорошо я объяснил, что нужно иметь в URL-адресе «Мой», так что эта функция называется. Это причина, по которой я вставлял код в эту функцию. Так что первоначальный человек, который запросил, может легко двигаться дальше. Это не просто копия. – oscprofessionals

+0

Для любого действия есть контроллер и функция действия. Итак, для вашей новой функции вы определяете действие. Убедитесь, что это значение действия находится в URL-адресе. Теперь в вашем контроллере добавьте эту функцию действия. прочитайте, какое дополнительное объяснение было опубликовано вместе с кодом. – oscprofessionals

-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. В блоге Алана, если клиент уже вошел в систему и попытался перейти на страницу пользовательской учетной записи, он перенаправляется на домашнюю страницу (это было в моем случае.)

+0

Дорогой «downvoter», добавьте комментарий о том, почему ответ заслуживает нисходящего хода, так что я могу улучшить это в следующий раз, когда я отправлю что-нибудь. – Prateek

Смежные вопросы