Telepieza es un mezcla de ayuda, información, opinión, ocio, negocio y diversión, esperamos que todos vosotros os sintaís en vuestra casa.

Archivo de la Categoría Programación

 Voy a empezar a escribir una serie de post para virtuemart, he leí­do mucho sobre los problemas que ocasiona al instalar el sh404sef en un joomla con virtuemart (Tienda Virtual), dichos problemas son la paginación de los productos o que enseña siempre el mismo artículo cuando queremos ver una categoría en concreto.

 El problema de enseñar siempre el mismo artículo se soluciona de forma momentánea desactivando la cache del modulo global de joomla, después explicaremos la solución (ver imagen abajo).

joomla_cache

…………………………………………………………

El problema de la paginación se soluciona de forma momentánea desactivando el módulo sh404sef de joomla (ver imagen abajo).

joomla_sh404sef

Dichos problemas se solucionan mediante programación, cambiar el código php, por dicho motivo es necesarío tener un entorno de pruebas en nuestro ordenador personal, sin modificar la tienda virtual que tenemos colgada en Internet.

Si modificamos los programas directamente en el Hosting, sobre todo el sh404SEF, podemos tener una mala experiencia personal, puede que todo el rato te este dando la página web el error 404. (por cierto en mi primera instalación llego un momento que el 404 lo tenía atragantado).

Al desactivar los dos módulos el de la cache y el sh404sef, nuestra tienda virtual del hosting funcionará sin problemas, y os dará tiempo a vosotros de ir leyendo estos post y aplicarlos en vuestro ordenador personal, para ver los resultados, una vez que son correctos los podéis aplicar sin problemas en el hosting.

Lo más difí­cil pero no imposible es tener un entorno de pruebas en vuestro ordenador igual que el del Hosting, un mismo joomla, una misma base de datos, un mismo entorno de trabajo ………

Puede que me alargue en las explicaciones,  pero os puedo garantizar que la solución de la paginación o de la visualización del mismo producto en el virtuemart no es igual para todo el mundo, cada uno de vosotros puede tener una solución diferente en función de los componentes y themes instalados en el joomla + virtuemart.

Cómo hemos indicado tenemos que buscar el bug (error) en los programas de joomla, y modificar su código, para eso necesitamos un entorno de programación en nuestro ordenador personal.

Lo primero a realizar es instalar un entorno WAMP en nuestro windows, las siglas WAMP es Windows, Apache, Mysql y Php.

1.- Instalar XAMPP Apache

  instalar_xampp_01.gif El entorno WAMP se instala mediante el  el paquete Open Source  XAMPP (Apache) realizado por la organización apachefiends que está englobado en el proyecto de OpenSource y su dirección es :

    http://www.apachefriends.org/en/xampp-windows.html

 La carpeta por defecto es c:\xampp es aconsejable no cambiar dicha carpeta de nombre en la instalación,  (ver imagen izquierda). 

NOTA : Para ver las fotos en miniatura, simplemente tienes que picar encima de ella. 

instalar_xampp_02.gif Dicho programa instala en nuestro ordenador el Apache, PHP 4 y 5,  de forma opcional  MySql y el PhpMyAdmin (ver imagen izquierda) y todos sus servicios asociados. (Tenemos que indicar en la instalación que instale Apache, MySql y el PhpMyAdmin)

  XAMPP es una maravilla de producto funcionando a la perfección en S.O. Windows con más de 2   millones y medio  de descargadas en Open Source.

  • 1. Visite la dirección de arriba (Si aún no has descargado el programa) y descargue el programa.
  • 2. Descargue el paquete de instalación XAMPP, que deberá ser un archivo ejecutable llamado xampp-win32-1.7.3.exe (según versión)
  • 3. Ejecute el paquete de instalación. Cuando le solicite información, elija instalar Apache  y MySQL dejando sin marcar Filezilla.

 NOTA : Le recuerdo que si tiene instalado el IIS, no es posible tener dos servidores conectados a la vez por el puerto 80, uno de ellos tiene que ser desactivado.

Una vez terminado la instalación del XAMPP, ahora tenemos que instalar un IDE para buscar y modificar los programas realizados en PHP del JOOMLA. Existen muchos IDE’s, uno puede ser Eclipse, Netbeans  y muchos más ….

El que vamos a instalar es un IDE Opensource muy fácil de ejecutar, no necesitamos programas adicionales cómo el Java, el nombre del producto es :  CODELOBSTER, dicho programa crea un proyecto sobre el paquete de joomla más todos sus componentes para poder buscar las instrucciones a modificar en los programas que tienen el bug.

