Mostrando entradas con la etiqueta magento. Mostrar todas las entradas
Mostrando entradas con la etiqueta magento. Mostrar todas las entradas

Magento redirects a la vieja URL luego de mover un site

Mover un site Magento (casi) siempre es problemático. Y una de las cosas más aburridas es actualizar las URLs de las tiendas luego de mover un site.

Por lo cual me hice un pequeño script para automatizar un poco esto.

Para ejecutarlo hay que crear un carpeta llamada [MAGE_ROOT]/scripts/update-stores_urls y meter este php (update-stores-urls.php):
<?php

/*
 * Luego de importar el SQL de un website Magento actualiza las URLs de las tiendas.
 * 
 * 1. Setear el host para las urls unsecure.
 * 2. Setear el host para las urls secure.
 * 3. Setear los datos de conexión a la base de datos.
 * 4. Ejecutar desde la línea de comandos: 
 * 
 * $ sh run.sh
 * 
 */

define ('SOURCE_HOST_UNSECURE', 'http://www.mysite.com/');
define ('SOURCE_HOST_SECURE', 'https://www.mysite.com/');

define ('TARGET_HOST_UNSECURE', 'http://new.mysite.local/');
define ('TARGET_HOST_SECURE', 'http://new.mysite.local/');

$db['name'] = 'db_magento';
$db['user'] = 'db_user';
$db['pass'] = 'db_pass';
$db['host'] = 'db_host';

$conn = mysql_connect($db['host'],$db['user'],$db['pass']);
@mysql_select_db($db['name']) or die(mysql_error());

// Se actualizan las URLs no seguras
$query = "SELECT config_id, value FROM core_config_data WHERE path LIKE 'web/unsecure/%'";

$result = mysql_query($query);

while ($row = mysql_fetch_assoc($result)) {
    $config_id = $row['config_id'];
    $value = str_replace(SOURCE_HOST_UNSECURE, TARGET_HOST_UNSECURE, $row['value']);
    
    $query = "UPDATE core_config_data SET value = '$value' WHERE config_id = $config_id";
    
    echo $query . "\n";
    
    mysql_query($query);
}


// luego actualizo los configs secure
$query = "SELECT config_id, value FROM core_config_data WHERE path LIKE 'web/secure/%'";

$result = mysql_query($query);

while ($row = mysql_fetch_assoc($result)) {
    $config_id = $row['config_id'];
    $value = str_replace(SOURCE_HOST_SECURE, TARGET_HOST_SECURE, $row['value']);
    
    $query = "UPDATE core_config_data SET value = '$value' WHERE config_id = $config_id";
    
    echo $query . "\n";
    
    mysql_query($query);
}

echo "Actualizadas las URLs de las tiendas :)\n";

?>

Y el siguiente sh (run.sh):
# actualizacion de las urls en la bd
php update-stores-urls.php

