Contenido

Interesante forma de mejorar los comentarios con jQuery

7 Ene

+ 4

Jim Jeffers ha publicado un artículo a modo de ejemplo para mostrar una forma de mejorar la legibilidad de los comentarios de su blog.

encouraged-commentary

Como podemos ver en la imagen se añaden una serie de opciones que enlazan un comentario con otro dentro del mismo hilo, estos comentarios son respuestas a este y nos ayudarán a seguir el hilo de los mismo más fácilmente. Tambíen nos ofrece la posibilidad de citar una porción del texto del comentario seleccionando el texto que queremos citar, una vez seleccionado nos mostrará un botón para responder dicho comentario.

encouraged-commentary2

Una propuesta interesante de la que disponemos el código fuente para implementarlo en nuestros proyectos (requiere bastante modificaciones).

Adapta tus comentarios a Wordpress 2.7 sin problemas

26 Dic

+ 35

Bueno, me he alargado y lo he dejado mucho tiempo, pero más vale tarde que nunca. Entre turrones y garrapiñadas he pensado que sería interesante hacer digestión haciendo algo constructivo, así que vamos al lio.

Introducción

Como es dificil hacer un artículo que abarque a todos los themes disponibles vamos a usar Kubrick para ilustrar con ejemplos este tutorial. Al ser el theme por defecto de Wordpress todos disponemos de él para poder hacer las pruebas mientras seguimos el tutorial.

Para los menos experimentados, el Theme Kubrick es el que nos encontraremos en la carpeta wp-content/themes/default/, concretamente vamos a editar el fichero comments.php de este directorio.

Detectar Wordpress 2.7

Si estamos desarrollando un theme para Wordpress 2.7, este punto puede ser interesante, pero si por el contrario estás haciendo un theme para tu blog, el que ya está en Wordpress 2.7, puedes ahorrarte hacer la comprobación ya que siempre se va a cumplir.

if (function_exists('wp_list_comments')) :
// Wordpress 2.7
else :
// Wordpress 2.6-
endif;

Veamos como quedaría en el theme Kubrick.

<?php if ($comments) : ?>
	<h3 id="comments"><?php comments_number('No Responses', 'One Response', '% Responses' );?> to &#8220;<?php the_title(); ?>&#8221;</h3>
	<ol class="commentlist">
	<?php if (function_exists('wp_list_comments')) : ?>
	<!-- Wordpress 2.7 -->
	<?php else : ?>
	<?php foreach ($comments as $comment) : ?>
		<li <?php echo $oddcomment; ?>id="comment-<?php comment_ID() ?>">
			<?php echo get_avatar( $comment, 32 ); ?>
			<cite><?php comment_author_link() ?></cite> Says:
			<?php if ($comment->comment_approved == '0') : ?>
			<em>Your comment is awaiting moderation.</em>
			<?php endif; ?>
			<br />
			<small class="commentmetadata"><a href="#comment-<?php comment_ID() ?>" title=""><?php comment_date('F jS, Y') ?> at <?php comment_time() ?></a> <?php edit_comment_link('edit','&nbsp;&nbsp;',''); ?></small>
			<?php comment_text() ?>
		</li>
	<?php
		/* Changes every other comment to a different class */
		$oddcomment = ( empty( $oddcomment ) ) ? 'class="alt" ' : '';
	?>
	<?php endforeach; /* end for each comment */ ?>
	<!-- Wordpress 2.6- -->
	<?php endif;?>
	</ol>
 <?php else : // this is displayed if there are no comments so far ?>
	<?php if ('open' == $post->comment_status) : ?>
		<!-- If comments are open, but there are no comments. -->
	 <?php else : // comments are closed ?>
		<!-- If comments are closed. -->
		<p class="nocomments">Comments are closed.</p>
	<?php endif; ?>
<?php endif; ?>

