Отключить редактирование платежного адреса


Есть ли способ предотвратить изменение платежного адреса всеми пользователями? После ввода платежного адреса при регистрации я не хочу позволять пользователям изменять его. Большое спасибо.

Author: Mario Villani, 2014-12-15

1 answers

Уведомление

То, о чем вы просите, становится сложным, если учесть, как Magento управляет платежным адресом. Любой адрес может быть адресом для выставления счетов. Клиент может просто выбрать его из компонента меню в различных точках системы (например, оформление заказа, экран адресной книги).

Даже если вы ограничите редактирование "платежного адреса по умолчанию", это также создаст для вас некоторые накладные расходы, учитывая, что Magento позволяет вам установить любой адрес в вашей адресной книге в качестве адреса по умолчанию платежный адрес. Другими словами, клиент может отредактировать адрес "без выставления счетов", а затем установить его в качестве платежного адреса по умолчанию. Вам было бы неудобно писать код для управления этим.

И используете ли вы какие-либо сторонние расширения, которые обеспечивают редактирование адресов на интерфейсе? Здесь есть о чем подумать.

Решение

Убрав отказ от ответственности, вы можете просто запретить редактирование адреса, изменив 2 шаблоны:

# File: app/design/frontend/[package]/[theme]/template/customer/address/book.phtml
...
<h2><?php echo $this->__('Default Addresses') ?></h2>
<ol>
<?php if($_pAddsses = Mage::getSingleton('customer/session')->getCustomer()->getDefaultBilling()): ?>
    <li class="info-box">
        <div class="title-wrap">
            <h3><?php echo $this->__('Default Billing Address') ?></h3>
            <?php /*<a href="<?php echo $this->getAddressEditUrl(Mage::getSingleton('customer/session')->getCustomer()->getAddressById($_pAddsses)) ?>"><?php echo $this->__('Change Billing Address') ?></a>*/ ?>
        </div>              
        <address class="box-content">
            <?php echo $this->getAddressHtml(Mage::getSingleton('customer/session')->getCustomer()->getAddressById($_pAddsses)) ?>
        </address>
   </li>
<?php else: ?>
    <li class="info-box">
        <h3><?php echo $this->__('Default Billing Address') ?></h3>
        <?php echo $this->__('You have no default billing address in your address book.') ?>
...

Смотрите строку 9; здесь мы просто закомментируем ссылку для редактирования адреса. Не безопасно, но дает вам возможность начать.

# File: app/design/frontend/[package]/[theme]/template/customer/address/edit.phtml
...
<?php
/**
 * Edit customer address template
 *
 * @see Mage_Customer_Block_Address_Edit
 */
?>
<?php if($this->getTitle()): ?>
<div class="page-title">
    <h1><?php echo $this->getTitle() ?></h1>
</div>
<?php endif; ?>
<?php if ($address->getId() === Mage::getSingleton('customer/session')->getCustomer()->getDefaultBilling()) :?>
<p><?php echo $this->__('Sorry, but you cannot modify this address.'); ?></p>
<?php else : ?>
...
<?php endif; ?>

Под заголовком мы добавляем некоторую дополнительную логику, которая проверяет, является ли редактируемый адрес выставлением счетов по умолчанию. Если это так, он не будет отображать форму редактирования и вместо этого отобразит общее сообщение.

 3
Author: Rick Buczynski, 2014-12-15 19:00:22