Category: programación
crear un modulo: parte I
Esta forma modular de trabajar nos permite modificar el funcionamiento de nuestra tienda sin tocar el core de la aplicación y así aprovecharnos de sus actualizaciones sin perder lo que hemos hecho.
El primer paso es crear un Packagename, un Namespace: un espacio donde vamos a guardar nuestro código. En general se usa el nombre de la empresa. Realmente da igual el nombre que usamos, lo único es que tiene ser único (vaya redondencia). El mio es OSdave.
Creamos entonces el directorio app/code/local/OSdave/.
En el, creamos una carpeta que se llama como el módulo que estamos creando: ya que esto es un ejemplo, le llamo Helloworld/, pero lo suyo es llamarlo de manera más descriptiva de lo que hace. En esta carpeta creamos 6 más: Block/, controllers/, etc/, Helper/, Model/ y sql/.
evento change de un desplegable con jQuery en IE
una pequeña nota para quitar un poco el polvo e iniciar una nueva fase en la vida de este blog.
Estas 3 ultimas semanas me lo he pasado pipa reuniendo los pasos del checkout de una tienda OSCommerce en uno solo, a ver si algún dia me animo a preparar una contribución...
Como siempre cuando desarollo, lo hago con firefox y al final abro el putoIE a ver que le parece. El hecho de usar jQuery facilita mucho, muchissimo este proceso.
Me he encontrado con un problema hoy, y es que aparentemente hay un bug (o es que es un feature...) en la versión 1.4.2 de jQuery que hace que putoIE no entiende el evento .change().
Por lo cual, en vez de tener un código que se entiende perfectamente, así:
tengo que hacerlo así:
Vale, se entiende también bastante bien, pero realmente lo que me interesa es cuando se cambia el desplegable, no cuando le clickeo. Además, para debugearlo en putoIE le pongo un alert, pero claro, entonces no me deja seleccionar un valor de la lista ya que al hacer clic me salta el alert y no puedo hacer nada más
Enfín, nada grave, pero como he tenido que buscar esta info varias veces he pensado que estaría bien tenerla a mano, y también que estaba buscando un tema para volver a escribir algo.
mi primer modulo
¡Porfin pongo las manos dentro del código! Voy a repasar los pasos para conseguir el ejercicio del capitulo 6 del libro Guide to E-commerce Programming with MAGENTO. Este ejercicio consiste en reemplazar el cuadro de texto para introducir la cantidad que se quiere comprar de un articulo en su ficha por un desplegable con unos valores de tipo (x*1) - (x*2) - (x*3) - (x*4): pensar por ejemplo en cajas de huevos, se puede comprar una o más cajas de 6, por lo cual la cantidad pedida sera siempre un multiplo de 6. Pero no para todos los productos de la tienda (seria demasiado facil), sino solo los que elegimos.
Ademas del libro (que no tiene toda la información y parte de ella no es correcta) me he ayudado del tutorial de Fido para crear un modulo simple, que el sí esta muy bien hecho, completo y correcto.
- Ya sabemos que es mejor no tocar el código original de Magento. Lo que se recomienda es crear un directorio dentro de app/code/local/ que llamamos al nombre de la empresa (por ejemplo). La empresa para quien trabajo se llama amantis por lo cual he creado el directorio app/code/local/Amantis/ (primera letra en mayuscula, el resto en minuscula: es importante). Dentro de esta carpeta almacenaremos todos los modulos que desarollamos para esta empresa. Empezamos directamente con este: voy a trabajr con las cantidades, creo un directorio app/code/local/Amantis/Cantidades/.
Amantis es el namespace y Cantidades es el modulo. - Indicamos a Magento que hay que cargar este modulo, y como lo más probable es que haya más modulos despues, voy a reunirles todos en un fichero: app/etc/modules/Amantis_All.xml. Contiene:
<?xml version="1.0"?> <config> <modules> <Amantis_Cantidades> <active>true</active> <codePool>local</codePool> </Amantis_Cantidades> </modules> </config> - Creo app/code/local/Amantis/Cantidades/etc/config.xml para una configuración minima del modulo. Contiene:
<?xml version="1.0"?> <!-- more at http://www.magentocommerce.com/wiki/custom_module_with_custom_database_table#create_configuration_xml --> <config> <!--turn on our module, required for install support --> <modules> <Amantis_Cantidades> <version>1.0</version> </Amantis_Cantidades> </modules> <global> <blocks> <amantis_cantidades> <class>Amantis_Cantidades_Block</class> </amantis_cantidades> </blocks> </global> </config>Estos 2 pasos son fundamentales para que el modulo se active cuando se carga la pagina pero no tienen mucho misterio. Lo unico importante es respetar el UpperCamelCase. El resto habla por si solo: es la versión 1.0 del modulo, es activo, esta dentro del pool local y contiene ficheros de Block cuyas classes empezaran con Amantis_Cantidades_Block.