Como podemos ver, ya tenemos el sistema medio montado. Ahora si el Wordpress en el que está corriendo nuestro theme no tiene Wordpress 2.7 nos mostrará los comentarios como los estaba haciendo hasta ahora, en caso contrario y con Wordpress 2.7 disponible no mostraremos nada, por el momento.

wp_list_comments()

La clave de todo es esta función que se encarga de mostrarnos los comentarios de nuestros posts de una forma sencilla y rápida. Como la mayoría de funciones de Wordpress esta tiene una serie de parámetros para personalizar su salida.

  • walker, nos activa/desactiva los comentarios anidados (Por defecto Null)
  • max_depth, máxima profundidad de estos comentarios (Por defecto ”)
  • style, estilo con el que Wordpress nos permite mostrar los comentarios [ul, div] (Por defecto ul)
  • callback, función que nos permite personalizar completamente la salida de los comentarios, se lanzará en cada uno de los comentarios.
  • end-callback, función que se lanzará al terminar la iteración de los comentarios.
  • type, especifica el tipo de comentarios a mostrar [comment, pingback, all] (Por defecto all)
  • page, página en la que empezamos a mostrar los comentarios.
  • per_page, comentarios por página
  • avatar_size, tamaño del avatar de los usuarios que comentan (Por defecto 32)
  • reverse_top_level, nos muestra los comentarios en orden inverso al que se introdujeron (Por defecto Null)
  • reverse_children, orden inverso en los hijos de los comentarios anidados (Por defecto ”)

Bueno, ahora que conocemos las opciones disponibles en wp_list_comments() incorporémoslo en el código anterior.

<?php if ($comments) : ?>
	<h3 id="comments"><?php comments_number('No Responses', 'One Response', '% Responses' );?> to &#8220;<?php the_title(); ?>&#8221;</h3>
	<ol class="commentlist">
	<?php if (function_exists('wp_list_comments')) : ?>
	<!-- Wordpress 2.7 -->
		<?php wp_list_comments(); ?>
	<?php else : ?>
	<?php foreach ($comments as $comment) : ?>
		<li <?php echo $oddcomment; ?>id="comment-<?php comment_ID() ?>">
			<?php echo get_avatar( $comment, 32 ); ?>
			<cite><?php comment_author_link() ?></cite> Says:
			<?php if ($comment->comment_approved == '0') : ?>
			<em>Your comment is awaiting moderation.</em>
			<?php endif; ?>
			<br />
			<small class="commentmetadata"><a href="#comment-<?php comment_ID() ?>" title=""><?php comment_date('F jS, Y') ?> at <?php comment_time() ?></a> <?php edit_comment_link('edit','&nbsp;&nbsp;',''); ?></small>
			<?php comment_text() ?>
		</li>
	<?php
		/* Changes every other comment to a different class */
		$oddcomment = ( empty( $oddcomment ) ) ? 'class="alt" ' : '';
	?>
	<?php endforeach; /* end for each comment */ ?>
	<!-- Wordpress 2.6- -->
	<?php endif;?>
	</ol>
 <?php else : // this is displayed if there are no comments so far ?>
	<?php if ('open' == $post->comment_status) : ?>
		<!-- If comments are open, but there are no comments. -->
	 <?php else : // comments are closed ?>
		<!-- If comments are closed. -->
		<p class="nocomments">Comments are closed.</p>
	<?php endif; ?>
<?php endif; ?>

De esta forma estaremos obteniendo los comentario con los parámetros por defecto, pero ¿que pasa si queremos adaptar a nuestro gusto los comentarios?

Parámetro callback

El parámetro callback representa el nombre de una función que será lanzada en cada comentario y a la que se le pasará el comentario por parámetro para disponer de todas las opciones dentro de ella. De esta forma podemos personalizar nuestros comentarios.

