Comprimir .js o .css

¿alguna vez os habéis acordado de algún programador por no haber indentado un programa?

¿os habéis planteado que ocurre muy habitualmente en los .js y .css?

Es una práctica recomendada por google ahora y consiste en eliminar todo tipo de código de programación inútil como blancos, tabulaciones, indentados, controles de carro,…y dejar únicamente el código útil.

Es sencillo porque hay dos compresores que te ayudan a ello y no es necesario desarrollar nada. Por ello, os dejo aquí el enlace a ese compresor demo que te ayuda poniendo el código y llevando el resultado a tu web.

A los programadores de antes, nos gusta tener el código bien indentado, con lo que yo suelo dejarme la copia indentada para que sea más cómoda cualquier modificación.

También es posible hacerse una llamada a la función como explican en la web: http://www.phpied.com/cssmin-js/

Ahora vayamos a hacer la demo y veréis que rápido es! Para ello, habrá que acceder al siguiente enlace:

http://tools.w3clubs.com/cssmin/

En la primera casilla pondremos nuestro código .js o .css y en la segunda casilla nos pondrá como queda optimizado.

Increase the Magento Speed with mod_deflate – Incrementar la velocidad de Magento con mod_deflate

Hay varias tácticas para aumentar la velocidad de tu tienda de Magento y una de ellas es utilizar el módulo de PHP mod_deflate.

Para averiguar si está instalado en nuestra tienda, recordad que lo podemos averiguar realizando un fichero .php para llamar a la función phpinfo(); como describía en el post siguiente: http://www.patriciaseuba.es/2014/07/ioncube-o-cualquier-configuracion-de-tu-servidor/

<?
phpinfo();
?>

Si no está, deberemos ponerlo en el servidor para utilizar las funcionalidades que vienen a continuación.

Para revisar si la web utiliza el mod_deflate podemos acceder a una web que nos lo “chivará”: Accede a http://www.whatsmyip.org/http-compression-test/ y pon en la casilla la URL de la tienda. Si no pone OK, sabremos que no está utilizando el módulo mod_deflate.

Para utilizarlas, iremos al .htaccess del web site y donde aparezca lo siguiente o nada si buscamos el mod_deflate:

<IfModule mod_deflate.c> ############################################ ## enable apache served files compression ## http://developer.yahoo.com/performance/rules.html#gzip # Insert filter on all content ###SetOutputFilter DEFLATE # Insert filter on selected content types only #AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript # Netscape 4.x has some problems... #BrowserMatch ^Mozilla/4 gzip-only-text/html # Netscape 4.06-4.08 have some more problems #BrowserMatch ^Mozilla/4\.0[678] no-gzip # MSIE masquerades as Netscape, but it is fine #BrowserMatch \bMSIE !no-gzip !gzip-only-text/html # Don't compress images #SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary # Make sure proxies don't deliver the wrong content #Header append Vary User-Agent env=!dont-vary </IfModule>

lo cambiaremos por lo siguiente:

<IfModule mod_deflate.c>

    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript
    AddOutputFilterByType DEFLATE application/xml application/xhtml+xml application/rss+xml
    AddOutputFilterByType DEFLATE application/javascript application/x-javascript
    #AddOutputFilterByType DEFLATE application/x-httpd-php

    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
    BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

    SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
    SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
    SetEnvIfNoCase Request_URI \.(?:pdf|doc)$ no-gzip dont-vary
    SetEnvIfNoCase Request_URI \.(?:avi|mov|mp3|mp4|rm)$ no-gzip dont-vary

</IfModule>

Espero que os sirva pero de todas formas si queréis oirlo en inglés a través de un youtube os dejo aquí el enlace:
http://youtu.be/g6dXt6gyUTk

Error Enabled Compilation before Running a Compile Magento – Error al activar compilación antes de compilar Magento

Desastre! Desastre! Hemos ejecutado la compilación antes de compilar Magento y ahora no podemos acceder a la tienda.

Queríamos solucionar un tema de rendimiento y ahora hemos ido un paso atrás! Ni el cliente ni nosotros podemos acceder!

Todo tiene solución! tranquilos! Vamos a desactivar la compilación:

1.- Ir a la carpeta “includes” de tu web. ¿dónde? var/www/tuweb/includes

2.- Editar el fichero “config.php”

3.- Comentar la siguiente linea siguiente:

define(‘COMPILER_INCLUDE_PATH’, dirname(FILE).DIRECTORY_SEPARATOR.’src’);

Ioncube o cualquier configuración de tu servidor

¿cómo saber qué módulos de php tienes configurado en tu servidor? Por ejemplo, saber si tienes ioncube.

Aquí dejo un pequeño programa que puedes dejarte en cualquiera de tus dominios para verificar la instalación de PHP así como si tienes ioncube.

El trozo de programa lo puedes meter en el raiz de tu dominio, por ejemplo con nombre info.php

Para ejecutarlo y comprobar el estado de tus módulos, sólo debes poner en el navegador: www.tudominio.com/info.php

La función primera te saca un listado de los módulos instalados. El if simplemente te comprueba si tienes Ioncube instalado por si sólo quisieras saber esa información.

<?
phpinfo();

