Blog

Magento-Logo-CELatam.co_

Creación de una Extensión de Magento

Magento utiliza una arquitectura MVC (Modelo-Vista-Controlador). En muy pocas palabras, la arquitectura MVC consiste en separar el código responsable de la lógica de negocio de una aplicación (modelo) de su representación visual (vista) y de las acciones que pueden realizarse sobre dicha lógica (controlador).

En esta primera parte del tutorial, crearemos una extensión muy simple, que no contendrá lógica de negocio alguna. Además, tampoco nos centraremos en la vista por el momento, ya que lo que queremos es símplemente indicar los pasos que hay que realizar para crear un módulo nuevo. No obstante, y para dotar de un mínimo de funcionalidad a nuestra primera extensión, y que podamos probarla y ver que funciona, sí que se tratará, de forma sencilla, cómo funcionan los controladores. Modelos y Vistas se tratarán en las siguientes partes del tutorial.

Empezamos!

Es necesario indicar a Magento la existencia de nuestra extensión. Esto se hace creando un fichero xml con el nombre del espacio de nombres y el nombre de la extensión en la caperta /app/etc/modules/ (en este tutorial asumiremos que / es la ruta de la carpeta de nuestra instalación de Magento).

/app/etc/modules/Brainsins_Holamundo.xml
<?xml version="1.0"?>
<config>
<modules>
<Brainsins_Holamundo>
<active>true</active>
<codePool>local</codePool>
</Brainsins_Holamundo>
</modules>
</config>

Una vez creado este fichero, y tras actualizar la cache de Magento – System -> Cache Management – podremos ver que Magento ha reconocido nuestra extensión. Para ello, deberemos ir al menú System -> Configuration del backstore, y en el menú de la izquierda Advanzed -> Advanzed. Aquí se nos permitirá activar o desactivar la salida visual de todas las extensiones instaladas. Si nuestra extensión se encuentra instalada (reconocida por Magento) deberá encontrarse en esta lista. Respecto a la cache, por comodidad, yo recomiendo deshabilitarla mientras estemos desarrollando la extensión, y volver a habilitarla cuando hayamos terminado.

Lista de Extensiones en Disable Modules Output muestra la nueva extensión Brainsins_Holamundo
Brainsins_Holamundo aparece listada

Después, crearemos el directorio de nuestra Extensión:

/app/code/local/Brainsins/Holamundo

En este directorio se almacenarán los archivos de nuestra extensión. Según avancemos en otras partes del tutorial, iremos añadiendo subdirectorios. El subdirectorio Brainsins se corresponde con el espacio de nombres, o namespace, para todas nuestras extensiones, mientras que la carpeta HolaMundo es la carpeta que se corresponde directamente con la extensión. La razón del namespace es que así nuestra extensión HolaMundo podrá ser diferenciada de otras extensiones con el mismo nombre, ya que éstas pertenecerán a otros espacios de nombres.

Dentro de este directorio crearemos las siguientes carpetas:


/app/code/local/Brainsins/Holamundo/etc

/app/code/local/Brainsins/Holamundo/controller

A continuación, crearemos el fichero de configuración de nuestro módulo en el directorio etc

/app/code/local/Brainsins/Holamundo/etc/config.xml
<?xml version="1.0"?>
<config>
<modules>
<Brainsins_Holamundo>
<version>0.1.0</version>
</Brainsins_Holamundo>
</modules>
<frontend>
<routers>
<holamundo>
<use>standard</use>
<args>
<module>Brainsins_Holamundo</module>
<frontName>holamundo</frontName>
</args>
</holamundo>
</routers>
</frontend>
</config>

La parte importante de este fichero es la contenida en la etiqueta . Con ella especificamos elementos de interacción con los usuarios para nuestra extensión. La etiqueta indicará los controladores que tendrá el módulo. La etiqueta será la url relativa a nuestra tienda para que se ejecute el controlador. Es decir, que si la url de nuestra tienda es www.mitiendamagento.com, nuestro controlador se ejecutará en las urls que comiencen por www.mitiendamagento.com/holamundo.

Hemos indicado en el fichero de configuración que disponemos de controladores para la extensión, ahora hay que crear un controlador:

/app/code/local/Brainsins/Holamundo/controllers/IndexController.php
<?php
class Brainsins_Holamundo_IndexController extends Mage_Core_Controller_Front_Action {
public function indexAction() {
echo 'Hola Mundo!';
}
}