<?php if (function_exists('wp_list_comments')) : ?>
	<?php wp_list_comments('callback=MI_TEMPLATE_DE_COMENTARIOS'); ?>
	<div class="navigation">
	<div class="alignleft"><?php previous_comments_link() ?></div>
	<div class="alignright"><?php next_comments_link() ?></div>
<?php else : ?>
	<?php foreach ($comments as $comment) : ?>
		<?php MI_TEMPLATE_DE_COMENTARIOS($comment);?>
	<?php endforeach; ?>
<?php endif; ?>

Y la función MI_TEMPLATE_DE_COMENTARIOS() tendrá un aspecto similar a este:

<?php
function MI_TEMPLATE_DE_COMENTARIOS($comment, $args, $depth) {
// Comentario actual
   $GLOBALS['comment'] = $comment; ?>
   /*
   		comment_class() --> Nos permite hacer comentarios tipo zabra.
   		comment_ID() --> ID del comentario actual
   */
   <li <?php comment_class(); ?> id="comment-<?php comment_ID() ?>">
     <div id="div-comment-<?php comment_ID(); ?>
      <div class="comment-author vcard">
/* Mostramos el avatar del usuario */
         <?php echo get_avatar(); ?>

/* Enlace a la URL del autor del comentario */
         <?php printf(__('<cite class="fn">%s</cite> <span class="says">says:</span>'), get_comment_author_link()) ?>
      </div>

/* Controlamos que el comentario esté aprovado */
      <?php if ($comment->comment_approved == '0') : ?>
         <em><?php _e('Your comment is awaiting moderation.') ?></em>
         <br />
      <?php endif; ?>
/* Datos extra de los comentarios */
      <div class="comment-meta commentmetadata"><a href="<?php echo htmlspecialchars( get_comment_link( $comment->comment_ID ) ) ?>"><?php printf(__('%1$s at %2$s'), get_comment_date(),  get_comment_time()) ?></a><?php edit_comment_link(__('(Edit)'),'  ','') ?></div>
/* Texto del comentario */
      <?php comment_text() ?>
/*Botón de reply, con él podremos responder a un comentario.*/
      <div class="reply">
         <?php comment_reply_link(array_merge( $args, array('add_below' => 'div-comment', 'depth' => $depth, 'max_depth' => $args['max_depth']))) ?>
      </div>
     </div>
   </li>
<?php } ?>

Exactamente lo que hará Wordpress, será hacer pasar la variable $comment por esta función en cada comentario, haciendo que esta sea la encargada de pintar la salida por pantalla.

Responder comentarios

La posibilidad de responder a comentarios sin tener que montarlo tu mismo, es un aliciente más que Wordpress 2.7 nos ofrece, pero para entender como funciona debemos conocer comment_reply_link().

comment_reply_link();

Se trata de generar el enlace necesario para poder responder a un comentario, en el código anterior, vemos como lo insertamos despues de comment_text(). Por defecto esta función recibe 3 parámetros:

  • $args, argumentos que condicionarán la salida
  • $comment, comentario que vamos a responder
  • $post, post en el que se encuentra en comentario que hemos de responder.

Los argumentos disponibles que condicionarán la salida nos darán una cierta flexibilidad a la hora de generar el enlace:

  • add_below, patrón al que se le añadirá el ID del comentario que indicará a que comentario hará referencia la respuesta (Por defecto comment-XXX)
  • respond_id, lugar en el que se insertará el comentario recien comentado (Por defecto respond)
  • reply_text, etiqueta que informará al usuario de la acción del enlace (Por defecto “Reply”)
  • login_text, etiqueta que mostrará en caso de que el usuario no esté logueado y sea necesario (Por defecto “Log in to Reply”)
  • depth, profundida del comentario, para comentarios anidados (Por defecto 0)
  • before, HTML que se insertará delante del enlace
  • after, HTML que se inseratá despues del enlace.

Esto nos generará el enlace necesario para responder a comentarios, pero aún nos queda adaptar el theme para poder recibir la respuesta.