if(extension_loaded("IonCube Loader")) {     
 echo "Ioncube loaded";
}
else {
 echo "Ioncube not loaded";
}
?>

Magento – Layout call static block CMS – Llamar desde Layout a Bloque CMS

Dentro de Magento tenemos la facilidad de poder llamar a un bloque estático o Cms Block/Bloque CMS desde un layout porque necesitemos incorporar una nueva funcionalidad por ejemplo en la apariencia de una plantilla.

Sólo es necesario un par de pasos:

1.- Crear el bloque CMS al que queremos llamar. En este caso llamaremos “bloqueCMS”

2.- Desde el layout donde lo queremos incorporar pondremos la llamada teniendo en cuenta la colocación con el atrbuto after o before. He puesto un nombre distintos en el atributo “name” para que nos demos cuenta que lo que cuenta es el id del bloque o identificador y no el título de él.

<block type="cms/block" name="Bloque-CMS-R2D2" before="contacto_dcha">
 <action method="setBlockId"><block_id>bloqueCMS</block_id></action>
 </block> 

Magento – Llamar a un Bloque CMS desde un Bloque CMS

Dentro de Magento tenemos la facilidad de poder llamar a un bloque estático o Cms Block/Bloque CMS desde otro bloque estático o desde una página.

Sólo es necesario un par de pasos:

1.- Crear el bloque CMS al que queremos llamar. En este caso llamaremos “llamada”

2.- Desde el bloque que va a ser el llamador o la página llamadora escribir lo siguiente.

 {{block type="cms/block" block_id="llamada"}}

Magento – Modificar mensaje de bienvenida – Modify wellcome message

Modificar o incluir en la plantilla el mensaje de Bienvenida de Magento no es complicado.
Lo primero y más sencillo es ver como incluirlo en la plantilla, normalmente en el header.phtml que te puedes encontrar en /app/design/frontend/default/plantilla/template/page/html
Ahí, puedes incluir la siguiente línea:

<p class="welcome-msg"><?php echo $this->getWelcome() ?> <?php echo $this->getAdditionalHtml() ?></p>

Esto, cogerá la combinación entre lo que tienes en el administrador y lo que tienes en el core.

Pongamos el caso de que cuando el cliente no está conectado quiero que salga “Bienvenido” y cuando está conectado, que le ponga “Bienvenido, Pepito Pérez”.

Para ello no tocaríamos el código de core y en el administrador podríamos poner en Sistema-> Diseño->Cabecera: Bienvenido

Si no quiero que aparezca nada cuando no está conectado, el texto del administrador de Magento lo borraremos.

Ahora, hemos decidido ser más amigables y cambiar el texto de Bienvenida y ponerlo sólo con nombre o saludando con “Hola…”.

Iremos a app/code/core/Mage/Page/Block/Html/Header.php y sin editarlo en ese sitio ya que perderíamos con los cambios de versiones, lo copiamos a app/code/local/Mage/Page/Block/Html/.

En la función getWelcome() es donde deberíamos la línea:
$this->escapeHtml(Mage::getSingleton(‘customer/session’)->getCustomer()->getName()));
por:
$this->escapeHtml(Mage::getSingleton(‘customer/session’)->getCustomer()->getFirstname()));

Magento Llamar a un bloque estático desde un phtml – Call static block in phtml

Llamar a un bloque estático desde un .phtml es bien sencillo. Sólo hay que recordar la sentencia!

Pongamos que hemos hecho un bloque estático para modificar un formulario de contacto típico de Magento y queremos que en ese bloque estático haya información de contacto de la tienda.

Primero creamos el bloque:
CMS-> Bloque estático

Imaginemos que de nombre le pusimos mas_info.

Lo guardamos y ahora editamos el fichero .phtml para insertar este código:

 <?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('mas_info')->toHtml() ?> 

Obtener un atributo de un producto en Magento

Magento tiene una gran versatilidad para la definición de productos y filtros que puede llegar a ser un suplicio a la hora de mostrarlos, si aún no se está muy preparado con el modelo de datos de Magento.

¿cómo incluir un atributo de un producto en el frontend para que el cliente lo pueda ver? Muy sencillo.

Dependiendo si es una lista desplegable (drop-down) o no, se hará de la siguiente manera:

<?php echo $_product->getAttributeText(’attribute_name’) ?>
ó
<?php echo $_product->getAttributeName() ?>

Comprueba fácilmente en la ficha de producto, view.phtml e incluye el atributo que más rabia te dé.

Es sencillo y lo verás de inmediato.

Fuente en página web

Dolor de cabeza el que tenemos siempre para poner ciertas fuentas en una página web y más cuidado que hay que tener porque esa fuente puede no verla el navegador destino.

Supongamos que la fuente se llama “fto-ori”

El código para incrustar esa fuente en nuestro código sería:

@font-face {
src:
url(“fuentes/fto-ori.eot”), /*Para IE*/
url(“fuentes/fto-ori.ttf”) format(“truetype”); /*Para el resto*/
}
y el código para utilizarla sería:

body {

font-family:”fto-ori”;

}

También puedes incrustarlo directamente en el body:

body          { font-family:”fto-ori”,sans-serif; src: url(“fuentes/fto-ori.ttf”)