Sobre este fichero, quiero destacar unas cuantas cosas:

Si nos fijamos en el nombre de la clase: Brainsins_Holamundo_IndexController, podemos notar cómo tiene una relación con la ruta y el nombre dle fichero que la contiene: /app/code/local/Brainsins/Holamundo/controllers/IndexController.php. Veremos este comportamiento repetido con todas las clases que creemos.
Todas las clases que creemos utilizarán el mecanismo de Herencia. En este caso heredamos de la clase Mage_Core_Controller_Front_Action, por eso el código de nuestro controlador es tan simple.
Una vez hecho esto, ya podremos observar el comportamiento de nuestra extensión! Para ello, basta con acceder a la url de nuestra tienda añadiendo /holamundo. Por ejemplo, www.mitiendamagento.com/holamundo. Como era de esperar, veremos una página en blanco con el mensaje “Hola Mundo!”. También veremos el mismo mensaje si entramos en las direcciones www.mitiendamagento.com/holamundo/index y www.mitiendamagento.com/holamundo/index/index. Esto se debe a que “index” es tanto el controlador por defecto como la acción por defecto, y en Magento, para decidir qué controlador ejecutar y qué método ejecutar (acción) dentro de dicho controlador, se utiliza la siguiente estructura de url:

www.mitienda.com/controlador/acción

Si nos fijamos, el controlador index se asocia al controlador IndexController y la acción index al método indexAction.

Para añadir otra acción, basta con implementar un segundo método, por ejemplo, saludarAction(), en nuestro controlador:

/app/code/local/Brainsins/Holamundo/controllers/IndexController.php
<?php
class Brainsins_Holamundo_IndexController extends Mage_Core_Controller_Front_Action {
public function indexAction() {
echo("Hola Mundo!");
}

public function saludarAction() {
$input = $this->getRequest()->getParam("nombre");
$name = $input ? $input : "Desconocido";
echo("Hola " . $name . "!");
}
}

Aunque no es objeto de este tutorial, puede verse cómo se ha capturado un parámetro pasado en la url (GET) para obtener el valor del nombre a quien saludar. De esta forma, al haber creado la acción saludar para el controlador index, el acceso a la url www.mitiendamagento.com/holamundo/index/saludar mostrará el mensaje “Hola Desconocido!”, mientras que si pasámos un parámetro nombre, como en www.mitiendamagento.com/holamundo/index/saludar?nombre=Alex el mensaje mostrado será “Hola Alex!”.

 

 

En esta segunda parte del tutorial se presenta cómo crear un modelo muy básico en el módulo de Magento creado en la primera parte.

Hasta ahora hemos reducido nuestro módulo exclusivamente al controlador, ya que realmente nuestra lógica de negocio es trivial y utilizado como vista una simple impresión en la página. El siguiente paso es colocar la lógica de negocio (aunque sea extremadamente simple) en unmodelo para, finalmente, añadir una vista.

La creación del modelo se hace de forma muy similar a como hemos creado el controlador. En primer lugar, debemos indicar en el fichero de configuración /app/local/Brainsins/Holamundo/etc/config.xml dónde debe Magento buscar los modelos, para ello debemos modificar este fichero como se muestra a continuación:

/app/code/local/Brainsins/Holamundo/etc/config.xml
<?xml version="1.0"?>
<config>
<modules>
<Brainsins_Holamundo>
<version>0.1.0</version>
</Brainsins_Holamundo>
</modules>
<frontend>
<routers>
<holamundo>
<use>standard</use>
<args>
<module>Brainsins_Holamundo</module>
<frontName>holamundo</frontName>
</args>
</holamundo>
</routers>
</frontend>
<global>
<models>
<holamundo>
<class&gt;Brainsins_Holamundo_Model&lt;/class>
</holamundo>
</models>
</global>
</config>

Con esto estamos diciendo a Magento, mediante la etiqueta class, que nuestros modelos se encuentran en la ruta /Brainsins/Holamundo/Model. La ruta además empieza por /app, como todos los módulos, y continúa en local/, ya que así se especifica en el archivo de activación.

Nuestra clase que hará de modelo, recordando la relación entre la ruta del fichero y su nombre, se llamará Brainsins_Holamundo_Model_NombreDeLaClase, en nuestro caso la llamaremos Saludador.

