Tery Blog
Shoutbox en Drupal 5.x
Una de las aplicaciones que resultan útiles en algunos portales es la creación de bloques de minichat o shoutbox. Son mensajes cortos que se envían a fin de debatir temas cortos o dar informaciones rápidas al usuario.
En drupal existe un módulo para implementar un Shoutbox en un sitio web. Es realmente útil y personalizable, sin embargo nosotros hicimos ligeros ajustes al módulo a fin de arreglar dos inconvenientes.
1. El campo de ingreso para el mensaje es de una sola línea, para el usuario es deseable enviar mensajes más largos. Para ello viene bien valerse del artículo publicado dentro de la pagina de parches pendientes del proyecto. Se pueden hacer los siguientes cambios y reemplazar el campo de texto por un área de texto.
//En la línea 525 Cambiar $form['message'] = array( '#type' => 'textfield', '#default_value' => $default_msg, '#size' => 15, ); //Por: $form['message'] = array( '#type' => 'textarea', '#default_value' => $default_msg, '#cols' => 15, '#rows' => 4, );2. Para evitar que los usuarios puedan enviar mensajes con cualquier nombre de usuario, deshabilitamos la edición del campo nick, empleando la propiedad enunciada en el API #disabled.
//En la línea 517, agregamos al arreglo ('#disabled' => TRUE,) quedaría de esta forma: $form['nick'] = array( '#type' => 'textfield', '#disabled' => TRUE, '#default_value' => ($last_nick) ? $last_nick : $default_nick, '#size' => 15, '#maxlength' => 30, );Por supuesto siempre se podrán aplicar otro tipo de soluciones, como por ejemplo evitar que el campo de Nick sea renderizado empleando la propiedad #access. El módulo es altamente personalizable, recomendado como buena alternativa para un minichat.
Módulos útiles para SEO en Drupal
Cuando se construye una solución web, uno de los temas que más interesan y de gran relevancia es la labor de posicionamiento. Drupal, tiene una serie de módulos que pueden ayudar en esta labor y a manera de resumen quiero compartir estos:
XML Sitemaps: Este módulo, se encarga de la generación automática de mapas de sitio XML para motores de búsqueda. No solo genera el mapa XML, como añadido, los envía cada vez que el contenido cambia o se ejecuta Cron.
NodeWords: Su principal funcionalidad es ayudar con el metaetiquetado del sitio. Este módulo permite la creación de description y keywords que pueden ser declaradas de manera global, por término o por nodo.
LinksChecker: Interesante módulo que chequea el sitio a fin de saber si hay enlaces rotos en algún lugar. Útil para evitar la perdida de usuarios y de pagerank.
PathRedirect: Útil para migraciones de contenido o cambios en la URL. Este módulo se encarga de lo necesario para que las rutas y url queden correctamente redireccionadas.
Es solo un corto resumen seguro que hay más. ¿ Conoces algún otro ?
Código PHP en Blogger, formateando tu código
1 <!— Form for code –>
2 <form action=”<?php echo $_SERVER['PHP_SELF']; ?>” method=”post” style=”margin-bottom: 40px;”><div id=”formulario”>
3 <textarea rows=”20″ cols=”80″ name=”codigo”></textarea><br />
4 <input type=”submit” name=”enviar” value=”Formatear” /></div>
5 </form>
6 <?php
7 if( !empty( $_POST['codigo'] ) ) {
8 $codigo = $_POST['codigo'];
9 $codigo = str_replace( “\t”, ” “, $codigo );
10 $codigo = highlight_string( stripslashes( $codigo ), true );
11
12 $line = 1;
13 $buffer = array();
14 $cod = explode( “<br />”, $codigo );
15 foreach( $cod as $codLine ) {
16 $buffer[] = “<b>$line</b> ” . $codLine;
17 $line++;
18 }
19
20 $codigo = implode( “<br />”, $buffer );
21 // HACK:
22 $codigo = str_replace( “<b>1</b> <code>”, “<code><b>1</b> ”, $codigo );
23 echo ‘<div id=”formated” style=”border: double #dfdfdf;”><h3> Este es tu código formateado </h3>’;
24 echo ‘<p>’.$codigo.‘</p><hr />’;
25 //Gets the source from a file previously created and modified
26 $abrir=fopen(“tmp.txt”, “w”); //open file
27 fwrite($abrir, $codigo); //save code obtained previously
28 fclose($abrir); //close file
29 $url = ‘http://formatealo.terysoftware.com/tmp.txt’;
30 $lineas = file($url);
31 for ($i = 0; $i <count($lineas); $i++) {
32 $resultado = $resultado.htmlentities($lineas[$i]).“<br />”;
33 }
34
35 echo ‘<h3>Inserta este código en tu sitio </h3>’.$resultado.‘</div>’;
36 }
37 ?>
38
39 </div>
Sin duda se pueden mejorar algunas cosas, espero alguien pueda ayudar a mejorar el código. Los recursos empleados fueron: http://www.php.net/manual/es/function.fopen.php http://www.php.net/htmlentities http://informatica-practica.net/solocodigo/index.php/2007/12/27/mostrar-codigo-fuente-de-una-pagina-con-php/ web2development El código formateado puedes pegarlo sin inconveniente en el editor por default que trae el blogger. Si tienes algún script que realice la misma función para otros lenguajes podríamos publicarlo también. Valga mencionar que al publicar obtengo un error de TAGS no vaĺidos, por lo que marco el check para que deje de verificar el post actual. Fuente: http://desarrolladoryempresario.blogspot.com/2009/05/codigo-php-en-blogger-formateando-tu_08.htmlDrupal 5 - Corregir error de validación XHTML por id “edit-submit”
Drupal 5 presenta un error al validar con estandar XHTML dependiendo del template que se emplee. Por defecto drupal no alterna los identificadores de los diversos inputs que puedan haber en una misma página; por lo que se presenta un error de id duplicado en la validación.
Para solucionar dicho inconveniente pueden agregarse las siguientes lineas al archivo template.php ya sea del engine o del theme.
/** * Arregla la duplicación de id's "edit-sumit". */ function phptemplate_submit($element) { static $dupe_ids = array(); if (isset($dupe_ids[$element['#id']])) { $dupe_ids[$element['#id']]++; $element['#id'] = $element['#id'] .'-'. $dupe_ids[$element['#id']]; } else { $dupe_ids[$element['#id']] = 0; } return theme('button', $element); }Detectar navegador usando PHP.
Muchas veces es bastante útil el detectar el navegador que usa el cliente que se conecta a fin de saber si soporta ciertas funcionalidades o simplemente para hacerle cargar una hoja de estilos diferente. Se puede hacer a través de html, sin embargo una manera elegante de hacerlo es haciendo uso de PHP. Para esto, podemos escribir una función que nos detecte el navegador cliente.
<?php function ObtenerNavegador($user_agent) { $navegadores = array( 'Opera' => 'Opera', 'Mozilla Firefox'=> '(Firebird)|(Firefox)', 'Galeon' => 'Galeon', 'Mozilla'=>'Gecko', 'MyIE'=>'MyIE', 'Lynx' => 'Lynx', 'Netscape' => '(Mozilla/4\.75)|(Netscape6)|(Mozilla/4\.08)|(Mozilla/4\.5)|(Mozilla/4\.6)|(Mozilla/4\.79)', 'Konqueror'=>'Konqueror', 'IE7' => '(MSIE 7\.[0-9]+)', 'IE6' => '(MSIE 6\.[0-9]+)', 'IE5' => '(MSIE 5\.[0-9]+)', 'IE4' => '(MSIE 4\.[0-9]+)', ); foreach($navegadores as $navegador=>$pattern){ if (eregi($pattern, $user_agent)) return $navegador; } return 'Desconocido'; } ?>Luego se puede agregar un condicional que realice una acción según cada resultado. Basado en: http://www.webintenta.com/detectar-el-navegador-con-php.html
