8 cosas todo el mundo tendría que saber sobre Magento

Este artículo es una traducción del post de GUIDO JANSEN. Me pareció tan acertado que me decidí a traducirlo al español, ya que a mí también me gustaría que la gente supiera estos puntos:

  1. Magento es probablemente la mejor base para su tienda. Es la plataforma que más rápido está creciendo, una gran comunidad (aunque la hispano-hablante lleva bastante retraso), open source, muchas extensiones… El eslogan “Plataforma de comercio online para crecer” lo dice todo: es la mejor base para empezar y desarrollar su comercio online.
  2. una tienda Magento no es barato de instalar ni de mantener. La edición community, comunidad (CE), es de código abierto y gratis, las versiones comerciales valen una fracción de lo que cuesta una solución propietaria como por ejemplo Hybris, Intershop o ATG. Pero necesitarás muchas horas de desarrollo para adaptar el diseño e integrar con tus herramientas de gestión. Y ya que hay mucha demanda de desarrolladores especializados en Magento y que todavía somos pocos, la ley de la oferta y la demanda hace que sus precios suban.
  3. no os asustéis por el punto 2, porque aun así tendréis una tienda mucho mejor, más barata y flexible que con un sistema propietario. Sólo que no es gratis/barato.
  4. Magento puede ser muy rápido. Soló hay que tener un alojamiento apropiado y saber lo que hay que hacer.
  5. las agencias de desarrollo tienen que entender lo que supone trabajar con Magento. No porque hayan implementado muchos proyectos con éxito con otras plataformas repetirán los éxitos con Magento: lo más probable es que los primeros trabajos con Magento vayan a costar mucho más trabajo, o incluso fracasar. Dependiendo de la formación de los programadores (la curva de aprendizaje es dura y larga), hay que contar un mínimo de 6 meses para empezar a tener la sensación de estar algo cómodo, y un año es más realista.
  6. atender eventos relacionados con Magento (Bargento, Magento Developper Paradise) es muy bueno para el negocio. A pesar de que las tiendas webs sean virtuales por definición, en definitiva todo es acerca de personas. Participar en uno de estos eventos puede costar unos cientos de euros (contando desplazamiento, entrada, hotel, etc…), pero los contactos y el conocimiento que sacas de ellos no tienen precio.
  7. los que vamos sabiendo deberíamos compartir lo que sabemos y ayudar de vez en cuando a los que empiezan. Además de la agradable sensación de ayudar, está el pago en forma de reputación e incluso se pueden conseguir proyectos a la larga.
  8. todos los que no usan Magento deben saber que Magento le da mil vueltas a su plataforma 🙂

Y 4 puntos extras para las tiendas online en general:

  1. los empresarios que empiezan a vender productos por la web tienen que saber que el hecho de poner sus productos online no les va a hacer ricos. Abrir una tienda online es lo mismo que abrir una tienda en el mundo real: se necesita personal, mantener la tienda de vez en cuando, usar marketing para que la gente visite la tienda, proveer un soporte al cliente impecable y encontrar formas de aumentar la lealdad de sus clientes para que vuelvan y lo comenten con sus amigos.
  2. abrir la tienda online no significa que hayas acabado, más bien que justo has empezado.
  3. es mejor sacar novedades con una frecuencia relativamente alta que largo plazos sin cambios en la página. No se puede planear todo, no sabes todo sobre tus clientes, no sabes lo que mejor funciona. Simplemente no lo sabes. Por eso es mejor probar cuantas más cosas diferentes para averiguarlo.
  4. las mejores decisiones se basan en resultados de tests. Una de las cosas buenas de las tiendas online es que se puede medir y probar (casi) todo. Usa esto a tu favor: no tomes decisiones basándote únicamente en la opinión de la gente trabajando en el proyecto o en tus instintos. Prueba y aprende.

[SEGURIDAD] 3 fallos XSS en el admin de Magento