/app/code/local/Brainsins/Holamundo/Model/Saludador.php
class Brainsins_Holamundo_Model_Saludador extends Mage_Core_Model_Abstract {
public function _construct() {
parent::_construct();
$this->_init('holamundo/saludador');
}

public function construirSaludo($nombre) {
return 'hola ' . $nombre . '!';
}
}

En este tutorial simplemente dotaremos al modelo de funcionalidad, pero no de estado (no se podrán guardar instancias del mismo en la base de datos, esto lo dejaremos para más adelante). Para poder utilizar esta funcionalidad desde cualquier parte de Magento utilizaremos el siguiente código:

Mage::getSingleton(&quot;holamundo/saludador');

Es hora de aplicar estos cambios a nuestro controlador:

/app/code/local/Brainsins/Holamundo/controllers/IndexController.php
<?php
class Brainsins_Holamundo_IndexController extends Mage_Core_Controller_Front_Action {
public function indexAction() {
echo("Hola Mundo!");
}

public function saludarAction() {
$input = $this->getRequest()->getParam("nombre");
$name = $input ? $input : "Desconocido";
$saludador = Mage::getSingleton('holamundo/saludador');
$saludo = $saludador->construirSaludo($name);
echo($saludo);
}
}

En esta tercera parte veremos el componente restante del MVC: cómo crear una vista. En las partes anteriores obteníamos como resultado de nuestra extensión mensajes de texto que aparecían en una página en blanco, ahora incorporaremos esos mensajes en la estructura de la página de magento.

Continuamos con el ejemplo de la extensión “holamundo” que saluda al visitante. En un principio, el controlador debería ser el encargado de indicar al modelo construir un saludo para que luego la vista pidiese ese saludo al modelo y lo mostrara. Sin embargo, recordemos que, por razones de simplicidad, nuestro modelo no tiene estado, por lo tanto la vista no se comunicará con la misma instancia del modelo que el controlador. Por lo tanto, en este tutorial, las llamadas que realizábamos antes desde el controlador, las realizará ahora la vista. Más adelante publicaré otro tutorial avanzado sobre cómo crear modelos.

Lo primero que realizaremos es crear un “block” (bloque). Para ello, crearemos el siguiente fichero:

/app/code/local/Brainsins/Holamundo/Block/Holamundo.php

Con el siguiente código

<?php
class Brainsins_Holamundo_Block_Holamundo extends Mage_Core_Block_Abstract {
public function _prepareLayout()
{
return parent::_prepareLayout();
}<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px; white-space: normal;"> </span>
protected function _toHtml() {
$input = $this->getRequest()->getParam("nombre");
$name = $input ? $input : "Desconocido";
$saludador = Mage::getSingleton("holamundo/holamundo");
return "<h1>" . $saludador->construirSaludo($name) . "</h1>";
}
}

Como podéis ver, se trata prácticamente del mísmo código que había en el controlador del tutorial anterior, salvo que ya no imprimimos nada en la página usando la función “echo” de PHP. Cuando indiquemos a Magento que tiene que incorporar nuestro bloque en la página, obtendrá el texto que hay que mostrar utilizando la función _toHtml() que hemos implementado.

Para indicar a Magento que existe este nuevo bloque necesitamos, en primer lugar, crear un fichero de layout para nuestra extensión. El fichero de layout da información a Magento sobre qué bloques mostrar en nuestra extensión, dónde van colocados y cómo tienen que mostrarse. En nuestro caso sólo necesitamos incorporar el bloque que hemos creado al contenido de la página.

/app/design/frontend/base/default/layout/holamundo.xml
<?xml version="1.0"?>
<layout version="0.1.0">
<default>
</default>
<holamundo_index_index>
<reference name="content">
<block type="holamundo/holamundo" name="holamundo" />
</reference>
</holamundo_index_index>

<holamundo_index_saludar>
<reference name="content">
<block type="holamundo/holamundo" name="holamundo" />
</reference>
</holamundo_index_saludar>
</layout>

Como puede verse, hemos creado dos entradas iguales, una para la acción index y otra para la acción saludar. Más adelante cambiaremos una de las dos para mostrar otra forma de crear vistas. A continuación vamos a indicar a Magento tanto la existencia de bloques en nuestra extensión(la ruta donde podrá encontrarlos) como la existencia de este fichero de layout. Esto se hace en el fichero config.xml

/app/code/local/Brainsins/Holamundo/etc/config.xml
<?xml version="1.0"?>
<config>
<modules>
<Brainsins_Holamundo>
<version>0.1.0</version>
</Brainsins_Holamundo>
</modules>
<frontend>
<routers>
<holamundo>
<use>standard</use>
<args>
<module>Brainsins_Holamundo</module>
<frontName>holamundo</frontName>
</args>
</holamundo>
</routers>
<layout>
<updates>
<holamundo>
<file>holamundo.xml</file>
</holamundo>
</updates>
</layout>
</frontend>
<global>
<models>
<holamundo>
<class&gt;Brainsins_Holamundo_Model&lt;/class>
</holamundo>
</models>
<blocks>
<holamundo>
<class>Brainsins_Holamundo_Block</class>
</holamundo>
</blocks>
</global>
</config>

Por último, como hemos incorporado en la vista el código que teníamos en el controlador, tenemos que cambiar este último. Además, será el controlador quien indique a la vista que debe mostrarse. Con estas incorporaciones el código del controlador queda así:

/app/code/local/Brainsins/Holamundo/controllers/IndexController.php
<?php
class Brainsins_Holamundo_IndexController extends Mage_Core_Controller_Front_Action {
public function indexAction() {
$this->loadLayout();
  $this->renderLayout();
}
public function saludarAction() {
$this->loadLayout();
  $this->renderLayout();
}
}

Como puede verse, simplemente carga el layout y le indica que se muestre. Con esto, al cargar la página www.mitiendamagento.com/holamundo/index/saludar?nombre=Alex veremos algo como esto:

Resultado de incorporar la vista

El inconveniente de esta forma de crear las vistas es que cuando queramos cambiar algo del contenido de nuestra extensión (y esta parte es la que con más probabilidad y frecuencia será cambiada), tendremos que cambiar el código del bloque. Este problema se resuelve creando otro tipo de bloque que no es el encargado de mostrar el contenido de la vista, sino que está asociado a un template – un fichero que contendrá directamente el código php y html que compondrá el contenido que queramos que aparezca en el bloque.

Ver más

Restaurar Base de datos con archivos FRM, MYD, MYI

A estas alturas seguro que ya está corriendo el pánico y te lamentas de no tener tu copia de seguridad en Sql, pero tranquilo/a, que no todo está perdido y esto es fácil.

Captura

Bien, estos archivos son los primarios en una base de datos mysql, por lo que para leerlos vamos a instalar el gran conocido phpMyAdmin en nuestro pc.

 

Para ello, necesitaremos descargar e instalar WampServer.

Asegúrate de descargar la versión que corresponde a tu sistema operativo.

Lo podéis descargar desde su web:

http://www.wampserver.com/

o en la versión (más rápida) española:

http://www.wampserver.es/

 

1. Ejecuta el programa de instalación y sigue las instrucciones.

Para la mayoría de los usuarios es mejor dejar todas las configuraciones predeterminadas, aunque puedes cambiar la ubicación de la instalación si quieres instalar WampServer en otra unidad.

 

2. Selecciona tu navegador predeterminado.

WampServer te pedirá que selecciones el navegador en el cual vas a ejecutarlo. En forma predeterminada aparecerá seleccionado Internet Explorer. Sin embargo, puedes seleccionar cualquiera de los navegadores que tengas instalados. A continuación verás algunas de las ubicaciones predeterminadas de instalación para ciertos navegadores:

  • Firefox. C:\Archivos de Programa\Mozilla Firefox\firefox.exe oC:\Archivos de programa (x86)\Mozilla Firefox\firefox.exe
  • Chrome. C:\Archivos de programa\Google\Chrome\Application\chrome.exe o C:\Archivos de programa\Chrome\Application\chrome.exe

 

3. Permítele a WampServer acceder a tu cortafuegos (firewall).

Windows te pedirá que le permitas a WampServer acceder a tu cortafuegos. Haz clic en el botón Permitir acceso para otorgarle el permiso.

 

4. Ingresa tu configuración de correo electrónico.

Deja el campo “SMPT” vacío e ingresa tu dirección de correo electrónico en el campo “Email”.

 

5. Haz clic en el ícono de WampServer en la bandeja de notificaciones.

La bandeja de notificaciones es la que aparece en la esquina inferior derecha de tu escritorio.

  • Si el ícono aparece de color verde, WampServer está en línea. Si aparece de un color diferente, es posible que tengas que intentar instalar WampServer otra vez.
  • Nota: WampServer no se iniciará si Skype está ejecutándose.

 

6. Abrir phpMyAdmin.

Abre el navegador que has seleccionado anteriormente (en nuestro caso Firefox) y escribe la siguiente url:

http://localhost/phpmyadmin/

 

Te abrirá la administración de bases de datos en que tenemos actualmente en la pantalla de phpMyAdmin.

 

7. Restaurar los ficheros de las bases de datos.

Antes que nada, cierra el navegador, ya hemos comprobado que el gestor de las bases de datos funciona correctamente, así que, después lo abriremos para ver las bases de datos restauradas.

Nos vamos al directorio en el que están las bases de datos que recoge el sistema phpMyAdmin. Éste se encuentra dentro de la carpeta de la instalación de WampServer, en nuestro caso:

C:\wamp\bin\mysql\mysql5.5.24\data

Aquí encontramos las bases de datos de ejemplo que hemos visto al abrir phpMyAdmin en nuestro navegador.

Sólo tenemos que copiar la carpeta de la base de datos que contiene los ficheros .FRM, .MYD, .MYI junto a las demás carpetas.

 

Captura2

 

Ahora abrimos de nuevo nuestro navegador, nos vamos a:

http://localhost/phpmyadmin/

 

Captura3

 

¡Y vemos nuestra bases de datos!

Desde phpMyAdmin, podemos exportarla fácilmente a sql para pasarla a cualquier otra base de datos.

 

Captura4

Ver más
PHP y JavaScript

Formulario web con PHP y JavaScript

Primero, el código html:

Formulario de Contacto en PHP
<!-- Archivo de validación colocar dentro de HEAD /HEAD -->
<script src="validar.js" type="text/javascript"></script>
<!-- Fin Archivo de validación -->

<!-- Formulario de contacto colocar dentro de BODY /BODY-->
<div align="center"><form action="contacto.php" method="post"><label for="name">Nombre Completo:

<input id="name" name="name" size="27" type="text" /> </label>


<label for="email">Correo Electrónico:

<input id="email" name="email" size="27" type="text" /> </label>


<label for="subject">Asunto:

<input id="subject" name="subject" size="27" type="text" />
</label>


<label for="message">Mensaje:

<textarea id="message" cols="30" name="message" rows="5"></textarea>
</label>


<input name="submit" type="submit" value="Enviar" />

</form></div>
<!-- Fin Formulario de contacto -->

Ahora el Java Script para la validación que llamaremos ‘validar.js’ :


//Función que verifica campos del formulario vacíos
function Validar(f) {
if (f.name.value=="") {
alert("Por favor escriba su Nombre completo");
f.name.focus();
return false;
}
if (f.email.value=="") {
alert("Por favor escriba su direcci\xF3n de correo electr\xF3nico");
f.email.focus();
return false;
}
if (f.subject.value=="") {
alert("Por favor escriba el asunto de su Mensaje");
f.subject.focus();
return false;
}
if (f.message.value=="") {
alert("Por favor escriba su Mensaje.");
f.message.focus();
return false;
}
}

Y por último, el código para enviarlo al correo por php cual página llamaremos ‘contacto.php’ :


<?php
//Importamos las variables del formulario 
@$name = addslashes($_POST['name']); 
@$email = addslashes($_POST['email']); 
@$subject = addslashes($_POST['subject']); 
@$message = addslashes($_POST['message']); 
//Preparamos el mensaje de contacto 
$cabeceras = "From: $email\n" //La persona que envia el correo 
. "Reply-To: $email\n"; // La persona a la que se le puede responder
$asunto = "$subject"; //El asunto 
$email_to = "tudirecciondecorreo@algo.com"; //cambiar por tu email 
$contenido = "$name le ha enviado el siguiente mensaje:\n" . "\n" . "$message\n" . "\n"; 
//Enviamos el mensaje y comprobamos el resultado 
if (@mail($email_to, $asunto ,$contenido ,$cabeceras )) 

{ //Si el mensaje se envía muestra una confirmación 

die("Muchas gracias, su mensaje fue enviado correctamente"); 

}else{ //Si el mensaje no se envía muestra el mensaje de error 

die("Error: Su mensaje no pudo ser enviado, intente más tarde"); }

?>

Pónganle algo de css para que quede más agradable. Por lo demás la forma en la que llega al correo es muy óptima.

Un saludo.

Ver más

Permitir conexiones remotas MYSQL en CentOS 6

Para conseguir que podamos utilizar una base de datos de nuestro servidor desde otro Host, tenemos que hacer lo siquiente:- Abrimos nuestro acceso SSH por root y escribimos:

vi /etc/my.cnf

 Se nos abrirá el editor de texto de CentOS, tenemos que buscar la línea que pone:

bind-address = 127.0.0.1

 o

bind-address = localhost

 Editamos el documento (pulsando la tecla “a”) y lo dejamos así:

bind-address = nuestraip

 Dónde nuestra ip será la de nuestro servidor, por ejemplo: 123.456.789.01En nuestro caso, quedaría así:

bind-address = 123.456.789.01

 Ahora le damos a [Escape], y seguidamente a las teclas:[Shift + punto] [w] [q]y quedaría en nuestra pantalla (en la parte de abajo) así:

:wq

 Damos intro para guardar[w] y cerrar[q] el documento.Una vez fuera del documento, reiniciamos el servicio mysql:

service mysqld restart

 Ahora vamos a abrir el puerto de mysql:

vi /etc/sysconfig/iptables

 Editamos como antes (pulsando [a]) y añadimos la siguiente línea:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

 y así abrimos el puerto 3306 que es el de mysql.Guardamos y cerramos como antes:

:wq

 Reiniciamos el servicio:

service iptables restart

 y cargamos los módulos ftp para asegurarnos:

modprobe ip_conntrack_ftpmodprobe ip_nat_ftp

 Es recomendable cargar los módulos después de editar iptables. ¡Hecho!¡Prueba la conexión de tu base de datos desde cualquier otro Host! 

Ver más

Iframe completo con CSS

Primero, definimos el iframe:


<iframe id="the_iframe" src="http://www.grafeco.com" width="300" height="auto" frameborder="0" scrolling="yes"></iframe>

y ahora, el css:


body{margin:0;}

#the_iframe{
   width:100%;
   height:100%;
   border: 0;
   position:fixed;
   top:0;
   left:0;
   right:0;
   bottom:0;
}



