Archive: May 2013

Magento: Como habilitar las rutas de phtmls y bloques en el backend

detective
Cuando realizamos desarrollos para backend, en ocasiones es necesario realizar un debug cuando necesitemos saber que template o que bloque esta conteniendo cierta información, Para esto es necesario habilitar las rutas de templates y bloques en el backend de Magento, para hacerlo, simplemente insertamos dos registros en nuestra tabla de core_config_data:

INSERT INTO core_config_data (scope, scope_id, path, value)
VALUES ('default', 0, 'dev/debug/template_hints', 1),
('default', 0, 'dev/debug/template_hints_blocks', 1);

Probamos nuestro backend, y listo.

Para deshabilitarlo, cambiamos el valor de 1 por 0.

Saludos.

Obtener el texto de multiselects en Magento

A quien no le ha pasado que queremos obtener los valores de un atributo con valores multiselects.

Para obtenerlos lo hacemos de la siguiente manera:

  $attributeMultiSelect = $_product->getAttributeText('attribute_to_display'); 
  foreach ($attributeMultiSelect as $option) {
    echo $option;
  }

Magento: Cargar Modelo por distintos campos

Cuantas veces nos hemos topado con la necesidad de cargar un modelo de datos sin conocer el id en un módulo creado por nosotros. Y nativamente no encontramos la manera de hacerlo, ya que el ORM de Magento, con un modelo recién creado, solo permite la carga de modelos a través del id. Como por ejemplo:

$model = Mage::getModel('minamespace_mimodulo/modelo')->load(5);
$model->getData();

Sí necesitamos cargar un modelo por medio de otro campo, necesitamos agregar un par de métodos en nuestras clases modelos y resources models.
Supongamos que necesitamos hacer una carga del modelo a través de un campo propio, en este caso “Teléfono”. Para esto necesitamos modificar nuestra clase ubicada en:
Minamespace_Mimodulo_Model_Modelo

public function loadByTelephone($telephone){
$this->_getResource()->loadByTelephone($this, $telephone);
return $this;
}

Con esto, indicamos que necesitamos obtener datos por medio de un método del Resource Model. Posteriormente agregamos otro método a nuestro Resource Model, ubicado en:
Minamespace_Mimodulo_Model_Mysql4_Modelo

public function loadByTelephone(Entrepids_Product_Model_Enhancement_Item     $custommoduleobj, $telephone)
{
$select = $this->_getReadAdapter()->select()
->from($this->getMainTable())
->where($this->getMainTable() . '.' . 'telephone' . '=?', $telephone);
$custommodule_id = $this->_getReadAdapter()->fetchOne($select);
if ($custommodule_id)
$this->load($custommoduleobj, $custommodule_id);
return $this;
}

Con esto estamos logrando la carga de nuestro modelo de datos especificando el query que se encargará de retornar estos datos.

Ya por último, para poder hacer uso de estos datos, lo haremos de la siguiente manera:

$model= Mage::getModel('minamespace_mimodulo/modelo')->loadByTelephone($telephone);
$model->getData();