Supongamos que necesitamos armar un formulario de contacto adicional al que ya provee Magento. Supongamos también que necesitamos utilizar datos de la plataforma.
En éste ejemplo vamos a ver cómo invocar las provincias/regiones en nuestro formulario.
La porción de código referente al dropdown que mostrará las regiones se vería, pensando en el skin default, de la siguiente manera:
<div class="input-box">
<label for="state"><?php echo Mage::helper('customcontacts')->__('State') ?> <span class="required">*</span></label><br />
<?php $_regions = Mage::getModel('directory/region')->getCollection();?>
<select name="state" id="state" class="required-entry validate-select">
<option value=""><?php echo Mage::helper('customcontacts')->__('Select State') ?></option>
<?php foreach($_regions as $_region): ?>
<option value="<?php echo $_region->getName(); ?>"><?php echo $_region->getName(); ?></option>
<?php endforeach; ?>
</select>
</div>El resultado de éste código seria el siguiente.
Ahora bien, no buscamos todas las provincias, estados o regiones que tenemos disponibles, sino que vamos a filtrar según un país dado.
En el ejemplo, previo instalación de la extensión Dc_Argentineregions, vamos a buscar obtener sólo las provincias de Argentina.
Para esto, tenemos que hacer un pequeño cambio a nuestro código.
<div class="input-box">
<label for="state"><?php echo Mage::helper('customcontacts')->__('State') ?> <span class="required">*</span></label><br />
<?php $_regions = Mage::getModel('directory/region')->getResourceCollection()->addCountryFilter('AR')->load();?>
<select name="state" id="state" class="required-entry validate-select">
<option value=""><?php echo Mage::helper('customcontacts')->__('Select State') ?></option>
<?php foreach($_regions as $_region): ?>
<option value="<?php echo $_region->getName(); ?>"><?php echo $_region->getName(); ?></option>
<?php endforeach; ?>
</select>
</div>Y el resultado será el siguiente:
Lo que hicimos fue cambiar el método de lectura del modulo y agregarle el método addCountryFilter pasandole el código del país que necesitamos.


Damian. como siempre un buen post ;)
Si queremos que nos aparezca los datos de empresa al crear una cuenta, lo podemos en template/customer/form/register.phtml.
Simplemente comentamos las 4 linias de if($this->getShowAddressFields() y el endif y lo tenemos operativo (no he sabido encontrar esta opción via panel de control de mgn para activar; por eso, ataco directamente a plantilla ;) ).
En tu caso, si sólo quieres provincias de Argentina, este caso que comentas es correcto. Pero que pasa si permites vender a varios países? mejor utilizar getRegionJson de Magento. Ya que al mostrar los datos directamente en el necesitas AJAX para si inserir manualmente o selector tu provincia.
Más sobre el tema:
http://www.magentocommerce.com/boards/viewthread/43354/
@raimonsteve
Genial aporte el de tu comentario.
Definitivamente tenés razón. En el escenario de múltiples países ese es el approach correcto.
En mi caso era un formulario muy puntual, sólo para un país, por lo cual ambos métodos aplican.
Este post surgió debido a un set de formularios de contacto que me pidieron para una tienda. En breve voy a subir un par de posts sobre cómo hacer un formulario de contacto custom juntos con algunos otros trucos del tema.
Saludos.