Ya está, tan sencillo y tan útil.

Ver más

Cómo ampliar la garantía de tu iPhone de Apple a dos años GRATIS

Según el reglamento europeo, Apple tiene un convenio con el que sus productos tienen que tener un año mínimo de garantía y es lo que ofrecen.

Ahora bien, según la normativa española, para cualquier componente electrónico, tenemos dos años de garantía desde la fecha de compra.

En este caso, lo haremos con un iPhone 4s. ¿Qué necesitamos para ampliar esa garantía?

– La factura de compra.

– El número de serie del iPhone y el IMEI (están en Ajustes &gt; Generales &gt; Información).

– Mucha paciencia.

Con todo eso, llamamos al 900812703 que es el número gratuito de asistencia de apple. Decimos que no has llamado antes y el tipo de dispositivo por el que llamas. Cada vez que pasen de un agente a otro (o de la máquina al agente) te harán esperar alrededor de unos 15 minutos al teléfono…Cuando hablemos con el primer agente, nos dirá que Apple tiene un año de garantía.

Nosotros le decimos que por ley española, tenemos el derecho a acogernos a los dos años de garantía, por lo que han de hacernos una excepción a su regulación propia.

Si nos pregunta si ya hemos ido a la tienda de nuestro proveedor (movistar, vodafone) le decimos que sí, pero que se tiene que hacer cargo Apple.

