Insertar un quiz (cuestionario) en Contact Form 7 para reducir el spam en WordPress.

Ya os hemos hablado en otros artículos sobre las maneras de evitar el spam en el plugin de formularios de WordPress Contact Form 7. Y que realmente la mejor manera es insertar varias protecciones por capas para llegar a un equilibrio entre seguridad y usabilidad, intentado evitar lo máximo posible los falsos positivos.

Uno de los métodos que mencionamos en el artículo eran los Quizzes, o cuestionario. Son una manera de intentar identificar a los robots con preguntas que sólo un humano sabría razonar. La idea es que se interprete algo leído, y se saque una conclusión como respuesta. Evidentemente con la IA la eficacia de esto se reduciría…pero muchos de los robots spam no son todavía tan listos.

Preguntas típicas (puedes inventarte las tuyas propias serían):

  • ¿De qué color es la leche?
  • ¿Cuantas patas tiene un caballo?
  • ¿Cuál es la capital de Francia?
  • ¿Que se obtiene al mezclar amarillo y rojo?
  • ¿Cuánto es doscientos menos tres?


Lo bueno del Quiz es que es fácil de implementar, poco intrusivo (menos que el reCaptcha V2) y bastante eficaz.
Por ejemplo una buena combinación sería un Honeypot y un Quiz en el formulario.

Recordad que este método del quiz se puede implementar fácilmente en cualquier formulario con un poco de programación básica.

Cómo insertar un quiz en un formulario de Contact Form 7.

Sólo tienes que insertar el siguiente código en tu formulario:


En el formato

También puedes poner varias preguntas para que las cambie aleatoriamente:

[quiz preguntasaleatorias "¿De qué color es la leche?|Blanca"
                        "¿Cual es la capital de Francia?|Paris"
                        "¿Cuánto es cien menos uno?|99"]

Si pinchais en el botón cuestionario en el formulario os sale un generador que os permite generar el código de manera sencilla

Más información aquí.

Buscar comandos escritos anteriormente en Linux. Comando history.

Los comandos de Linux no son siempre los más sencillos de recordad. Y en ocasiones hemos ejecutado hace tiempo algunos, tras investigar y experimentar, que querríamos volver a ejecutar unos meses más tarde. Pero no nos acordamos, y no es plan buscar con la flecha arriba.
Hoy os enseñamos dos maneras de recuperar esos comandos.

Comando history junto a grep.

Una de las maneras más socorridas es usar el comando history que guarda un historial de lo que hemos escrito en la línea de comandos, tanto en esta sesión como en sesiones anteriores.

Como es mucha información, tenemos que usar el tan usado grep para filtrar. Os dejamos algunos ejemplos.

  • history | grep palabraquequeremosbuscar : Para buscar una palabra concreta.
  • history | grep 'frase que queremos buscar ' : Cuando tenemos que buscar frases con espacios o caracteres raros.
  • history | grep 'frase con "comillas" que queremos buscar ' : si nuestra frase tiene comillas, podemos jugar alternando simples y dobles.

Filtrando el fichero Histfile con grep.

Otra manera es buscar en el fichero Histfile y filtrarlo con grep. Pero este tiene el problema que la variable $HISTFILE sólo guarda los comandos tras una sesión, no incluye los de la sesión actual. Hay que tenerlo en cuenta.

El comando sería grep -w “frase a buscar” $HISTFILE

Estos comandos os los dejamos por si los necesitáis, pero también como referencia nuestra, porque son comandos que usamos relativamente frecuentemente (y no nos acordamos de una vez a otra).

Borrar pedidos y clientes en Prestashop con módulos gratuitos.

Lo primero es decir que borrar pedidos de una tienda en curso no es muy lícito (y puede que ilegal). Pero en ocasiones tenemos que borrar pedidos de prueba, o pedidos de una página en desarrollo. Así que puede ser necesario.
Hoy os dejamos dos maneras.

Módulo PrestaShop Cleaner en Prestashop 1.7

Desde hace tiempo existe este módulo útil y peligroso, gratuito y desarrollado por Prestashop: Prestashop Cleaner. Seguramente por el peligro que tienen, si no se sabe manejar, Prestashop lo ha escondido un poco más.

Para instalarlo ve a Módulos->Catálogo de Módulos y busca Cleaner.