La magia del javascript

La respuesta de comentarios necesitará de unas funciones de Javascript para hacer más dinámica la tarea de responder a los comentarios, para ello tendremos que añadir en el <head></head> de nuestro theme la siguiente línea:

if ( is_singular() ) wp_enqueue_script( 'comment-reply' );

Se encargará de cargar los Javascript necesarios para disfrutar de esta funcionalidad.

Modificando el formulario

Wordpress por si solo no puede detectar los nombres de los elementos de nuestros formularios y como necesitan ciertos campos que hasta ahora no existían nos obliga a añadir esta línea en nuestro formulario para generar los campos necesarios para la respuesta.

<?php comment_id_fields(); ?>

Si nuestro theme tiene un elemento <input /> llamado comment_post_ID, podemos borrarlo ya que esta función se encargará de generarlo automáticamente.

Para indicarle el lugar en el que se encuentran los elementos necesarios para responder, debemos insertar un enlace en forma de ancla en el formulario, simplemente nos servirá para llevar el foco al formulario de envio:

<a id="respond"></a>

Para terminar, tenemos la función comment_form_title(), que se encargará de cambiar el famoso texto de “Leave a comment” por un “Leave a reply for XXX” en caso de estar respondiendo un comentario, para ello deberemos reemplazar el texto:

<h3 id="respond">Leave a Reply</h3>

por este otro:

<h3><?php comment_form_title( 'Leave a Reply', 'Leave a Reply to %s' ); ?></h3>

Si el usuario decide cancelar la acción y desechar la respuesta al comentario debe tener un enlace que le permita hacer esto, por eso tendremos que añadirlo en nuestro formulario de comentarios con la siguiente función:

<div id="cancel-comment-reply">
   <small><?php cancel_comment_reply_link() ?></small>
</div>

¿Y la paginación?

Otra de las mejoras que los comentarios nos traen en esta nueva versión, es la paginación de los mismos, haciendo que los posts con centenares de comentarios queden un poco más legibles. Para ello tenemos un serie de funciones que nos permiten dotar nuestros themes de esta funcionalidad. Evidentemente estas funciones será usadas únicamente en el apartado que destinamos a Wordpress 2.7 ya que estas funciones no están disponibles para versiones previas.

next_comments_link();

Nos enlaza con la siguiente página de comentarios dentro de nuestro post. Esta función recibe 2 parámetros:

  • label, etiqueta que deseamos mostrar para informar al usuario del uso del enlace. (Por defecto “Newer Comments »”)
  • max_pages, máximo de páginas mostradas para enlazar. (Por defecto 0)

previous_comments_link();

Nos enlaza con los comentarios anteriores, si los hubiera. Por defecto dispone de un único parámetro:

  • label, etiqueta que deseamos mostrar (Por defecto “« Older Comments”)

Jugando con el API de comentarios de Wordpress 2.7

20 Dic

+ 12

La llegada de Wordpress 2.7, además de un importante cambio visual ha significado un cambio en la forma de interactuar con el blog. Anteriormente la API del blog únicamente daba la posibilidad de insertar/editar/borrar posts, enviar pigbacks/tracbacks y poca cosa más, ahora con la inclusión de los comentarios en la API las posibilidades son espectaculares.

Una muestra de ello es, por ejemplo, el Notificador de comentarios para MacOS X, que usa esta nueva propiedad para detectar cuando se ha añadido un nuevo comentario.

Pues visto que esta nueva funcionalidad puede dar mucho juego he estado jugando un poco con ella y he montado un primer boceto de lo que sería una clase en PHP que nos permita trabajar con ella fácilment.

Requerimientos

  1. The Inutio XML-RPC Library
  2. Wordpress 2.7
  3. PHP5 Akismet (Opcional)

Funcionamiento