Después de comprobar nuestros datos, hacernos preguntas rutinarias y preguntarnos sobre la avería de nuestro dispositivo (y tardar otros 15 minutos), nos pasarán con un supervisor. Éste nos mandará un mail con su dirección de correo personal de Apple y nosotros le adjuntaremos la factura.

Nos confirmarán que se ha realizado la ampliación sin coste alguno y que, previa cita, podemos pasarnos a la tienda Apple más cercana a cambiar el iPhone.

Hecho.

expect

Ver más

Cómo poner Microdatos sin que aparezcan visibles en la web

Ha habido varias preguntas sobre cómo poner los Microformatos en la web sin que se vean, pero que los buscadores como Google, los puedan interpretar.

Bien, aquí os lo explicamos:

Primero, los Microformatos son una tarjeta de presentación para que los buscadores y las demás personas puedan interpretar los datos de queremos mostrar. Al hacerlo por Microformato, los buscadores lo insertan mejor en sus servidores.

Para crear Microformatos, pordemos hacerlo desde esta página:

http://www.grafeco.com/creador-generador-de-microformatos

 

Cuando hemos rellenado todos los campos, pegaremos nuestro código en entre <body> y </body>

Imaginemos que es el siguiente (pongo el código en blanco):


<div id="" class="vcard">
 <span class="fn n">
    <span class="given-name"></span>
  <span class="additional-name"></span>
  <span class="family-name"></span>