Security Focus ha revelado antes de ayer 3 fallos de seguridad por inyección XSS relativos a 3 paginas del admin:

  1. El downloader (www.dominio.com/magento/downloader): Para verlo, ir a http://www.dominio.com/magento/downloader?return=%22%3Cscript%3Ealert(xss)%3C/script%3E.
    Para corregirlo, abrir /downloader/Maged/Model/Session.php y reemplazar las lineas 60-62:

    60
    61
    62
    
            if (!empty($_GET['return'])) {
                $this->set('return_url', $_GET['return']);
            }

    por estas:

    60
    61
    62
    
            if (!empty($_GET['return'])) {
                $this->set('return_url', htmlentities($_GET['return']));
            }
  2. Login del administración: Para verlo, poner
    "><script>alert('xss')</script>

    en el campo Nombre de Usuario y lo que sea en de contraseña.
    Para corregirlo, abrir app\design\adminhtml\default\default\template\login.phtml y reemplazar la linea 54:

    54
    
                            <input type="text" id="username" name="login[username]" value="<?php echo $username ?>" class="required-entry input-text" /></div>

    con

    54
    
                            <input type="text" id="username" name="login[username]" value="<?php echo htmlentities($username) ?>" class="required-entry input-text" /></div>
  3. La pagina que reenvia la contraseña del administrador: Para verlo ir a Para verlo, ir a http://www.dominio.com/magento/admin/admin/index/forgotpassword/ y hacer lo mismo que en el punto 2.
    Para corregirlo, abrir app\design\adminhtml\default\default\template\forgotpassword.phtml y reemplazar la linea 58:

    58
    
                            <input type="text" id="email" name="email" value="<?php echo $email ?>" class="required-entry input-text forgot-password" style="width:461px;" />

    con

    58
    
                            <input type="text" id="email" name="email" value="<?php echo htmlentities($email) ?>" class="required-entry input-text forgot-password" style="width:461px;" />

De todas formas, como regla general nunca entrar en el admin a partir de un enlace que os pasan, así se evitan estos peligros. Cuando cambiais el código, cuidado con las comillas, que no sé si copiaran bien o no (de lo que he probado si se guardan bien, pero estad atento 😉 )
Lo he visto donde nuestros vecinos franceses.

Edito: para completar este tema, en el blog oficial explican que una buena practica es de cambiar el nombre del admin,o sea en vez de tener el panel de administración en http://www.midominio.com/magento/admin algo como http://www.midominio.com/magento/loqueyodiga .
Esto se puede especificar en el proceso de instalación de la tienda, pero por si lo queremos cambiar despues, en una tienda en funcionamiento, hay que editar el archivo app/etc/local.xml cambiando el valor de admin->routers->adminhtml->args->frontName:

53
54
55
56
57
58
59
60
61
     <admin>
        <routers>
            <adminhtml>
                <args>
                    <frontName><![CDATA[loqueyodiga]]></frontName>
                </args>
            </adminhtml>
        </routers>
     </admin>

completar la instalación

Después de instalar magento (cfr nuestros manuales o un howto incluyendo la instalación del servidor wamp en windows xp), hay una serie de pasos que seguir para poder empezar a trabajar.
Vamos a repasar estos pasos.

  • magentoconnect:
    Cuando entramos por primera vez al magentoconnect (System->Magento Connect->Magento Connect Manager) no aparece nada. Para ver la lista de modulos (core+extensiones instaladas) basta pegar en el cuadro de texto “Paste extension key to install” esto:

    magento-core/Mage_All_Latest

    y luego dar al botón install.

  • Instalar el idioma español:
    Nos quedamos en el Magento Connect Manager y vamos a la pestaña Settings. En el desplegable Preferred State seleccionamos Beta y guardamos el cambio con el botón “Save Settings”. Volvemos en la pestaña Extensions y pegamos

    magento-community/Locale_Mage_community_es_ES
  • Crear el tema:
    Para evitar que desaparezcan los cambios de diseño que hacemos a cada actualización de Magento, vamos a trabajar con nuestro propio tema. Dentro de /app/design/frontend/default/ creamos un directorio que llamamos mi_tema, por ejemplo y pegamos el contenido de /app/design/frontend/default/default/ dentro. Hacemos lo mismo en el directorio skin/frontend/default/.
    Ya podemos activar nuestro tema, en Sistema->Configuración->(General)Diseño la pestaña Temas en el campo Por defecto ponemos mi_tema (o como sea que hayamos llamado el directorio).

Y ya estamos listos para empezar a trabajar en nuestra tienda. Os recomiendo leer los tutoriales y las preguntas frecuentes del foro para seguir avanzando.