Personalización de Joomla
Sustituir el código de provincia por el nombre de provincia en pedidos
Antes de nada debemos decir que esto no es un bug de Joomla/virtuemart, sino que es la forma en la que funciona. Realmente lo que nos está mostrando es el código de 2 letras del estado.
En EEUU el código de 2 letras es de la forma (NY, GA, MN, AL, …), por lo que al mostrar en el pedido ese código se ve correcto.
Para cambiarlo lo único que hay que hacer es modificar 4 sitios para decirle que nos devuelva el campo state_name en vez del state_2_code.
En el fichero components/com_virtuemart/themes/VUESTRA_TEMPLATE/templates/checkout/customer_info.tpl.php
Sustituímos la aparición de:
$db->p("state_2_code");
Por:
$db->p("state_name");
En el fichero components/com_virtuemart/themes/VUESTRA_TEMPLATE/templates/pages/account.order_details.tpl.php
Sustituímos el código (aprox. línea 155 y línea 170):
switch($field->name) {
case 'country':
require_once(CLASSPATH.'ps_country.php');
$country = new ps_country();
$dbc = $country->get_country_by_code($dbst->f($field->name));
if( $dbc !== false ) echo $dbc->f('country_name');
break;
default:
echo $dbst->f($field->name);
break;
}
Por:
switch($field->name) {
case 'country':
require_once(CLASSPATH.'ps_country.php');
$country = new ps_country();
$dbc = $country->get_country_by_code($dbst->f($field->name));
if( $dbc !== false ) echo $dbc->f('country_name');
break;
case 'state':
$q = "SELECT state_name FROM #__{vm}_state WHERE state_2_code='".$dbst->f("state")."'";
$dbc->query($q);
$dbc->next_record();
echo $dbc->f("state_name");
break;
default:
echo $dbst->f($field->name);
break;
}
En el fichero administrator/components/com_virtuemart/html/order.order_printdetails.php
Sustituímos el código (aprox. línea 126 y línea 150):
switch($field->name) {
case 'country':
require_once(CLASSPATH.'ps_country.php');
$country = new ps_country();
$dbc = $country->get_country_by_code($dbbt->f($field->name));
if( $dbc !== false ) echo $dbc->f('country_name');
break;
default:
echo $dbbt->f($field->name);
break;
}
Por:
switch($field->name) {
case 'country':
require_once(CLASSPATH.'ps_country.php');
$country = new ps_country();
$dbc = $country->get_country_by_code($dbst->f($field->name));
if( $dbc !== false ) echo $dbc->f('country_name');
break;
case 'state':
$q = "SELECT state_name FROM #__{vm}_state WHERE state_2_code='".$dbbt->f("state")."'";
$dbc->query($q);
$dbc->next_record();
echo $dbc->f("state_name");
break;
default:
echo $dbbt->f($field->name);
break;
}
En el fichero administrator/components/com_virtuemart/html/order.order_print.php
Sustituímos el código (aprox. línea 267 y línea 297):
switch($field->name) {
case 'country':
require_once(CLASSPATH.'ps_country.php');
$country = new ps_country();
$dbc = $country->get_country_by_code($dbt->f($field->name));
if( $dbc !== false ) echo $dbc->f('country_name');
break;
default:
echo $dbt->f($field->name);
break;
}
Por:
switch($field->name) {
case 'country':
require_once(CLASSPATH.'ps_country.php');
$country = new ps_country();
$dbc = $country->get_country_by_code($dbst->f($field->name));
if( $dbc !== false ) echo $dbc->f('country_name');
break;
case 'state':
$q = "SELECT state_name FROM #__{vm}_state WHERE state_2_code='".$dbt->f("state")."'";
$dbc->query($q);
$dbc->next_record();
echo $dbc->f("state_name");
break;
default:
echo $dbt->f($field->name);
break;
}