Cómo solucionar el error #2006 en XAMPP al importar archivos en phpmyadmin

Al importar una base de datos en phpmyadmin utilizando XAMPP podemos tener el siguiente error:

#2006 - MySQL server has gone away

Para solucionarlo tenemos que hacer lo siguiente:

  1. Editamos el archivo my.ini que en mi instalación está en: C:\xampp\mysql\bin\
  2. Buscamos la línea donde tenemos: max_allowed_packet e incrementamos su valor de 1M a 10M
  3. Guardamos el archivo my.ini
  4. Reiniciamos Apache y MySql en XAMPP

Cómo traducir los links Edit, Delete, Add en Field Collection en Drupal 7

Para traducir Edit, Delete, Add en el modulo Field Collection en Drupal 7 podemos perder el tiempo intentándolo buscar en Traducir Interfaz y no encontrarlo.

Field Collection con Edit, Delete y Add
Field Collection con Edit, Delete y Add

Para adaptarlo a nuestras necesidades es mucho más sencillo.Vamos al Tipo de Contenido donde esta el Field Collection y pulsamos en Gestionar Presentación. Buscamos nuestro Field Collection y veremos que tenemos lo siguiente:

Vemos el campo field collection con sus links como Edit, Delete y Add
Vemos el campo field collection con sus links como Edit, Delete y Add

Vemos que tiene como Links: Edit, Delete, Add. Damos al botón de la derecha para editar este campo. Lo pulsamos y vemos esto:

Opciones en Field Collection
Opciones en Field Collection

Cambiamos los valores como queramos (en nuestro caso Editar, Eliminar y Añadir) y guardamos, con lo que vemos esto:

Links de field collection cambiados
Links de field collection cambiados

Ahora si volvemos a la vista de un nodo de este tipo de contenido vemos lo siguiente:

Nodo con los links de field collection traducidos
Nodo con los links de field collection traducidos

Con lo que ya tenemos los links de field collection traducidos.

 

Cómo solucionar si nos ha bloqueado la cuenta del administrador de Drupal 7 después de 5 intentos de introducir la contraseña erroneamente

Nos puede suceder que entremos a una web de Drupal 7 que teníamos olvidada y tras 5 intentos de introducir el usuario y la contraseña incorrecta nos bloquee temporalmente ese usuario. Si no nos funciona Drush y no tenemos acceso al correo electrónico la solución es borrar el contenido de la tabla food, que es donde se guardan los intentos de entrada.
Para hacerlo vamos a phpmyadmin por ejemplo y ejecutamos:

DELETE FROM `flood`;

Después de esto podremos intentar otras 5 veces acceder con nuestro usuario y contraseña.

Cómo actualizar Drupal de 6.28 a 6.29

Hemos seguido los siguientes pasos para actualizar de Drupal 6.28 a Drupal 6.29:

1) Ponemos nuestra web con Drupal 6.28 en mantenimiento

2) Hacemos una copia de seguridad de todo, incluyendo archivos y base de datos

3) Borramos todos los archivos de la instalación antigua (Drupal 6.28) menos lo siguiente:

  • carpeta /sites
  • .htaccess
  • robot.txt

4) Descargamos la versión de Drupal 6.29, la descomprimimos y borramos los siguientes archivos y carpetas

  • .htaccess
  • robot.txt
  • carpeta /sites

5) Subimos esta versión modificada de Drupal 6.29 sobreescribiendo lo que sea necesario

6) Vamos al archivo settings.php y en la línea $update_free_access = FALSE; la cambiamos por $update_free_access = TRUE;

7) Vamos a http://web/update.php para actualizar la base de datos

8) Vamos al archivo settings.php y en la línea $update_free_access = TRUE; la cambiamos por $update_free_access = FALSE;

9) Ponemos el sitio online

Con esto ya tenemos a actualización completada

Cómo relacionar contenidos en Drupal 7

Para relacionar contenidos en Drupal 7 tenemos varios módulos que pueden ser de ayuda:

  1. Entity reference (con extensiones como Entity Reference View Widget, Entityreference prepopulate y Inline Entity Form)
  2. References
  3. Relation
  4. Views reference

En próximos posts vamos a analizar cada uno de estos módulos. Por ahora nos estamos decantando por utilizar Entity reference ya que lo vemos muy completo.

Flot: Cómo conseguir que se vea en IE (Internet Explorer) en instalaciones antiguas de Flot

Si estamos utilizando una versión antigua de Flot es posible que veamos las gráficas en todos los navegadores menos en explorer.

He podido solucionarlo modificando el archivo jquery.flot.js en las siguientes líneas:
línea 317:

if ($.browser.msie)

a

if (($.browser.msie)&& (( parseInt($.browser.version, 10) ) < 9))

y línea 323:

