J 1.5.20, VM 1.1.5
все оказалось немного проще, код можно и не переделывать.
Первым делом идем в свой языковой файл админки VM. У меня это administrator/components/com_virtuemart/languages/admin/english.php, т.к. я просто файлы с русскими словами переименовал в english.php и положил в нужные папки. Ищем в этом языковом файле определение переменных VM_ALLOW_EXTENDED_CLASSES, VM_FIELDMANAGER_SHOW_ON_SHIPPING. И если их нет, то после строчки
'CHARSET' => 'utf-8',
Вставляем следующие строчки
'VM_ALLOW_EXTENDED_CLASSES' => 'Разрешить использование внешних классов в папке темы магазина?',
'VM_FIELDMANAGER_SHOW_ON_SHIPPING' => 'Показывать в форме доставки',
Это мой вольный перевод, в оригинале это было ‘Allow the inclusion of extended classes from the theme-directory’ и ‘Show in shipping form’.
То поле, что в русском переводе называется «адрес доставки»(название поля address_type_name) в оригинале называется Address Nickname. Перевод оригинального названия никак не тянет на «адрес доставки» и не зря в установках по умолчанию оно не показывается в регистрационной форме. Есть основание полагать, то это поле значит что-то вроде никнейма адреса или название адреса. Думаю, что в это поле предполагается вводить, что-то вроде "мой домашний адрес", "мой рабочий адрес" и т.п., чтобы они запомнились для зарегистрированных пользователей. Если покупки оформляются без регистрации, то это поле лучше переименовать и выключить, а поле адрес1 переименовать в "адрес доставки" и сделать обязательным. Непонятно почему именно регистрационная форма заполняется первой для заказа. Форма доставки появляется при нажатии «изменить адрес», но это не значит, что адрес доставки там заполняется. Надо понимать, что плательщик и покупатель могут быть разными лицами и это учтено в VM.
На этапе «адрес доставки» в графе адрес отображается информация из полей адрес1, адрес2, город, “лишняя” запятая, код штата(региона), название страны. Именно в таком порядке. Получается, что все кроме города, региона и страны надо вписывать в поле адрес1, а поле адрес2 вроде как запасной вариант доставки и его лучше вообще выключить, если в нем нет надобности. Если на этапе «адрес доставки» в разделе «адрес доставки» отметить «По-умолчанию (тот же, что и контактный)», то на этапе «завершить заказ» будет выведен именно этот адрес после имени и фамилии.
Если не указана страна, то на этапе адрес доставки в поле адрес будет пусто. Небольшой ньюанс в том, то Питер и Москва это город и регион одновременно, поэтому либо существенно менять код, либо убирать поле город, а сам город для не столиц вводить в поле адрес. Если кто-то все же хочет обойтись без поля страна, то надо комментировать JOIN’ы в ps_checkout.php, а именно строки примерно 744-754
$q .= "INNER JOIN #__{vm}_country c ON (i.country=c.country_3_code OR i.country=c.country_2_code) ";
$q .= "LEFT JOIN #__{vm}_state s ON (i.state=s.state_2_code AND s.country_id=c.country_id) ";
Заменить на
// $q .= "INNER JOIN #__{vm}_country c ON (i.country=c.country_3_code OR i.country=c.country_2_code) ";
// $q .= "LEFT JOIN #__{vm}_state s ON (i.state=s.state_2_code AND s.country_id=c.country_id) ";
Я считаю, что поле страны и региона полезны для ограничения вариантов доставки. Например в другой регион курьером не доставить, будет, например, курьерская служба с другими расценками.
Что касается лишней запятой, то как ни странно в админке нет задания шаблона для вывода адреса, а он жестко задается таблицей в файле
components/com_virtuemart/themes/default/templates/checkout/customer_info.tpl.php. Можно модифицировать как угодно -убрать ненужный код региона и страны, удалить вывод "компания" и "факс, выстроить данные в нужном порядке.
собственно кому помогло, кликайте на плюс в моем профиле.