Ahí verás que puedes instalar este módulo. Si no aquí tienes un sitio de descarga: https://github.com/PrestaShop/pscleaner
El módulo consta de 4 secciones, y una advertencia clara:
Ten mucho cuidado con esta herramienta – ¡No hay vuelta atrás!
Nota: haced una copia de la base de datos antes de usarla para tener un plan B.

  • Catálogo. Si le das a Si aquí, y a Eliminar Catálogo, borras completamente el catálogo de Prestashop. Cuidado, sólo para poner empezar una tienda desde cero.
  • Pedidos y Clientes: Si le das a Si y a Eliminar Pedidos y Clientes, borraras todos los clientes y pedidos de tu tienda (y pones los ID de cada uno otra vez a cero). Pero sin poder seleccionar, es todo o nada. Así que sólo para una limpieza total.
  • Limitaciones de la Integridad Funcional. Nos comprueba si todo va ok. Si tienes errores raros es algo que puedes probar. Aunque es muy básico.
  • Limpieza de la base de datos. Una limpieza que no viene mal hacer de vez en cuando. Aunque es básica.

Como veis el problema de este módulo es que es muy «drástico». Se carga todo o nada. Pero gratis, rápido y hace lo que promete.

Módulo Delete Orders Free de MyPresta.

Hemos hablado bastante de los módulos de MyPresta, porque crea muchos módulos gratuitos y útiles. Hoy os dejamos uno más: Delete Orders Free.
Una vez instalado este módulo, verás que en la secciónd e Pedidos de Prestashop aparece una nueva sección llamada Borrar Pedidos. Ahí podréis poner el ID del pedido en cuestión (lo tienes que coger antes de la sección pedidos) y darle a borrar.

Obviamente lo bueno de este módulo es que te deja borrar pedidos específicos.

Esperamos que con estos módulos podáis controlar los datos y pedidos que borráis de vuestras tiendas en Prestashop.

Truco en CSS: cambia texto por otro o ocúltalo.

Si tenéis conocimientos de CSS, seguramente ya sabréis cómo ocultar texto por CSS. Tenéis tres maneras:

  1. Le ponéis a la etiqueta (id o clase) del texto un display:none
  2. Cambiais el color de texto a color:transparent o al color del fondo.
  3. Ponéis el texto con visibility: hidden.

La primera hace desaparecer lo que quites, tanto para robots como para usuarios. El problema es que muchas veces hace desaparecer también el contenedor (por ejemplo la altura de línea). Y puede que no queramos, por ejemplo para el truco de hoy.
Las dos últimas tienen un problema desde el punto de vista SEO. Los usuarios van a leerlo, porque básicamente lo estamos ocultando. Pero los robots ignorarán el CSS y puede ver ese texto. Así que puede indexarse y hasta aparecer en Google. Así que tienes que tener cuidado con qué texto ocultas y debe ser una última solución cuando todo lo demás falla (es mejor quitarlo por programación).

Cómo cambiar texto por otro en CSS.

Usando el proceso anterior, os vamos a mostrar un truco para cambiar un texto de una web por otro.
Por las razones anteriores de los robots, este debe ser el último recurso. Antes debemos probar cambiarlo por código (Html5, php, Javascript, Php…). Pero si no podemos, siempre nos queda esta opción.

Para cambiar texto por CSS:

  • primero tenemos que poner un visibility:hidden en el id del texto que queremos cambiar. Esto hará que no se vea, pero la «línea» seguirá ahí. Por ejemplo:

    #loquequieroocultar {visibility: hidden;}
  • Después cogemos la etiqueta y añadimos un ::after, incluyendo contenido en ese after y forzando que tenga visibilidad (porque si no coge la del padre). Además, lo moveremos a la izquierda con un float:left y podemos colocar con el padding-left adecuado. Por ejemplo

    #loquequieroocultar { content:"Frase que quiero poner";
    visibility: hidden;
    float:left;}

Con esto veréis que tenemos el text que necesitábamos.
En este vídeo enseñamos el proceso.

Prestashop 1.7. Slider no se muestra en la versión móvil

Hoy tenemos una de esas tonterías que te pueden hacer perder el tiempo dando vueltas y vueltas, cuando la solución es muy sencilla. Esperemos que ahorre tiempo a la gente.

Si has desarrollado una web en Prestashop 1.7, y usado el tema Classic, el que viene por defecto (aunque sea con un tema hijo) te habrás dado cuenta de un problema con el slider (carrusel para poner fotos en la portada) en la versión móvil.
En PC funciona, no da ningún problema, pero en móvil no aparece.
Y no hay opción visible en la configuración para activar esto.

Solución.

La solución es sencilla. Aunque no obvia, y no entiendo por qué no lo han metido en la configuración.

Tienes que pinchar en el desplegable al lado del módulo (donde se activa y desactiva) y veréis que hay una opción llamada «Enable Mobile«.
Hay que pinchar ahí.