Otro programa necesario y digo necesario es el GOOGLE CHROME, ir al buscador google y descargar el navegador Chrome, lo necesitamos para que nos diga el elemento a inspeccionar con el Codelobster y a su vez modificar el código php del joomla.

Bueno con estos tres programas : XAMPP, CODELOBSTER y CHROME ya estamos listos para instalar nuestro JOOMLA del HOSTING en nuestro ordenador personal y realizar todas las pruebas necesarias para poder localizar los errores anteriormente descritos en nuestra tienda virtual.

En el próximo post seguiremos con nuestra explicación de solucionar problemas en el joomla con virtuemart más todos los componentes necesarios para arrancar una tienda virtual.

En el apartado (buscar de Forma automática el cambio de Divisa (I) , nos quedamos en la instrucción fsockopen() devuelve un puntero a fichero, el cual se puede usar junto con las otras funciones de ficheros (como fgets(), fgetss(), fputs(), fclose(), feof()).

Voy a colgar el programa en PHP que está funcionando desde hace muchos meses sin dar ningún tipo de error para localizar el cambio de divisa desde un Hosting con la instrucción fsockopen()

El programa php currency_class.php es una clase y la he llamado currency_class.php, ire comentando casi todas las instrucciones para su mejor comprensión.

PROGRAMA REALIZADO PARA PHP LLAMADO CURRENCY_CLASS.PHP SIENDO LA CLASE Currency.

<?php
/**
* @version  $Id: currency_class.php
* @package  mvmphp
* @copyright Copyright (C) 2009
* @comment      Clase Currency (Buscar Valor de la Divisa)
*/

class Currency {
// Por defecto para toCurr es USD = Dólares y fromCurr es EUR = Euros 

 public $toCurr   = ‘USD’; 
 public $fromCurr = ‘EUR’;
 // Constructor de la Clase, si los parametros a pasar son diferentes de null, pasamos los valores a las variables de la clase
 function __construct($p_curr=null, $p_from=null) {
  if ($p_curr != null ) $this->toCurr   = $p_curr;
  if ($p_from != null) $this->fromCurr = $p_from; 
  $this->toAmount = 1;  // Valor es siempre 1
 }  
 
/**
* Busca mediante la tecnica del Socker del puerto 80 en google el valor de la divisa
* Si es correcto devuelve una página para después localizar el cambio de la divisa
*/
 function getCurrencyGoogle() {

 $host = ‘www.google.com’;
 $page = ‘/search?&q=’.$this->toAmount.’+’.$this->toCurr.’+in+’.$this->fromCurr;
 $file_info = ”;   $get_info = false;  $returnHtml = array();  $t_d=”; 

# Open Socker (Google) y search con las dos divisas con valor 1
 if ($fsock = @fsockopen($host, $port=80, $errno, $errstr, $timeout=15))
 {
# Pagina y valores a buscar en el servidor
  @fputs($fsock, “GET $page HTTP/1.1\r\n”);
# DNS o IP del Host
  @fputs($fsock, “HOST: $host\r\n”);
# Tipo de Conexion y cierre
  @fputs($fsock, “Connection: close\r\n\r\n”);
  while (!@feof($fsock))
  {  
# A partir de la Segunda Lectura grabamos la informacion en $file_info para su posterior tratamiento
   if ($get_info) $file_info .= @fread($fsock, 1024);
   else
   {
# Por primera vez eliminamos la cabecera y controlamos errores de conexion
    $line = @fgets($fsock, 1024);
    if ($line == “\r\n”) $get_info = true;
    else if (stripos($line, ‘404 not found’) !== false)
    {
     $errstr = ‘FILE_NOT_FOUND’ . ‘: ‘ . $host . $page;
     error_log_event(‘ Currency 01-Error : ‘,$errstr ); 
     return false;
    }
   }
  }
  @fclose($fsock);
 }
 else
 {
  if ($errstr) { $errstr = utf8_convert_message($errstr);
                 error_log_event(‘ Currency 02-Error : ‘,$errstr );
                       return false;  }
  else     { $errstr = ‘FSOCK_DISABLED’;  
                 error_log_event(‘ Currency 03-Error : ‘,$errstr );
        return false; }
 }

Lee el resto de esta entrada »

Cuando realizas una página web pensando en todas las culturas e idiomas , tienes que tener en cuanta estos consejos :

1.- Google no está en todos los continentes, por ejemplo en Asia domina Baidu.

2.- El famoso YouTube está prohibido en China, alli el que funciona se llama Youku.

3.- En programación, existen funciones automáticas que cambian las palabras de minúsculas a mayúsculas, recuerda que muchos idiomas no existe las mayúsculas y el efecto es que no salen las letras.

4.- Cuando diseñas una página web necesitas comprender el significado de los colores en cada cultura. El significado del color es fundamental para un pueblo, por ejemplo el blanco en china significa muerte, sus colores preferidos son el dorado y el rojo, aquí en nuestra cultura el significado de los colores son diferentes.

5.- El mundo está lleno de ordenadores conectados a Internet. El navegador más utilizado es el Explorer 6 y muchos de ellos tienen una antigüedad superior a 5 años con tarjetas de vídeo no superior a 512 Kb y resolución de 800×600.

6.- Si tú sitio web está pensado para ordenadores de 1024×768,  millones de ordenadores no podrán ver tú página web, por lo explicado en el punto 5.

7.- En la escuela , en el trabajo, en las noticias te explican que los navegadores más utilizados en el mundo son IE, mozilla, chrome …, pero se olviden de que un pueblo como los chinos utilizan uno llamado 360 IE en chino ……..

8.- Nuestra cultura  se expresa y escribe con caracteres y en otras culturas en símbolos. Lo explico porque un carácter se puede leer con font 10, pero cuando estamos visualizando sí­mbolos es a font 12 o superior.

9.- Si quieres armonizar una página web en varios idiomas, recuerda que la lengua expresada con sí­mbolos es más ancha que la expresada en caracteres.

10.- Si pides opinión a personas de otras culturas, puede que nunca te digan que no, pero si no les gusta la página no entrarán nunca a tu web.

11.- Si realizas una web y tu vecino o amigo la ve lenta, en otros continentes como el Asiatico o el Africano ni la verán, sus líneas de comunicaciones son más penosas que las nuestras.

12.- Una página web multi-idioma que se aprecie tiene que enseñar la página principal en el idioma que el usuario tiene en su ordenador o navegador.

 Existen muchas técnicas diferentes para buscar el cambio de una divisa en lenguaje PHP en otro servidor que no sea el tuyo (Por ejemplo : European Center Bank). Generalmente el cambio de las divisas del día lo dan servidores de Bancos, Instituciones Económicas, Prensa especializada en economía, Las Bolsas de todo el Mundo ,  los buscadores como yahoo, google y demás organizaciones que están especializados en Importación/Exportación de Divisas.

 Para poder leer un fichero HTML en otro ordernador en PHP podemos utilizar la funcion :  file_get_contents()  y para poder leer un fichero en otro servidor en XML la funcion : simplexml_load_file()

Dichas funciones funcionan perfectamente si las utilizamos en programa PHP que sus máquinas son controladas por nuestro Dpto. Informático o en ordenadores locales con conexión a Internet.

 Las técnicas que estamos utilizando para buscar el valor de divisa en los formatos ya explicados anteriormente, son muy factibles porque dichas organizaciones nos dejan dichos ficheros en sitios públicos, para que otras compañías puedan acceder a leer libremente dichos ficheros.

 Pero la sorpresa es cuando una aplicación realizada en PHP  la ejecutamos en un HOSTING,  y vemos con sorpresa que dichas funciones nos dan error,  porque el Servidor del Hosting no permite acceder a otros Ordenadores con dichas funciones para leer los ficheros que nosotros necesitamos en nuestra aplicación.

Para solucionar el problema existe una función : fsockopen() que nos puede ayudar a leer ficheros HTML y TXT, para poder leer ficheros de otros servidores sin que el HOSTING nos corte el acceso a las máquinas remotas que deseamos acceder.

La funcion fsockopen()  abre una conexión de dominio Internet o Unix via sockets. su descripción es : 

   int fsockopen( string hostname, int port [, int errno [, string errstr [, double timeout]]])

 fsockopen() : Inicia una conexión de dominio Internet  o Unix.

 Para el domino Internet, abrirá una conexión TCP hacia el ordenador hostname en el puerto port.

 Para el dominio Unix, hostname se usará como ruta al socket, port debe ser 0 para este caso, el parámetro opcional timeoutse puede usar para especificar un timeout en segundos para establecer la conexión.

fsockopen() devuelve un puntero a fichero, el cual se puede usar junto con las otras funciones de ficheros (como fgets(), fgetss(), fputs(), fclose(), feof()).

En el siguiente post realizaremos un programa con fsockopen() para extraer el cambio de la divisa desde un servidor.

 Si desea contactar con telepieza, puede enviar un e-mail a: telepieza@telepieza.com.
Normas de uso y Politica de privacidad .Telepieza empezó el 20/12/2007 a las 18h (Hora Española).
 Ayude a financiar Telepieza en Internet, picando un anuncio de su interes en nuestro Weblog.