Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Как вывести в ЛК адреса доставки на первой странице


Recommended Posts

Люди, хочу вывести на странице, куда клиент попадает после входа в ЛК, в том числе, внесённые адреса доставки. Они отображаются на странице, где их можно редактировать. Там оно выглядит так:

post-17751-0-52694500-1331898253_thumb.jpg

выводится таким кодом:

<?php echo $result['address']; ?>

Хочу вывести здесь:

post-17751-0-73437800-1331898267_thumb.jpg

Понимаю, что для этого в controller/account/account.php надо прописать код вывода. С простыми вещами вроде имени, фамилии, мэйла всё понятно, я их выводила через такой код:

  $this->data['firstname'] = $this->customer->getFirstName();

А вот как вывести адреса доставки? что надо добавить в controller/account/account.php, чтобы выводилась $result['address']; ??? Подскажите, плз!

  • +1 2
Надіслати
Поділитися на інших сайтах


Мда... в итоге разобралась сама, не понимаю, каким чудом (настырностью и досадой на отсутствие малейших подсказок);) всё же получилось! :eek:

Делюсь, вдруг кто ещё захочет вывести на главной странице личного кабинета основную информацию клиента вот в таком виде:

post-17751-0-60588000-1332100564_thumb.jpg

ШАГ 1. Задаём 3 таблицы (css-классы прописывайте как вам надо самим, они не из шаблона) в catalog/view/theme/default/template/account/account.tpl

1) таблица с основными контактными данными клиента

<table>
  <tr>
<!-- текст ФАМИЛИЯ -->
   <td width="190"><b><?php echo $entry_lastname; ?>:</b></td>
<!-- вывод фамилии клиента -->
   <td width="260"><?php echo $lastname; ?></td>
   <td> </td>
  </tr>
  <tr>
<!-- текст ИМЯ И ОТЧЕСТВО -->
   <td width="190"><b><?php echo $entry_firstname; ?>:</b></td>
<!-- вывод имени отчества клиента -->
   <td width="260"><?php echo $firstname; ?></td>
   <td> </td>
  </tr>
  <tr>
<!-- текст ДАТА РОЖДЕНИЯ, у меня это бывшее поле ФАКС -->
   <td width="190"><b><?php echo $entry_fax; ?>:</b></td>
<!-- вывод  даты рождения клиента -->
   <td width="260"><?php echo $fax; ?></td>
<!-- ссылка ИЗМЕНИТЬ КОНТАКТНЫЕ ДАННЫЕ -->
   <td><a href="<?php echo $edit; ?>" class="account_slink"><span><?php echo $text_edit; ?></span></a></td>
  </tr>
  <tr>
<!-- текст ТЕЛЕФОН -->
   <td width="190"><b><?php echo $entry_telephone; ?>:</b></td>
<!-- вывод номера телефона клиента -->
   <td width="260"><?php echo $telephone; ?></td>
   <td> </td>
  </tr>
  <tr>
<!-- текст Е-MAIL -->
   <td width="190"><b><?php echo $entry_email; ?>:</b></td>
<!-- вывод электронного адреса клиента -->
   <td width="260"><?php echo $email; ?></td>
   <td> </td>
  </tr>
 </table>

2) таблица с внесёнными адресами доставки:

  	 <table>
           <tr>
<!-- текст АДРЕСА ДОСТАВКИ -->
               <td width="190"><b><?php echo $text_shipping; ?></b></td>
               <td width="260">
                   <div style="margin:-5px 0px -10px 0px;">
<!-- вывод всех внесённых адресов клиента -->
                       <?php foreach ($addresses as $result) { ?>
                           <div style="padding:5px;"><?php echo $result['address']; ?></div>
                       <?php } ?>
                   </div>
               </td>
<!-- ссылка ИЗМЕНИТЬ АДРЕСА ДОСТАВКИ -->
               <td><a href="<?php echo $address; ?>" class="account_slink"><span><?php echo $text_address; ?></a></span></td>
           </tr>
       </table>

3) таблица с бонусными баллами:

  	 <table>
           <tr>
<!-- текст ВСЕГО БОНУСНЫХ БАЛЛОВ -->
               <td width="190"><b><?php echo $text_rewards_total; ?>:</b></td>
<!-- вывод итоговой суммы клиентских ББ -->
               <td width="260"><?php echo $total; ?></td>
               <td><a href="<?php echo $reward; ?>" class="account_slink">
<!-- ссылка ИСТОРИЯ ББ -->
			    <span><?php echo $text_reward; ?></span></a>
		    </td>
           </tr>
       </table>

ШАГ 2. Код вывода адресов доставки клиента (из-за чего, собственно, и парилась), прописываем в catalog/controller/account/account.php

1) после строки 8, где

$this->language->load('account/account');

вписываем

           $this->load->model('account/address');
      	 $this->getList();

2) между

      	 $this->response->setOutput($this->render());
     }

и 2-мя последними строками

}
?>

