Sigo en mi evangelización de CodeIgniter, y en este caso se trata de un mini tutoria que explica cómo crear un carrito de la compra usando la librería Shopping Chart Class que ofrece CodeIgniter. Quizás sea mejor utilizar aplicaciones específicas para crear tiendas, pero en algunos casos no nos queda otra que implementarlo nosotros mismos.
Ha salido la versión 2 de PHP-GTK, la extensión de PHP que incluye librerías para usar GTK+ y así poder realizar aplicaciones GUI multiplataforma.
Da soporte a las versiones GTK+ de la 2.6 a la 2.12, aunque para la versión 2.8 no lo es al 100%. A parte de solucionar algunos bugs, también da soporte al portapapeles, y muchas clases para win32.
No tengo yo muy claro que crear aplicaciones GUI con PHP sea lo más optimo, pero bueno, nunca está mal poder disponer de otras opciones. PHP-GTK2
Vía / PHPDeveloper.org
La versión PHP5.3 está recién salida del horno, y una de las cosas más interesantes que trae son las funciones para trabajar con internacionalización (que no solo de inglés vive la web).
Para ello existen unas nuevas clases que nos ayudarán a crear páginas en varios idiomas o sin los problemas que antes nos encontrábamos para debido al “formato” en inglés:
Locale: divide los datos de localidad en componentes (pais, lenguaje, …)
Collator: compara y ordena strings de acuerdo con las reglas locales.
Number formatter: permite formatear números de diferentes modos (comas decimales, separador de miles, …)
Date formatter: formatea fechas y obtiene fechas de texto.
Message formatter: permite crear mensajes desde strings parametrizados dependiendo de las reglas locales.
Normalizer: para trabajar con Unicode de forma normalizada, ya que hay caracteres que son representados por distintos códigos Unicode.
Grapheme: trabaja con “graphemes” (no se traducirlo), que son las representaciones de las letras, las cuales puede constar de varios caracteres.
IDN: permite trabajar con nombres de dominios en formato internacional (eñes, acentos, …)
En el artículo explican más detalladamente cada clase.
Los menús de WordPress son una de las funcionalidades menos aprovechadas de WordPress. Una de sus funciones más frecuente es la de blogroll, el problema viene cuando el cliente te pasa una lista de enlaces enorme que te toca meter a mano. Para evitar echar horas a esto, he desarrollado una caja que te aparecerá en los menús de WordPress que te permite importar lotes de enlaces sacados de un Excel, ODS, Google Drive, … tan solo tendrás que copiar las columnas y pegarlas (primera columna es el texto y la segunda el enlace):
// Añadir caja en menus para importar enlaces
function add_menu_importar_box() {
$screen = get_current_screen();
if ($screen->base == 'nav-menus') {
add_meta_box( "add-importar", 'Importar enlaces', 'add_menu_importar_meta_box', 'nav-menus', 'side', 'default', null );
}
}
add_action('admin_head', 'add_menu_importar_box');
function add_menu_importar_meta_box() {
?>
Copia los enlaces de la hoja de cálculo con el siguiente formato: Nombre, Enlace
El código es sencillo, con add_menu_importar_box creo la caja y con add_menu_importar_meta_box la "pinto", luego lo único que hay que hacer es llamar a wpNavMenu.addLinkToMenu con los datos del textarea y listo.
También he añadido botón de borrado masivo, porque borrarlos uno a uno es otra tortura.
Algo que echo en falta de PHP es la posibilidad de saber en qué porcentaje se ha subido un fichero (por ejemplo para mostrar una barra de progreso), algo que si permiten otros lenguajes de programación.
Para poder realizarlo en PHP es necesario tener instalado APC, que mediante el parámetro APC_UPLOAD_PROGRESS permite monitorizar el progreso del upload.
El tutorial explica muy detalladamente cómo realizar un file uploader en PHP, explicando los siguientes aspectos: instalación de APC, cómo monitoriza APC, clases de PHP básicas, implementación del uploader y ampliación de las clases para mostrar el progreso. Monitoring File Uploads using Ajax and PHP
In object oriented programming, polymorphism is a powerful and fundamental tool. It can be used to create a more organic flow in your application. This tutorial will describe the general concept of polymorphism, and how it can easily be deployed in PHP. What is Polymorphism? Polymorphism is a long word for a very simple concept. Polymorphism descri…
Para mí, uno de los mayores fracasos de Twitter es su API, una limitación de su uso increíble para algo que le podría dar mucho juego a la aplicación. Ahora mismo no sé en cuánto está el límite, pero la posibilidad de realizar una aplicación basada en Twitter es una pesadilla.
Para aquellos que no quieran sufrir lo que hemos sufrido con TwitterPoster (los espacios en blanco es porque la gente actualiza su imagen y no podemos recuperar la de todos los usuarios por el límite en el API de Twitter), les recomiendo usar Twitter mediante CURL.
Os paso un script sencillito que he realizado:
<?php
// Primer hacemos login
$url ="https://twitter.com/sessions";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
// Por si tienen limitación por navegador
curl_setopt($ch, curlOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)");
// Poned una ruta para las cookies
curl_setopt ($ch, CURLOPT_COOKIEJAR, '/temp/');
curl_setopt ($ch, CURLOPT_COOKIEFILE, '/temp/');
curl_setopt ($ch, CURLOPT_POSTFIELDS, "username_or_email=[usuario]&password=[contraseña]");
// Para que funcione el https
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, curlOPT_SSL_VERIFYHOST, 2);
curl_exec ($ch);
// Cargamos el home, porque Twitter añade dos campos ocultos para poder publicar por web
$url ="http://twitter.com/home";
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec ($ch);
// Recuperamos los campos ocultos
preg_match('//', $result, $match);
$authenticity_token = $match[1];
preg_match('//', $result, $match);
$siv = $match[1];
// Insertamos el texto
$res = $url ="http://twitter.com/status/update";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'siv='.$siv.'&authenticity_token='.$auth.'&status=[texto]');
curl_exec ($ch);
curl_close ($ch);
unset($ch);
?>
¿Qué fallo tiene este script? pues que si cambian el HTML (campos de formulario, …) o las URLs deja de funcionar, pero al menos no tenemos limitaciones. Eso sí, es más costoso para sus servidores y para los nuestros, porque en vez de hacer una llamada, hacemos 3, y en nuestro caso, a parte parseamos una página para obtener dos campos ocultos.
4 Comments
Asà es, la clase de carro de compra te puede salvar en algún apuro donde se necesite implementar una tienda online sin necesidad de utilizar alguna de las avanzadas tiendas online disponibles en la web.
Saludos!
Hola Julian, interesante el blog que tienes 🙂
Saludos
TodavÃa no tuve que hacer ningún carrito desde que salió esta clase, pero me guardo este tutorial para cuando llegue el momento 🙂
Asà es, la clase de carro de compra te puede salvar en algún apuro donde se necesite implementar una tienda online sin necesidad de utilizar alguna de las avanzadas tiendas online disponibles en la web.
Saludos!
Hola Julian, interesante el blog que tienes 🙂
Saludos
TodavÃa no tuve que hacer ningún carrito desde que salió esta clase, pero me guardo este tutorial para cuando llegue el momento 🙂