El funcionamiento de esta clase es muy sencillo, mediante una petición XML-RPC desde el servidor origen, lanzamos una petición del tipo (insert/getComment/getComments) al servidor destino (que ha de ser un Wordpress 2.7) y este nos devuelve el resultado de nuestra petición.

Continua —>

Ideas para tus formularios de comentarios

8 Dic

+ 2

Via DzineBlog ha hecho una recopilación de formularios de comentarios que podemos utilizar para coger alguna idea para nuestros blogs.

Añade funcionalidades a tus comentarios con jQuery (responder)

1 Dic

+ 21

Con el rediseño de aNieto2k se implementaron una serie de funcionalidades para hacer más fácil la vida al usuario y así mejorar la experiencia del usuario dentro de la página. Una de estas mejoras es el “Responder” de los comentario. Un sistema basado en Javascript que permite responder a comentarios directamente desde el propio comentario.

comment-replu-with-jquery

Como podemos ver, se basa en un botón (con una flecha circular) que al accionar nos muestra un <textarea /> y un <button /> para enviar el texto al formulario de envio de situado más abajo. Este sistema, personalmente me es muy práctico para contestar a muchos usuarios a la vez y para poder ver el comentario de otro usuario y así comentar por partes sin perder el hilo.

Montémoslo

Para explicaro como montarlo, he decidio usar como base Kubrick que como todos sabemos es el theme por defecto de Wordpress. Es un theme ideal para explicar todas estas cosas, después, dependiendo del theme que estés usando habrá que hacer varios cambios a la estructura JS, pero eso ya es otro tema :D

Requisitos?

He usado jQuery, por lo rápido que es desarrollar con él. Si alguien lo porta a otros frameworks que me pegue un toque.

  1. Wordpress 2.6
  2. Theme Kubrick
  3. jQuery

¿Javascript?

Para evitar tener que tocar la estructura de nuestro theme y como esta funcionalidad va a necesitar mucho javascript para funcionar he pensado en montarlo todo usando javascript para así, los usuarios que no lo tengan habilitado no verán un enlace sin funcionalidad. Otra alternativa sería usar <noscript /> para mostrar el <textarea /> pero sería más laborioso y al final se consigue lo mismo.

El código

Os pongo el código necesario para conseguir esta funcionalidad sobre el Theme Kubrick.

$(document).ready(function(){
  // Recorremos los comentarios del listado <ol />
  $("ol.commentlist li").each(function(x, el){

	// Cogemos el ID del comentario
    var ID = $(el).attr("id");

	// Cogemos el nombre del autor del comentario
    var author = $(el).find("cite a").text();

	// Añadimos el enlace en la parte inferior del comentario.
    $(el).append('<a class="a-responder" href="#' + ID + '">Responder a ' + author + '</a>');

	// Le añadimos funcionalidad
    $(el).find(".a-responder").bind("click", function(){

		// Guardamos el elemento
        var link = $(this);

		// Añadimos el <textarea /> y el <button />
        $(link).after('<div class="div-responder"><textarea class="txtarea-responder"></textarea><button class="btn-responder">Insertar</button></div>');

		// Le añadimos funcionalidad al <button />
        $(el).find(".btn-responder").bind("click", function(){

			// Guardamos el texto anterior
            var oldText = $("textarea#comment").val() + "\n";

			// Preparamos el nuevo texto.
            var newText = '\n<a rel="reply-comment" href="#comment-'+ ID +'">' + author +"</a>: "+ $(this).prev().val();

			// Añadimos el nuevo texto
            $("textarea#comment").val(oldText + newText);

			// Eliminamos el <textarea /> y el <button />
            $(this).parent().remove();

			// Mostramos el enlace
            $(link).show();
        });

		// Ocultamos el enlace
        $(link).hide();

		// Paramos la ejecución del enlace
        return false;
    });
  });
});

Explicación

Como podemos ver, son muy pocas líneas y tienen una funcionalidad muy potente en sus tripas. Vamos a intentar destripar el código para explicar lo que nos ofrece cada línea.