# limpieza de la cache
rm -fr ../../var/cache/*
rm -fr ../../var/session/*

Para ejecutarlo correr desde línea de comandos:
$ sh run.sh

Para más info de cómo acá hice un mini tutorial sobre los pasos a seguir para mover / copiar un site Magento a un servidor MAMP.

Cómo eliminar la caja de comparar productos del sidebar de Magento.

Una vez más se puede utilizar el local.xml para modificar el layout y así eliminar la caja de comparar productos en el sidebar de Magento.

Para eliminar dicha caja de todo tu site de Magento tenés que poner lo siguiente:

<default>
<remove name="catalog.compare.sidebar"/>
</default>

Cómo eliminar CSS de ciertas páginas en Magento

Puede ser que tengas un css en tu layout que quieras que no esté en determinada página de Magento.

Para esto se puede utilizar el sistema de layouts de Magento poniendo lo siguiente:

<reference name="head"> 
<action method="removeItem"> 
<type>skin_css</type> 
<name>filename.css></name> 
<params /> 
</action> 
</reference>

Esto se puede poner en el local.xml o también si es una página del CMS de Magento en CMS > Custom Design > Layout Update XML.

Algo similar se puede hacer si necesitás eliminar JS de ciertas páginas.

Cómo actualizar los índices de Magento desde consola

Los índices de Magento se pueden actualizar desde el backend (Sistema > Index Management) o mediante un comando por consola.

Para actualizar los índices por consola hay que situarse en el directorio "shell" y lanzar el siguiente comando:

# php indexer.php reindexall

Cómo deshabilitar productos en Magento.

Si bien se puede deshabilitar uno a uno los productos en Magento, o también hay algunos módulos que permiten hacer batch update, o incluso se pueden utilizar los perfiles de importación para actualizar los productos, hacerlo de manera programática consume muchos recursos y muchas veces al hacer actualizaciones de muchos productos Magento explota.

Entonces, para hacerlo de manera rápida se puede lanzar un query que actualice el atributo "status" al valor 2 (deshabilitado).

Para ello se puede utilizar el siguiente query:

UPDATE catalog_product_entity_int cpei, catalog_product_entity cpe
SET cpei.value = "2"
WHERE cpe.entity_id = cpei.entity_id
AND cpe.sku LIKE '%SKU%'
AND cpei.attribute_id = 273

Luego de lanzar el query hay que actualizar los índices de Magento. Esto se puede hacer desde el backend o por consola (hay que situarse en el directorio shell):

# php indexer.php reindexall

Importante: el id del atributo status (273 en mi ejemplo) puede variar según la instalación de Magento.

Para saber el id del atributo "status" se puede ir a Catálogo > Atributos > Gestionar los atributos > buscar por código el atributo status > hacer click sobre el mismo > copiar el id que aparece en la url.

Por ejemplo: admin/catalog_product_attribute/edit/attribute_id/273

Programador PHP Argentina

Hola.

Soy un programador freelance de Argentina que se dedica al desarrollo de aplicaciones web.

Desde hace más de 7 años que me dedico al desarrollo de aplicaciones PHP. Empecé con PHP "puro y duro" por así decirlo.

Luego estuve viendo los diferentes frameworks MVP del mercado de los cuales los que más me gustaron son Zend y Symphony.

Y finalmente comencé a trabajar con los diferentes CMS que hay para PHP para no "reinventar la rueda" :)

Trabajé con Wordpress y Drupal a nivel CMS. Y en cuanto a tiendas online con Magento y Prestashop.

Ahora mismo, además de dedicarme al desarrollo de aplicaciones web me encuentro trabajando en el desarrollo de aplicaciones móviles. Principalmente me dedico a iOS con Objective, pero también (dependiendo del proyecto) trabajo con Android (desde 2.2 en adelante) y con jQuery Mobile (para el caso de web applications móviles).

Si tenés alguna duda o querés un presupuesto contactame acá que hoy mismo me pongo en contacto con vos.

Cómo comprobar si funciona el envío de emails de Magento

Hay veces en las cuales es necesario comprobar si Magento está enviando de manera correcta los emails y no hay en el backend un botón "Enviar email".

Una manera fácil de comprobar si nuestra tienda de Magento está enviando los emails correctamente es tener un usuario de pruebas y desde el backend resetear su password.

Si está funcionando correctamente le llegará el email al usuario. Si no no llega es porque hay algún problema con el envío de emails.

"Calle" la longitud debe ser igual o mayor que 1 caracteres.

En Magento hay un bug que molesta y es que cuando el usuario selecciona "Otro" en tipo vía sale este mensaje sin solución aparente:










PayPal gateway has rejected request. Callback URL is wrong type; you must use the HTTPS (#11813: Callback URL is wrong type).

Esto ocurre en Magento cuando se configura para utilizar el Express Checkout y no está configurado un certificado SSL en el servidor.

Paypal espera una URL de respuesta https://

Cómo eliminar órdenes en Magento

Hay una extensión de Magento que funciona muy bien y encima es gratuita :)

La extensión se llama Seamless Delete Order.

cache_dir is not writable | Magento 1.6.2

Luego de subir mi instalación fresquita de Magento me encontré con este problema:

cache_dir is not writable

La solución fue darle permisos 777 a la carpeta /var


chmod -R 777 var/ 

Mage registry key "_resource_helper/core" already exists | Magento 1.6.2

Luego de desarrollar mi site de Magento en local y subirlo al servidor me encontré con el siguiente error:

Mage registry key "_resource_helper/core" already exists

El problema lo pude resolver con los siguientes pasos: 

Eliminando la cache y las sessiones :
 
rm -rf var/cache/* var/session/*

Y luego haciendo un fix de los permisos de los archivos:

 
    #for magento 1.5+
    find . -type f -exec chmod 644 {} \;
    find . -type d -exec chmod 755 {} \;
    chmod o+w var var/.htaccess app/etc
    chmod 550 mage
    chmod -R o+w media

Cómo obtener todos los posibles valores de los atributos de un producto configurable.

Para obtener todos los posibles valores de los atributos un producto configurable se puede utilizar el siguiente código:

 
// Collect options applicable to the configurable product
$productAttributeOptions = $product->getTypeInstance(true)->getConfigurableAttributesAsArray($product);
$attributeOptions = array();
foreach ($productAttributeOptions as $productAttribute) {
    foreach ($productAttribute['values'] as $attribute) {
        $attributeOptions[$productAttribute['label']][$attribute['value_index']] = $attribute['store_label'];
    }
}

Cómo ordenar los atributos de un producto configurable

Estoy haciendo un Magento para vender remeras.

Cada remera es un producto configurable que tiene dos atributos: Color y Talla.

Por defecto salía primero el Color y luego la Talla, y yo necesitaba mostrar primero el Color. Aparentemente Magento ordena los atributos por el ID de manera descendiente.

La solución que encontré es la lanzando esta query por phpMyAdmin

UPDATE catalog_product_super_attribute SET position = 1 WHERE attribute_id = ‘your_attribute_id’ 
Más info acá.

Cómo eliminar el sufijo .html de las páginas de productos y categorías en Magento

Hay que ir en el administrador a System > Config > Catalog y eliminar el sufijo ".html".

 

Luego hay que volver a reindexar. System > Index Management > Reindex all

Couldn't resolve host 'magento-community'

Estaba intentando descargar un módulo de Magento y me daba el siguiente error: 

Couldn't resolve host 'magento-community'

Para solucionarlo hay que anteponer el host de Magento: http://connect20.magentocommerce.com/

Por ejemplo:

http://connect20.magentocommerce.com/community/banner 

isEnabledViewSwitcher

Para quitar el módulo View By del front de Magento hay que ir a Sistema > Catalog > Catalog y seleccionar o bien "Grid only" o bien "List only".