Es decir, el módulo viene desactivado por defecto en móviles y hay que activarlo.


Elegir donde no queremos que aparezcan anuncios automáticos de Google Adsense.

Desde que escribimos el artículo sobre cómo excluir páginas de nuestros anuncios automáticos de Google Adsense, nos han hecho muchas veces la misma pregunta. ¿Cómo puedo escoger dónde no quiero que aparezcan los anuncios?

Porque los anuncios automáticos están muy bien, pero en muchas ocasiones son muy intrusivos, se ponen automáticamente en posiciones que no queremos. Y esto, en la portada de nuestra web da MUY mala imagen.
Por eso muchos de los lectores querían eliminar la portada del sitio, pero con el truco anterior no es posible (porque eliminas la raíz).

Hasta ahora no era posible, la única solución era eliminar los anuncios «In page» que se incrustaban en la página. Pero claro, perdemos posibles medios de ingreso.
Pero Google parece que se ha espabilado (ha tardado) y acabamos de ver que han puesto (recientemente) una herramienta para solucionarlo.

Cómo eliminar posiciones donde no queremos que aparezcan los anuncios automáticos de Adsense.

Entrando en Adsense, en los anuncios que queremos modificar, ahora Google muestra una previsualización de nuestra web, con los sitios que detecta tiene para poner anuncios.

Ahora podemos eliminar estas posiciones que son molestas, y así no nos aparecen las que más intrusivas sean.
En la previsualización podemos poner cualquier url, por si los anuncios molestos aparecen en otro sitio que no es la portada.

Algo muy útil para los que usamos Adsense, lo hemos probado y funciona.
Espero que os resuelva la duda a todos los que teníais el mismo problema.

Aquí os dejamos el vídeo explicándolo.

Etiqueta de «No Disponible» en la imagen de productos en Prestashop 1.7 plantilla Classic.

Prestashop 1.7 está cambiando mucho. Poco tienen que ver el 1.7 que salió (a todas luces casi una beta) con el 1.7.6 de ahora. Aún así, y por todos los cambios, nosotros estamos configurando en los clientes la plantilla Classic que viene con Prestashop (y es la que están renovando).

En esta plantilla, en estos momentos, no se puede poner fácilmente un cartel de «No Disponible» en los productos que están fuera de stock (en la descripción si, pero no en la imagen). Parece que están haciendo avances en personalizar las «banderas» (flags) que podemos poner al listado de productos, pero todavía no se puede. Así que toca personalizar código y os enseñamos cómo (nosotros siempre creamos tema hijo, así que estas modificaciones son más fáciles).

Cómo poner la etiqueta de No Disponible en los productos de Prestashop.

Tenemos dos sitios en los que poner la personalización. Uno para que aparezca en el producto individual (al abrirlo) y otro en los listados (en las miniaturas de portada, categorías etc).

Etiqueta de No Disponible dentro del producto individual.

Para que salga la etiqueta «No Disponible» en la imagen del producto al abrir el producto, tenemos que editar el fichero product.tpl en la ruta /httpdocs/themes/nombredetutema/templates/catalog/produc.tpl 
Si tienes un tema hijo, crea esos directorios y copia el fichero del padre aquí. Así puedes editar sin problemas.

Tenemos que añadir lo siguiente:

{if $product->quantity == 0 AND $quantity == 0}
    <li class="product-flag rojo">
        {l s="NOT AVAILABLE" d="Shop.Theme.Catalog"}
    
    {/if}

Justo después de class=»product-flags» y antes de {foreach from=$product.flags item=flag}

Con esto, comprobará la cantidad antes de poner el resto de «carteles» y, si es cero, pondrá la de sin stock.

Etiqueta de No Disponible dentro de los listados de productos.

Para que aparezca el cartel de No Disponible en la foto miniatura de los listados de productos como en la portada o en las categorías, tenemos que hacer la misma modificación en otro fichero.

En este caso la ruta es : /httpdocs/themes/tutema/templates/catalog/_partials/miniatures/product.tpl

La modificación de código es la misma que en el caso anterior y la posición la misma (antes que empiece a cargar el resto de carteles).

Con esto ya tendréis el cartel que necesitabais en todas las vistas de productos (si falta alguna lo añadiremos aquí).

Cómo cambiar la contraseña de administrador en Issabel.

¿Quieres cambiar la contraseña de Issabel por web, o por línea de comandos?
Te enseñamos cómo.

Dónde se guardan las contraseñas en Issabel.

Lo primero es dónde se guardan las contraseñas. Para verlas edita el fichero /etc/issabel.conf.
Ahí encontrarás tanto la de administración por web como la de Mysql (apúntala si no la tienes porque te la van a pedir para cambiar la primera).

