fsv, спасибо большое за подробный ответ! Как вариантом, им воспользуюсь. Но хотелось бы понять, можно ли исправить сей косяк без танцев с бубном и откуда ноги этого бага растут.
Мне и самому не нравиться это решение
. Слишком надуманное и не решает проблему отображения излишней информации. Придумал его примерно неделю назад, чтобы быстрее продвинуться с сайтом дальше. Но пометил, что надо вернуться к этому вопросу, когда будет время. Сегодня вроде как было...
Вариант решения (все сначала, прошлое не смотрим):
При заказе для доставки используется «Адрес 1» - address_1 (PHPSHOP_SHOPPER_FORM_ADDRESS_1).
«Адрес доставки» - address_type_name (PHPSHOP_USER_FORM_ADDRESS_LABEL) используется в «Управление учетной записью»- названия дополнительных адресов доставок в соответствующем перечне.
«Адрес доставки» - address_type_name - на мой взгляд, лишнее поле.
Возможное решение:
в файле \administrator\components\com_virtuemart\languages\common\russian.php
стр.185: 'PHPSHOP_SHOPPER_FORM_ADDRESS_1' => 'Адрес 1',
меняем на 'PHPSHOP_SHOPPER_FORM_ADDRESS_1' => 'Адрес',
Для того, чтобы не использовать вообще «Адрес доставки» - address_type_name (PHPSHOP_USER_FORM_ADDRESS_LABEL)
\components\com_virtuemart\themes\default\templates\pages\account.shipping.tpl.php
стр.31
<?php echo $db->f("address_type_name"); ?></a>
заменить на:
<?php echo $db->f("last_name"). " ". $db->f("first_name"). " (" . $db->f("city"). ", ". $db->f("country"). ")"; ?></a>
Также в «Управление полями, заполняемыми пользователем» скрываем во всех столбцах «Адрес доставки» - address_type_name.
Что получим:
в качестве «кода/условного обозначения адреса доставки» в списке «Управление учетной записью – Адреса доставки» будет выводиться:
- Фамилия Имя (город, код3_страны)
Если надо в другом виде, меняем соответствующим образом вышеуказанную строку.
Проверил, у меня работает.
Дополнение 08.05.11:если снять с публикации address_type_name и, соответственно, это поле в базе будет пустым, то:
1) Админпанель VirtueMart – Настройки - Пользователи – выбранный Пользователь – вкладка Информация о покупателе – Адрес доставки
не отображаются дополнительные адреса доставок этого пользователя.
\administrator\components\com_virtuemart\html\admin.user_form.php
стр.411
echo $dbt->f("address_type_name"). "</a><br/>";
заменить на
echo $dbt->f('last_name')." ".$dbt->f('first_name')." (".$dbt->f('city').", ".$dbt->f('country').") "."</a><br/>";
Что получим:
в качестве «кода/условного обозначения адреса доставки» будет выводиться в виде ссылки
- Фамилия Имя (город, код3_страны)
Если надо в другом виде, меняем соответствующим образом вышеуказанную строку.
2) В Админпанель VirtueMart - Заказы – Список заказов – выбранный заказ
(или Админпанель VirtueMart – Настройки - Пользователи – выбранный Пользователь – вкладка Список заказов (появляется, если у этого пользователя есть заказ) - выбранный заказ) – одна ссылка –
- есть для смены данных Покупателя выпадающий список Change Billto Address с перечнем «Фамилия, Имя» Покупателей, имеющих статус «ВТ»;
- и есть для смены адреса доставки выпадающий список Change Shipto Addresss с перечнем «Фамилия, Имя» Покупателей, имеющих
дополнительные адреса доставок со статусом «SТ».
И здесь пусто! (кроме default адреса – BT).
но если нажать на пустую строку, соответствующую доп.адресу, доп.адрес выбирается\administrator\components\com_virtuemart\classes\ps_order_change_html.php
стр.90
$q = "SELECT user_info_id, address_type_name FROM #__{vm}_user_info WHERE user_id = '" . $user_id . "' ORDER BY address_type_name ASC";
заменить на
$q = "SELECT user_info_id, last_name, first_name FROM #__{vm}_user_info WHERE user_id = '" . $user_id . "' ORDER BY last_name ASC";
стр.95
print $dbs->f('address_type_name');
заменить на
print $dbs->f('last_name').", ".$dbs->f('first_name');
Что получим:
в выпадающем списке «Фамилия, Имя» из доп.адресов+осн.адреса
Если надо в другом виде, меняем соответствующим образом вышеуказанную строку.