if ($.browser.msie)

a

if (($.browser.msie)&& (( parseInt($.browser.version, 10) ) < 9))

Esta solución en principio estaba hecha para IE9, pero la acabo de probar en IE10 e IE11 y también funciona.

Cómo agrupar campos en Drupal 7 con el módulo Field collection

Si desarrollamos con Drupal en algunos proyectos vamos a necesitar agrupar campos. En Drupal 7 disponemos del módulo Field collection. Para utilizarlo tenemos que hacer lo siguiente:

  1. Instalar el módulo Field collection
  2. Para que los campos nos queden agrupados como una tabla tenemos que instalar el módulo Field Collection Table
  3. Añadir un nuevo campo (field) con un field type: «Field collection» y widget «Table» y rellenamos los campos
  4. Seleccionar field como field collection
    Seleccionar field como field collection
  5. En la vista de nuestro content type nos quedaría así
  6. Field collection en content type
    Field collection en content type
  7. Ahora vamos a: Structure > Field collections
  8. Field collection en Structure
    Field collection en Structure
  9. Vemos que aparece una fila con el campo que hemos creado, donde nos dice en que Content type se usa (used in) y que operaciones se pueden hacer (manage fields para crear campos, editarlos o borrarlos y manage display para controlar la presentación de estos campos).
  10. Field collection en Structure
    Field collection en Structure
  11. Si pulsamos en manage fields podemos crear todos los campos que necesitemos como si estuvieramos creando campos para un content type
  12. Mange fields en field collection
    Mange fields en field collection
  13. Ahora si creamos contenido veremos los campos agrupados en el campo field collection. Si hemos puesto ilimitado se pueden crear campos una y otra vez
  14. Crear field collection en content type
    Crear field collection en content type
  15. Al ver el tipo de contenido veríamos el campo field collection agrupado en una tabla con todos sus valores
  16. Resultado de field collection en content type
    Resultado de field collection en content type

Case Sensitivy en PHP

En PHP las variables son Case-sensitive, es decir, la variable que se defina tendrá que escribirse exactamente igual para poder llamarla.

<?php
$musica="blues";
echo "Me gusta escuchar " . $musica . "<br>";
echo "Ayer escuché " . $MUSICA . "<br>";
echo "Mañana iré a un concierto de " . $MuSiCa . "<br>";
?>

En PHP las funciones definidas, clases y keywords como por ejemplo for, do, if, else, print, echo, etc son Case-insensitive.

<?php
echo "Echo con minúsculas: echo<br>";
EcHo "Echo con mayúsculas y minúsculas: EcHo<br>";
ECHO "Echo con mayúsculas: ECHO<br>";
?>

Comentarios en PHP

Los comentarios en PHP son de 3 formas:

  • Para una única línea: //
  • Otra opción para una única línea: #
  • Para varias líneas se comienza con /* y se cierra con */

Así tenemos el siguiente ejemplo:

<?php
// Comentario de una línea

# Otro comentario de una única línea

/*
Comentario de 
varias líneas
en PHP
*/
?>

Variables locales y globales en PHP5

Leyendo diferente documentación podemos ver que tenemos variables globales y locales. Las globales se declaran fuera de una función y tiene aplicación en cualquier lugar fuera de una función. Las variables locales se declaran dentro de una función y sólo tienen actividad dentro de esa función.

Podemos ver el siguiente ejemplo:

<?php
$a=15; // variable global
function prueba()
{
$b=74; // variable global
echo "Dentro de la función la variable a tiene un valor de $a y la variable b tiene un valor de $b";
}
prueba();
echo "<br>";
echo "Fuera de la función la variable a tiene un valor de $a y la variable b tiene un valor de $b";
?>

como vemos en el resultado:

Dentro de la función la variable a tiene un valor de y la variable b tiene un valor de 74

Fuera de la función la variable a tiene un valor de 15 y la variable b tiene un valor de

En resumen, la variable global no actúa dentro de una función y la variable local no actúa fuera de la función donde fue declarada.

Para conseguir que una variable global actúe dentro de una función hay que declararla en la función precedida de global o bien llamarla así: $GLOBALS[‘variable’]. Al hacer esto estas variables actúan de forma global y en la función en la que hemos declarado que es global. Esto lo podemos ver en los siguientes ejemplos:

Con global:

<?php
$a=15; // variable global
$b=74; // variable global
function prueba2()
{
global $a,$b;
$b=$a+$b;
}
prueba2();
echo $b; // obtenemos 89
?>

Con $GLOBALS[‘variable’]:

<?php
$a=15; // variable global
$b=74; // variable global
function prueba3()
{
$GLOBALS['b']=$GLOBALS['a']+$GLOBALS['b'];
}
prueba3();
echo $b; // obtenemos 89
?>