</span>
<p>Esta <a href="http://microformats.org/wiki/hcard" target="new">hCard</a> ha sido creada por el generador de  <a href="http://www.grafeco.com" target="new">Grafeco.com</a></p>
</div>

 

Ahora, podemos hacerlo de distintas formas. Observamos que el código está dentro de un div con la class=”vcard” .

Ocultaremos el div (con todo el microformato) con el estilo display: none;

Para hacerlo, podemos hacerlo con css in-line, en una hoja de estilo a parte o antes del </head> de la misma página.

En este ejemplo, lo haremos de la última forma:

Antes de </head> ponemos:

 

.vcard{display: none;}

Ya está, ahora no tiene que aparecer nada, pero los buscadores como Google, capturarán los datos y los insertarán en sus servidores.

Ver más

Añadir página de wordpress en otra página o index de wordpress con php

Primero, tenemos que incluir un nuestro functions.php el siguiente parámetro:

<?php
if(!function_exists("getPageContent"))
    {
        function getPageContent($pageId,$max_char)
        {
            if(!is_numeric($pageId))
            {
                return;
            }
            global $wpdb;
            $nsquery = "SELECT DISTINCT * FROM " . $wpdb-&gt;posts .
            " WHERE " . $wpdb-&gt;posts . ".ID=" . $pageId;
            $post_data = $wpdb-&gt;get_results($nsquery);
            if(!empty($post_data))
            {
                foreach($post_data as $post)
                {
                    $text_out=nl2br($post-&gt;post_content);
                    $text_out=str_replace("]]&gt;", "]]&gt;", $text_out);
                    $text_out = strip_tags($text_out);
                    return substr($text_out,0,$max_char);

                }
            }
        }
}
?>

 