// Recorremos los comentarios del listado <ol />
$("ol.commentlist li").each(function(x, el){

Primero hemos de recoger los comentario de la página, Kubrick para ello usa una estructura <ol /> para listar los comentarios así que mediante el uso de each() los iteramos aplicando a cada uno de ellos las siguiente líneas de código.

// Cogemos el ID del comentario
var ID = $(el).attr("id");

// Cogemos el nombre del autor del comentario
var author = $(el).find("cite a").text();

Al iterar un listado de elementos, jQuery nos permite interactuarlos como si estuvieramos en un elemento concreto cada vez. En este caso, recogemos el ID del comentario para almacenarlo y usarlo más adelante, al igual que nombre del autor que en este theme está bajo una etiqueta <cite />.

// Añadimos el enlace en la parte inferior del comentario.
$(el).append('<a class="a-responder" href="#' + ID + '">Responder a ' + author + '</a>');

Una vez guardados estos datos básicos podemos montar el enlace que desencadenará el proceso que nos muestre el <textarea />. Para ello usaremos append(), que nos permite introducir un HTML al final del elemento, en este caso $(el), que representa al item actual dentro de each().

kubrick-reply-system-close

// Le añadimos funcionalidad
$(el).find(".a-responder").bind("click", function(){

Una vez creado el enlace, debemos darle un funciondad, para ello, buscaremos el elemento <a class="a-responder" /> dentro del comentario actual y despues controlaremos el evento “click” del mismo.

// Añadimos el <textarea /> y el <button />
$(link).after('<div class="div-responder"><textarea class="txtarea-responder"></textarea><button class="btn-responder">Insertar</button></div>');

// Le añadimos funcionalidad al <button />
$(el).find(".btn-responder").bind("click", function(){

La funcionalidad de este botón es la de mostrar el <textarea /> y el <button /> además de añadirle la funcionalidad necesaria al <button /> para añadir el texto al formulario de envio de comentarios. Para ello volvemos a buscar el botón dentro del elemento actual y controlamos la funcionalidad del evento “click” del mismo.

// Le añadimos funcionalidad al <button />
$(el).find(".btn-responder").bind("click", function(){
	// Guardamos el texto anterior
        var oldText = $("textarea#comment").val() + "\n";
	// Preparamos el nuevo texto.
        var newText = '\n<a rel="reply-comment" href="#comment-'+ ID +'">' + author +"</a>: "+ $(this).prev().val();
	// Añadimos el nuevo texto
        $("textarea#comment").val(oldText + newText);
	// Eliminamos el <textarea /> y el <button />
        $(this).parent().remove();
	// Mostramos el enlace
       $(link).show();
});

El <button /> únicamente ha de copiar el contenido del <textarea /> al formulario de envio añadiendo el enlace necesario para poder seguir el comentario una vez posteado. Para ello guardaremos, inicialmente, el contenido del <textarea /> del formulario de envio y le añadiremos el nuevo texto. Una vez hecho esto, podemos elimiar el <textarea /> y el <button /> ya que no lo volveremos a usar, pero por si queremos añadir nuevos comentarios volveremos a mostrar el enlace que desencadena todo lo anterior.

kubrick-reply-system-open

¿Y como lo adapto a mi theme?

Esta es la tarea más laboriosa ya que cada theme es un mundo y está pensando y desarrollado de una forma diferente. He intentado dejar el código lo más claro posible para que la adaptación sea más sencilla. Realmente, requiere únicamente conocer dos elementos fundamentales de la estructura del theme para que funcione perfectamente.

  1. El sistema en que muestra los comentarios, mediante <ul />, <ol />, <div />,…. y encontrar el patrón que se aplica a cada comentario.
  2. El lugar en el que se encuentra el nombre del usuario que ha comentado, aunque es Opcional ya que podemos usar el ID del comentario para enlazar el próximo comentario.

Ver código

Puedes echarle un vistazo al código directamente aqui.
¿Que te animas a montarlo en tu blog? Cuentanos tu experiencia.

CommentFeed: Más Novedades

31 Ago

+ 10

El fin de semana es dificil dedicarle algo de tiempo a cualquier cosa, entre comidas con la familia y cenas con los amigos, queda poco tiempo para teclear. Pero estar alejado del PC da lugar a las mejores ideas, así que he aprovechado y he ido recopilando unas cuantas de estas ideas para CommentsFeeds.

1) Usando los servidores de Google

He creado un proyecto en Google Code, en el que he alojado el fichero commentfeeds.js que cargamos desde nuestro marcador para así disponer de un buen server donde tener alojado el script, y así disponer de una carga más rápida.

Esto nos obliga cambiar el enlace anterior a esto:

javascript:(function(s){s.type='text/javascript';s.src='http://commentfeed.googlecode.com/files/commentfeed.js?rand='+Math.random();document.getElementsByTagName('head')[0].appendChild(s)})(document.createElement('script'));

El enlace antíguo lo eliminaré el miercoles, así que si alguien le falla apartir de ese día, deberá cambiar el “Marcador fantasma” por el mostrado anteriormente.

También he usado Google Ajax Libraries, en que alojan los principales frameworks JS en los servidores de Google haciendo la carga más rápida.

2) Eliminando el CSS

En la fase anterior, usabamos un fichero CSS para colocar los elementos dentro de Google Reader. Ahora los aplico mediante Javascript evitando ese tiempo de demora para cargar el fichero.

Bueno, espero tener algo listo a final de semana, pero no quiero adelantar nada. Depende del tiempo libre que tenga. Saludos y gracias por el feedback que me estais reportando.

CommentFeed: Novedades

29 Ago

+ 10

Bueno, ante todo, quiero dar las gracias a todos los que con sus pruebas me han ayudado a solucionar un par de problemas y a plantearme las cosas de una forma diferente. Esta tarde he podido dedicarle un poco de tiempo y he podido hacer alguna modificación a lo que os mostré ayer, os las enumero una a una.

1) Comentarios

Evidentemente, el no ver los comentarios previos podría suponer problemas para algunos casos, como bien comenta _SxR_ en su comentario.

Para ello he añadido los comentario relacionados al post, necesita un poco de diseño pero ahora lo importante es la funcionalidad.

commenfeed-comentarios

2) Diferencia entre “Expanded View” y “List View”.

Google Reader, permite usar 2 diferentes formas para visualizar los feeds, la “Expanded List” que nos presenta los artículo abiertos y a medida que vamos haciendo scroll hacia abajo,  nos va seleccionando el post que se encuentre en el centro.

Por otro lado, tenemos “List View”, que nos muestra las entradas cerradas, mostrando únicamente el título y al hacer click sobre él, nos abre el artículo dejando los demás cerrados.

Dependiendo del modo usado, la funcionalidad puede ser diferente.

a) Expanded View

Una vez cargado el script, haciendo click sobre el artículo haremos aparecer la opción de “Comenta”.

b) List View