Cómo se cambia la contraseña en Issabel.

Por Web.

Tienes que ir Sistema->Usuarios->Usuarios elegir el usuario admin y ahí cambiar los campos «Contraseña» y «Confirmar contraseña». Después pinchar en Guardar.

Por línea de comandos.

Puedes elegir dos comandos (los dos llevan al mismo sitio)

issabel-admin-passwords –change (si no lo encuetra ve a /usr/bin y lo ejecutas ahí.
change-passwords

Se va a abrir un asistente muy básico en el que pregunta primero (dos veces) la contraseña de MYSQL. Después te deja cambiar la contraseña del usuario admin de Issabel.

Una vez cambiado, entra por vía web y prueba la contraseña.
Mucho más fácil que en el antiguo Elastix.

Por cierto, si de repente no entra en el interfaz web, comprobad primero el espacio libre en disco. A nosotros nos ha pasado a veces que estaba lleno y por eso no entraba.

Cómo cambiar los permisos sólo de ficheros o directorios en Linux.

En la mayoría de los CMS, por ejemplo en el archiconocido WordPress, los permisos de los ficheros y directorios son diferentes. 644 (ficheros) y 755 (directorios) en la mayoría de los casos, aunque a veces 664 y 775 (os explicaremos por qué en otro artículo.

Bien, así que ahora, porque he cometido un error o por (lo más frecuente) una diferencia de permisos al subir contenido por FTP, ahora tengo que cambiar los permisos. Normalmente esto se hace por línea de comandos (a menos que tengas un FTP ideal). ¿Cómo lo hago? Hoy os lo explicamos.

Cómo cambiar los permisos de ficheros o directorios en Linux.

La manera más habitual y rápida de hacerlo es con el comando find. Vamos a usar ese comando para encontrar sólo directorios, o sólo ficheros, y añadir al comando un final en el que se hará el cambio de permisos a los resultados.
Os ponemos primero los comandos (dos opciones en cada uno) y luego los explicamos. Obviamente podéis seleccionar otros directorios etc.

  • Cambio de permisos a ficheros.

    find /raizdelsitio -type f -exec chmod 644 {} \; o
    find /raizdelsitio -type f -exec chmod 644 {} \+;
  • Cambio de permisos a directorios.

    find /raizdelsitio -type d -exec chmod 755 {} \; o
    find /raizdelsitio -type d -exec chmod 755 {} \+;

Explicación de los comandos.

Como veis estamos usando find para encontrar los tipos de fichero (f) o directorios (d).
Se añade al final el chmod relevante para cada tipo de fichero.
El elemento {} lo que hace es ejecutar el final del find (chmod en este caso) a cada salida del find.
El + te lo pone en columnas y no sólo en filas.
El \ lo que hace es «escapar» el comando y ; decir que finalice. Así que \; indica el final del comando por si los ejecutamos en scripts.
Más información aquí.

Error en los cron job de Moodle: undefined function current_language().

Hace unos días, tras actualizar Moodle y cambiar/actualizar las versiones de php del hosting, nos dimos cuenta que los cron job de ese Moodle no estaban funcionando.
En el backend simplemente decía que «el script de tareas cron no se ha ejecutado en más de X horas». No daba más información.
Pero mirando los logs del servidor, o cuando intentabas ejecutar el script a mano, nos dimos cuenta que salía un error que, entre otras cosas, decía «undefined function current_language()«.
Os decimos cómo solucionarlo.

Solución a undefined function current_language() en los cron job de Moodle.

Básicamente lo que ha pasado es que Moodle ha actualizado sus scripts. Recordad que antes era un ejecutable por web pero ahora es un script del servidor que hay que ejecutar desde el mismo. Y seguramente lo que ocurra es que estás ejecutando el script con una versión más antigua de php de la requerida por el miso.
Los servidores tienen una versión de php «por defecto». Y cuando ejecutas el script con php -q /rutademoodle/admin/cli/cron.php
se ejecuta con la versión por defecto. Y no es compatible con el script.

Tienes que ejecutarlo con la versión compatible más actualizada que tienes en tu servidor. Por ejemplo con:
php72 -q /rutademoodle/admin/cli/cron.php
o
php73 -q /rutademoodle/admin/cli/cron.php

Nota: la versión y comando a usar depende de tu servidor. Puedes poner php en el cli y darle al tabulador para ver las versiones soportadas. Y probar desde cli con alguna. Luego establecer la que funcione en el cron job.
En algunos hosting (mal configurados) habrá que ejecutar el comando desde la carpeta de php72 ( la que sea).