y en la página donde queramos incluir la otra tenemos dos opciones, primera:

<?php
echo getPageContent(18,1500); //www.grafeco.com
?>

Dónde el primer número es el que indica el ID de la página o post en cuestión y el segundo, el número de palabras que se muestran.

o podemos hacerlo de la segunda manera:

<?php
$my_postid = 12;//Dónde el número será el post o página a mostrar
$content_post = get_post($my_postid);
$content = $content_post-&gt;post_content;
$content = apply_filters("the_content", $content);
$content = str_replace("]]&gt;", "]]&gt;", $content);
echo $content;
?>
Ver más

Iframe con JavaScript y Height Automático

Bueno, aquí una explicación de cómo incluir un ifame con ayuda de JavaScript y controlar el alto automático.

Primero, el código en JavaScript en el <head>:

<script language="JavaScript">
<!--
function calcHeight()
{
 //Cojo la altura en nuestra página
 var the_height=
 document.getElementById
("the_iframe").contentWindow.
 document.body.scrollHeight;
//Cambio la altura del iframe
 document.getElementById("the_iframe")
.height= the_height;
}
//-->
</script>

 

Y ahora entre <body> y </body> :

<span style="color: #993366;"><iframe width="100%" id="the_iframe" onLoad="calcHeight();" src="ladireccionquequiera" scrolling="NO" frameborder="0" height="1"></iframe></span>

Aviso: puede haber incompatibilidades si el las páginas no están en el mismo servidor.

Ver más

¡ Bienvenidos !

Al fin, después de desarrollar, cambiar y volver a voltear la web….hacerla para todos los dispositivos y adaptarla incluso a los filtros de distintas conexiones 3G, les damos la bienvenida al Blog y Web de Grafeco.

Aún tenemos el proyecto Eco – Web en marcha, pero iremos zanjándolo lo más rápido posible.

 

Un saludo y como buen informático: ¡Hola Mundo!

Ver más