Как да създадете страница за отписване в magento

Бих искал да създам страница за директно отписване в magento, намерих тази инструкция за следване, но стъпки 1 и 2 не са ясни, тъй като не съм професионалист. Може ли някой да ми помогне да изясня тези две стъпки. Къде да създадете страницата "unsubscribe.phtml"? Как да добавите току-що създадения блок в него? Благодаря ви предварително.
1. Създайте phtml страница, кажете „unsubscribe.phtml“, съдържаща кода за създаване на формуляр за отписване.

<?php $newsletterObj = new Mage_Newsletter_Block_Subscribe(); ?>
<div class="newsletter-unsubscribe">
<div class="newsletter-unsubscribe-title"><?php echo $this->__('Submit your email id to unsubscribe newsletter') ?></div>
<form action="<?php echo $newsletterObj->getUnsubscribeFormActionUrl() ?>” method="post" id="newsletter-validate-detail">
<div class="block-content">
<div class="input-box">
<input type="text" name="email" id="newsletter" title="<?php echo $this->__('Sign up for our newsletter') ?>” class="input-text required-entry validate-email” value="<?php echo $this->__('Enter Your Email Here') ?>” onfocus="if(this.value==’<?php echo $this->__('Enter Your Email Here') ?>’)this.value=’’;” onblur="if(this.value==’’)this.value=’<?php echo $this->__('Enter Your Email Here') ?>’;”
/>
</div>
<div class="actions">
<button type="submit" title="<?php echo $this->__('Submit') ?>” class="button"><span><span><?php echo $this->__('Submit') ?></span></span></button>
</div>
</div>
</form>
<script type="text/javascript\">
//<![CDATA[
var newsletterSubscriberFormDetail = new VarienForm(’newsletter-validate-detail’);
//]]>
</script>
</div>

2) Създайте CMS страница. Добавете току-що създадения блок в него. Така че вашата CMS страница ще съдържа този формуляр.

3) Сега в страница \app\design\frontend\base\default\template\newsletter\subscribe.phtml добавете кода, за да добавите връзка към cms страницата.

<div class="unsubscribe">
<a href="/bg<?php echo Mage::getUrl('unsubscribe-newsletter') ?>"><?php echo $this->__('Unsubscribe') ?></a>
</div>

4) В страница \app\code\core\Mage\Newsletter\Block\Subscribe.php добавете функция за създаване на URL адрес за действие на формуляра, който се извиква в „unsubscribe.phtml“.

public function getUnsubscribeFormActionUrl()
{
return $this->getUrl(’newsletter/subscriber/unsubscribecus’, array(’_secure’ => true));
}

5) Сега в страницата \app\code\core\Mage\Newsletter\controllers\SubscriberController.php добавете ново действие за процес на отписване.

/** * Прекратяване на абонамента за бюлетин от интерфейса */

public function unsubscribecusAction()
{
$email = $this->getRequest()->getParam(’email’);
$subsModel = Mage::getModel(’newsletter/subscriber’);
$subscriber = $subsModel->loadByEmail($email);

$id = (int) $subsModel->getId();
$code = (string) $subsModel->getCode();
if ($id && $code) {
$session = Mage::getSingleton(’core/session’);
try {
Mage::getModel(’newsletter/subscriber’)->load($id)
->setCheckCode($code)
->unsubscribe();
$session->addSuccess($this->__(’You have been unsubscribed.’));
}
catch (Mage_Core_Exception $e) {
$session->addException($e, $e->getMessage());
}
catch (Exception $e) {
$session->addException($e, $this->__(’There was a problem with the un-subscription.’));
}
}
$this->_redirectReferer();
} 

person salimottmani    schedule 22.11.2013    source източник


Отговори (2)


Тъй като a не може да остави коментар и този въпрос все още не е маркиран като разрешен, предполагам, че все още се нуждаете от отговор.

Бих предложил да поставите файла unsubscribe.phtml в /template/newsletter/

За стъпка 2 можете да използвате този код

{{block type="core/template" template="newsletter/unsubscribe.phtml"}}

така че страницата ще съдържа вашия формуляр.

Ако вече сте разбрали как да направите това, моля, публикувайте отговор на собствения си въпрос по-нататък.

person user3164891    schedule 04.11.2014

Би ли било идея да добавите бутон за отписване до бутона за абониране (или да разрешите променлива в извикването на блока, която го настройва на показване с да/не) - по този начин улавяте и двете

person snh_nl    schedule 06.11.2014