Después de instalar el tema Bootstrap de Drupal 7 para un nuevo sitio de comercio online me he encontrado con que el menú responsive, el que aparece como un icono con tres rayitas cuando la pantalla es pequeña, no funciona. Googleando un poco me encuentro con este enlace en el que cuentan que el problema puede ser que la versión de JQuery que esté usando no sea la correcta. En Drupal 7 podemos mantener actualizada la versión de JQuery si instalamos el módulo Jquery Update, el cual ya viene incluido por defecto en el núcleo de Drupal 8.
Una vez instalado dicho módulo, lo activamos y ya tenemos funcionando el menú en el móvil.
Archivo de la categoría: Drupal
Corregir el error «Illegal string offset ‘data’…» en Drupal 5
Para los que somos un poco vagos y todavía mantenemos páginas en Drupal 5, una de las cosas más molestas son los continuos errores que aparecen en el registro debido a las nuevas versiones de PHP que van saliendo. Uno de ellos es el error «Illegal string offset ‘data’ en la línea 110 del archivo /nuestro_drupal5/includes/tablesort.inc.»
La solución la tenemos en este enlace, que nos cuenta que para corregirlo hay que cambiar dicha línea 110 de código del archivo /nuestro_drupal5/includes/tablesort.inc de la siguiente forma. Donde dice:
if (isset($header[$i]) && $header[$i]['data'] == $ts['name'] && $header[$i]['field']) {
Lo cambiamos a:
if (isset($header[$i]) && isset($header[$i]['data']) && $header[$i]['data'] == $ts['name'] && isset($header[$i]['field']) && $header[$i]['field']) {
Y con esto desaparecen los molestos mensajes de error.
Solucionado el errror: las búsquedas en Drupal siempre devuelven «Debe incluir al menos una palabra clave positiva con 3 caracteres o más»
Con la actualización del PCRE (Perl Compatible Regular Expressions) a la versión 8.30 en PHP, ocurre que las búsquedas del módulo search dejan de funcionar en Drupal 5. Cualquier búsqueda que se haga devuelve el error «Debe incluir al menos una palabra clave positiva con 3 caracteres o más» y este comportamiento no se soluciona volviendo a indexar el sitio web. Para solucionarlo hay que modificar a mano el fichero /modules/search/search.module modificando la línea 47 de forma que se cambie la cadena «\ x {D800} – \ x {F8FF} \» por «\ x {E000} – \ x {F8FF} \». Es decir, dicha línea 47 que inicialmente está así (da igual en minúsculas que mayúsculas):
‘\x{a80b}\x{a823}-\x{a82b}\x{d800}-\x{f8ff}\x{fb1e}\x{fb29}\x{fd3e}\x{fd3f}’.
hay que dejarla así:
‘\x{a80b}\x{a823}-\x{a82b}\x{e000}-\x{f8ff}\x{fb1e}\x{fb29}\x{fd3e}\x{fd3f}’.
De esta forma las búsquedas vuelven a funcionar.
No es buena práctica modificar módulos del núcleo de Drupal a mano, pero en este caso es una solución de compromiso en Drupal 5, cuyos módulos están fuera de mantenimiento. De hecho este error se da también en Drupal 6, pero está corregido desde la versión 6.26.
Solucionado gracias a https://drupal.org/comment/7189896#comment-7189896 y http://www.sture.ch/node/203
Error «Could not retrieve title from feed» al usar el módulo Feeds en Drupal 7
El módulo Feeds permite importar fácilmente datos en Drupal desde ficheros CSV, aunque tiene algunas características en su funcionamiento que pueden ser desconcertantes. Su utilización está muy bien explicada por ejemplo aquí por lo que no me voy a extender en ello, lo que querría explicar aquí es cómo evitar la reiterada aparición del mensaje de error «Could not retrieve title from feed» que me aparece cada vez que intento cargar un fichero CSV.
Para poder hacer bien la carga necesitamos:
1) Tener definido el nodo en nuestro Drupal, con unos campos de similar nombre y formato que los del fichero CSV.
2) Definir un nuevo importador (feed importer) relacionándolo con el tipo de contenido que tenemos que cargar (no configurarlo como standalone).
3) Ir a la sección Contenido y pulsar en Añadir contenido. Seleccionar el nodo que queremos cargar.
4) Nos aparece la página de carga de datos del nodo, en la cual, aparte del formulario para introducir los campos, nos deberá mostrar una serie de valores a rellenar para realizar la carga desde fichero. Seleccionamos el fichero a importar.
Si pulsamos el botón «Guardar» en este momento, nos saldrá el dichoso mensaje de error y no se hará ninguna carga. Para evitarlo, ponemos algo en el primer campo (que es el campo title), cualquier cosa. Pulsamos de nuevo «Guardar».
Veremos que ahora nos da otro error, pero además nos aparecen una serie de pestañas, entre las cuales está la pestaña «Importar». Pulsamos en ella y desde ahí ya podemos hacer la carga.
Finalmente hemos conseguido hacer la carga de datos, aunque sea de forma un tanto chapucera.
Habilitar url limpias de Drupal en OpenSUSE
Si partimos de una instalación limpia de un servidor LAMP en OpenSUSE, por defecto no tendremos el módulo rewrite de Apache activado, por lo que las url limpias de Drupal no nos van a funcionar. Para activarlas, hay que hacer lo siguiente:
1) Editar el fichero /etc/sysconfig/apache2
En la linea con APACHE_MODULES="actions
… etc añadimos al final «rewrite» de forma que nos queda más o menos así:
APACHE_MODULES="actions alias auth_basic authn_file authz_host authz_groupfile authz_default authz_user autoindex cgi dir env expires include log_config mime negotiation setenvif ssl userdir php5 reqtimeout rewrite"
2) Editamos el archivo /etc/apache2/httpd.conf
e incluimos las directivas que nos permiten activar el módulo rewrite en el directorio en que tenemos Drupal, por ejemplo:
<Directory /srv/www/htdocs/drupal7>
AllowOverride All
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?p=$1 [L,QSA]
</Directory></code>
3) Reiniciamos el servidor web con systemctl restart apache2.service
y volvemos a probar en Drupal si ya tenemos disponibles las url limpias.
Drupal 5 con PHP 5.3
El gestor de contenidos Drupal en su versión 5 sólo es compatible con las versiones de PHP hasta la 5.2, por lo que los sitios web que continúan usando la versión 5 de Drupal no funcionarán correctamente en los servidores en los que se haya actualizado el PHP a la versión 5.3 o superior.
Como algunos de estos sitios no es posible actualizarlos a la versión 6 de Drupal (o no hay medios para hacerlo) la única forma de hacer que funcionen lo más correctamente posible es aplicando el patch que aparece explicado en este enlace.
Para instalarlo primero tendremos que descargarnos dicho patch, nos situaremos en el directorio raiz en el que tengamos instalado nuestro Drupal 5, y posteriormente lanzaremos el comando:
patch -p1 < <path_al_fichero>/drupal5php53_0.patch
En caso de que al aplicar el patch no se produjeran los efectos esperados, es posible revertir lo realizado con el comando:
patch -p1 -R < <path_al_fichero>/drupal5php53_0.patch
Para más información sobre la forma de aplicar «parches» en Drupal, consultar este enlace.
Habilitar url’s limpias en Drupal 7 en un directorio de usuario de Apache (userdir)
Para habilitar las urls limpias en un Drupal 7 instalado en un directorio de usuario de Apache (con el módulo mod_userdir activado), tendremos que hacer lo siguiente
Verificar que tenemos habilitados los módulos de Apache ‘mod_rewrite’ y ‘mod_userdir’. Para ello comprobaremos que en el fichero /etc/httpd/conf/httpd.conf
están descomentadas las líneas
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule userdir_module modules/mod_userdir.so
Indicar en nuestro fichero .htaccess dónde está instalado Drupal, modificando el fichero ~/public_html/drupal7test/.htaccess
. Buscamos la linea con RewriteBase y la descomentamos, poniendo a continuación el directorio en el que tenemos instalado Drupal, en mi caso la línea queda así:
RewriteBase ~/public_html/drupal7test
Permitir la actuación del módulo mod_rewrite en nuestro directorio de usuario; para ello modificaremos el fichero /etc/httpd/conf/extra/httpd-userdir.conf
de forma que quede activado el AllowOverride:
UserDir public_html
<Directory "/home/*/public_html">
AllowOverride All
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS>
Order deny,allow
Deny from all
</LimitExcept>
</Directory></code>
Más información sobre las url’s limpias en la página de Drupal.
Las instrucciones anteriores sirven literalmente para Archlinux, si se hace en otra distribución de Linux es muy posible que los directorios donde se ubiquen los ficheros de configuración sean distintos. Para localizarlos, deberemos utilizar el comando (como root):
find /etc -name <nombre del fichero>
URL’s limpios de Drupal en 1&1
Pues gracias a educasitio he encontrado solución a cómo conseguir que los sitios con Drupal alojados en el hosting 1And1 puedan activar la característica de URL’s limpios. Basta con editar el archivo .htaccess y la sentencia:
En Drupal 6:
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
modificarla para que quede:
RewriteRule ^(.*)$ /index.php?q=$1 [L,QSA]
En Drupal 7
RewriteRule ^ index.php [L]
modificarla para que quede:
RewriteRule ^ /index.php [L]
Como casi siempre, lo que parece un problema muy grande, tiene una solución muy sencilla.
Ejecutar el cron de Drupal automáticamente
Pues esto también es muy fácil, pero el comando que hay que poner en el crontab se las trae. Primero hay que ejecutar:
$crontab -e
Para editar las tareas programadas. Si es la primera vez que lo hacemos nos pedirá confirmación para elegir el editor que deseamos usar. El más simple es el «nano».
En el archivo que se abre, hay que incluir la siguiente linea:
15 * * * * wget -O - -q -t 1 http://www.misitiodrupal.es/cron.php
Salvamos, salimos, y ya está. A partir de ese momento cada hora en el minuto 15, se ejecutará el cron de nuestro sitio Drupal.
Esta página web nos permite crear nuestro crontab sin necesidad de memorizar su sintaxis. Pero sólo nos quita una parte del problema, pues los parámetros del wget, evidentemente, no están inlcuidos en ella.