Para este modo, y realmente para cualquiera, he hecho que el testigo que vemos justo arriba, al lado del motor de busqueda, sea un enlace que al hacer click sobre él, nos mostrará la opción de “Comenta”.

Posibles problemas

Al tratarse de un fichero JS, puede verse afectado por algún tipo de caché y no disponer de alguna de las mejoras. Podemos hacer 3 cosas:

1. Armarnos de paciencia y esperar a que se recarge por si solo.

2. Acceder al enlace siguiente y recargar la página para así hacer una recarga nueva del fichero.

http://www.anieto2k.com/demo/commentfeed/commentfeed.js

3. Añadir al final del enlace del Marcador (Math.random()) dejando el marcado así:

javascript:(function(s){s.type='text/javascript';s.src='http://www.anieto2k.com/demo/commentfeed/commentfeed.js?rand='+Math.random(); document.getElementsByTagName('head')[0].appendChild(s)})(document.createElement('script'));

Gracias de nuevo a todos los que me están ayudando con sus ideas, consejos y sugerencias.

CommentFeed, comenta en aNieto2k desde Google Reader

28 Ago

+ 44

En el Congreso de Webmasters de 2007, Jose de Corral (de Macbookers) me comentó una idea que le daba vueltas por la cabeza y quería saber si era posible

