Hace unos meses,
Felipe Calvo desarrolló un
sistema de comentarios anidados personalizados para blogger. Es genial, porque en vez de obtenerlos vía javascript, los genera el servidor, permitiendo que sean indexados, etc.
Ayer me llegó una petición via email por si podía implementar la posibilidad de cancelar la respuesta (yo lo tenía en mi blog, pero de una manera un poco truculenta).
Así que me puse a escribir javascript, y aquí está. Considero que tiene algunas ventajas respecto al anterior, y son las siguientes:
- No generamos funciones ni variables globales.
- No usamos el DOM más de lo necesario
- Fomentamos buenas prácticas a la hora de escribir javascript (no añadir eventos via atributos, etc)
- Añade la posibilidad de cancelar
Cómo implementarlo:
Eliminar algo de código
Tenemos que eliminar el código cuya funcionalidad vamos a reemplazar. Entrar en edición de HTML, expandir plantillas de artilugios, buscar el código JS de Felipe, y
eliminarlo. Deberíais de haberlo puesto justo debajo de
<b:includable id='comments' var='post'>
.
<b:if cond='data:blog.pageType == "item"'>
......................
</b:if>
<b:if cond='data:blog.pageType == "static_page"'>
...................
</b:if>
<script type='text/javascript'>
/* Código bajo Licencia Creative Commons 3.0 (Atribución-No Comercial)
Felipe @ http://gplus.to/iFelipeCalvo */
...........................
//]]>
</script>
Pequeño cambio en el HTML
Después de esto tenéis que hacer un pequeño cambio en el HTML (agregar un atributo data y eliminar el atributo onclick). Debería ser algo parecido a cambiar:
<a class='reply-action' expr:onclick='"reply('" + data:comment.id + "');return false;"' href='#'>Responder</a>
por
<a class='reply-link' expr:data-comment-id='data:comment.id' href='#'>Responder</a>
El Javascript
Ahora sólo hace falta agregarle la funcionalidad con Javascript. Tendremos que buscar el
</b:includable>
que cierra a
<b:includable id='comments' var='post'>
, y justo encima insertar el código de
este archivo entre etiquetas
<script>
. Tal que así:
<script type='text/javascript'>
// ... Contenido del archivo ...
</script>
Sólo deberíais cambiar dos cosas del script, el valor de la variable
REPLY_TEXT
y el de
CANCEL_TEXT
, que son los textos que se pondrán cuando se cancela y responde (Responder y Cancelar por defecto).
El script está lleno de comentarios, en español y en inglés (el que me lo pidió lo hizo en inglés), para que se vea cómo funciona. Son prescindibles, así que si queréis una versión minificada sin comentarios (ocupa menos espacio),
podéis usar este archivo.
Verlo en funcionamiento
En este post podéis verlo funcionando ahora mismo. Y en el resto también
.