вписываем (сорри, если там что лишнее попало);)

     private function getList() {    

           $this->data['addresses'] = array();

       $results = $this->model_account_address->getAddresses();

           foreach ($results as $result) {
           if ($result['address_format']) {
                  $format = $result['address_format'];
               } else {
               $format = '{firstname} {lastname}' . "\n" . '{company}' . "\n" . '{address_1}' . "\n" . '{address_2}' . "\n" . '{city} {postcode}' . "\n" . '{zone}' . "\n" . '{country}';
           }

           $find = array(
             '{firstname}',
             '{lastname}',
             '{company}',
              '{address_1}',
              '{address_2}',
                '{city}',
              '{postcode}',
              '{zone}',
           '{zone_code}',
              '{country}'
           );

       $replace = array(
             'firstname' => $result['firstname'],
             'lastname'  => $result['lastname'],
             'company'   => $result['company'],
              'address_1' => $result['address_1'],
              'address_2' => $result['address_2'],
              'city'	  => $result['city'],
              'postcode'  => $result['postcode'],
              'zone'	  => $result['zone'],
           'zone_code' => $result['zone_code'],
              'country'   => $result['country']  
           );

          $this->data['addresses'][] = array(
            'address_id' => $result['address_id'],
            'address'    => str_replace(array("\r\n", "\r", "\n"), '<br />', preg_replace(array("/\s\s+/", "/\r\r+/", "/\n\n+/"), '<br />', trim(str_replace($find, $replace, $format)))),
            'update'	 => $this->url->link('account/account/update', 'address_id=' . $result['address_id'], 'SSL'),
           'delete'	 => $this->url->link('account/account/delete', 'address_id=' . $result['address_id'], 'SSL')
          );
       }

     }

3) в том же файле прописываем вывод всех переменных - всё, кроме адресов доставки, которые мы уже прописали ранее.

Итак, после:

  	 if (isset($this->session->data['success'])) {
               $this->data['success'] = $this->session->data['success'];
           unset($this->session->data['success']);
       } else {
           $this->data['success'] = '';
       }

               $this->data['heading_title'] = $this->language->get('heading_title');

               $this->data['text_my_account'] = $this->language->get('text_my_account');    
           $this->data['text_my_profile'] = $this->language->get('text_my_profile');
           $this->data['text_my_orders'] = $this->language->get('text_my_orders');
           $this->data['text_my_newsletter'] = $this->language->get('text_my_newsletter');
               $this->data['text_edit'] = $this->language->get('text_edit');
               $this->data['text_password'] = $this->language->get('text_password');
               $this->data['text_address'] = $this->language->get('text_address');
           $this->data['text_wishlist'] = $this->language->get('text_wishlist');
               $this->data['text_order'] = $this->language->get('text_order');
               $this->data['text_download'] = $this->language->get('text_download');
           $this->data['text_reward'] = $this->language->get('text_reward');
           $this->data['text_return'] = $this->language->get('text_return');
           $this->data['text_transaction'] = $this->language->get('text_transaction');
           $this->data['text_newsletter'] = $this->language->get('text_newsletter');

вставляем:

 
           $this->data['entry_firstname'] = $this->language->get('entry_firstname');
           $this->data['entry_lastname'] = $this->language->get('entry_lastname');
           $this->data['entry_email'] = $this->language->get('entry_email');
           $this->data['entry_telephone'] = $this->language->get('entry_telephone');
           $this->data['entry_fax'] = $this->language->get('entry_fax');
      	 $this->data['text_shipping'] = $this->language->get('text_shipping');
      	 $this->data['text_rewards_total'] = $this->language->get('text_rewards_total');

           $this->data['firstname'] = $this->customer->getFirstName();
           $this->data['lastname'] = $this->customer->getLastName();
           $this->data['email'] = $this->customer->getEmail();
           $this->data['telephone'] = $this->customer->getTelephone();
           $this->data['fax'] = $this->customer->getFax();
           $this->data['total'] = $this->customer->getRewardPoints();

Это у нас выводятся тексты-заголовки в таблицах (по-порядку см.: Имя и отчество, Фамилия, Е-mail, Телефон, Дата рождения, Адреса доставки, Итого бонусных баллов), а также во второй части этого списка прописан вывод данных клиента.

Я все писала через переменные, поскольку у меня сайт на двух языках. Соответственно, теперь надо заложить вывод текстов заголовков на русском и английском языках.

ШАГ 3. Лезем в языковые файлы: catalog/language/english/account/account.php и catalog/language/russian/account/account.php и добавляем в английский:

$_['text_rewards_total']  = 'Reward points total';
$_['text_shipping']	  = 'Shipping adresses';

// Entry
$_['entry_firstname']  = 'First Name';
$_['entry_lastname']   = 'Last Name';
$_['entry_email']	  = 'E-mail';
$_['entry_telephone']  = 'Telephone';
$_['entry_fax']	    = 'Date of Birth';

и в русский:

$_['text_rewards_total'] = 'Всего бонусных баллов';
$_['text_shipping']	  = 'Адреса доставки';

// Entry
$_['entry_firstname']	 = 'Имя и отчество';
$_['entry_lastname']	  = 'Фамилия';
$_['entry_email']		 = 'E-mail';
$_['entry_telephone']	 = 'Телефон';
$_['entry_fax']		   = 'Дата рождения';

Вуаля! :) Рада, если кому понадобилось :)

Змінено користувачем bochicca
  • +1 2
Надіслати
Поділитися на інших сайтах


  • 2 years later...
  • 7 years later...

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.