La idea era la de comentar en el blog directamente desde tu lector de feeds.

Pros:

  • El usuario perezoso comenta.
  • Disminución de tiempo empleado por el usuario en leer y comentar sus feeds.
  • Ofrecer una opción más al usuario.
  • Incremento de comentario

Contras:

  • El usuario no ha de entrar al blog a comentar.
  • Posible de reducción de visitas.

Bueno, despues de casí 300 días creo que os puedo presentar la versión alpha y exclusiva para aNieto2k de CommentFeed (me he estrujado el cerebro ¿eh? :D )

¿Por que exclusiva?

Por un motivo muy sencillo, aún está muy verde. La versión que tengo está desarrollada para aNieto2k y he de pensar como montar un plugin para poder usarlo en cualquier blog sin problemas, pero me gustaría ponerme a ello después de haber testado bien el código que interviene.

¿Como funcionaría?

La idea es muy sencilla, pero requiere la intervención de las dos partes involucradas en la lectura de feeds. Por una parte, el blogger, deberá activar un plugin (aún no tengo muy claro si hará falta algo más) para permitir comentar en el blog, si el blogger no lo activa, el usuario no podrá comentar en el blog directamente desde Google Reader.

Por otra parte, el usuario deberá tener un Marcador (o Script del GreaseMonkey, o algún otro método que se me ocurra) que ejecutará cuando quiera comentar en un blog desde Google Reader.

* El funcionamiento aún puede variar, pero la idea general es la explicada anteriormente.

¿Por que Google Reader?

Por el momento es solo Google Reader, principalmente por que es el lector de feeds que utilizo, y me ha ido perfecto para hacer las pruebas, la idea es intentar conseguir exactamente lo mismo desde cualquier otro Lector de Feeds online (los offline no creo que sea factible, pero no lo descarto por el momento).

¿Como puedo comentar en aNieto2k desde Google Reader?

Pues por el momento, solo tenemos un Marcado que deberemos ejecutar cada vez que queramos comentar.

Una vez guardado el Marcador, ya podemos ir a Google Reader y pulsar sobre él.

commentfeed-testigo

En la parte superior de la pantalla veremos, junto al formulario de busqueda de Google Reader, un testigo verde, indicando que podemos hacer uso de CommentFeed.

Una vez activado, veremos en la parte inferior del post, en la barra de acciones una nueva opción más, “Comentar”.

commentfeed-comenta

Al hacer click sobre la nueva acción, nos mostrará un formulario, ubicado en la parte superior-izquierda de la ventana en la que nos encontramos un formulario con el que podemos comentar directamente en la entrada que tenemos abierta.

commentfeed

¿Posibles problemas?

Muchos y muy variados. He probado en Firefox y Safari, ha funcionado perfectamente, pero pueden producirse problemas que aún no he podido detectar.

Uno que se me ocurre ahora, es la URL con la que se guardó el Feed en Google Reader, el correcto es el siguiente:

http://www.anieto2k.com/feed/

Al usar el plugin de FeedBurner, puede ser que la URL del feed no sea la correcta. Lo podemos saber si el enlace de los artículos apunta directamente a aNieto2k o a FeedBurner.

Si ocurre algún problema, me sería muy útil que me lo comentarais para intentar solucionarlo.

¿Que te parece?