Todas las recetas necesarias para comenzar con Drupal
Recetas sencillas para crear y modificar contenidos tales como páginas, artículos, eventos..
Esta es una de las recetas sencillitas dirigidas a personas que se defiende con cierta dificultad en la cocina. Explicaré cómo añadir un enlace dentro de un contenido.
Paso 1. Seleccionaremos el texto o palabras que deseamos sean el enlace a otra página web.
![]()
Paso2. En el editor de texto que estemos utilizando seleccionaremos el icono de añadir enlace que habitualmente contiene un "ocho tumbado".
![]()
Paso3. En el campo "Link href" introduciremos la url de la página que deseamos apuntar y en "title" pondremos el texto que deseamos se lea al pasar el ratón por encima del enlace.

Paso 4. Enviar. Ya tenemos nuestro enlace
En esta receta explicamos cómo crear un contenido dándole acceso desde otro contenido de la misma web. O dicho de otra manera, explicamos cómo crear páginas y cómo crear enlaces en los mismo contenidos.
Ingredientes: versión 4.6 de Drupal (aunque podría utilizarse otras posteriores), y el módulo htmlarea
Preparación:
1. Creamos una página
Crear contenido > Página
Escribimos el título y contenido, y ponemos especial atención a la URL. Deberemos recordar la ruta que escribamos o en su defecto, cuando creemos el contenido nos fijaremos en el número de nodo (o url) que le asigna. Por ejemplo, si es un contenido de la sección de Internacional de la web podremos poner como url "internacional/portugal".
2. Vamos a la página o contenido desde la cual queremos enlazar y la editamos. Seleccionamos el texto que será el enlace y vamos a "Insert Web Link". Según el módulo de editor de textos que estemos utilizando el icono será diferente, pero probablemente tendrá el aspecto de un ocho tumbado. Una vez hagamos "click" sobre este icono, se nos abrirá una ventana donde le indicaremos la URL. Puesto que es una página de la propia web no hará falta que escribamos "http://" en la ruta. Siguiendo el ejemplo anterior escribiremos "internacional/portugal". Aceptaremos y ya tendremos el enlace creado. Ahora sólo nos quedará "Enviar" la página y ....listo para comer.
Crear archivos comprimidos en drupal es muy fácil, sólo hace falta introducir en el módulo el archivo zip.inc y algo de programación.
En las líneas que se añaden en ejemplo.module se tiene que especificar el archivo o archivos a comprimir y el nombre del fichero zip. En este ejemplo los archivos a comprimir son foto1.jpg y foto2.jpg y el zip resultante es fotos_comprimidas.zip
Basado en el artículo de Michael.M: Creating ZIP files
ejemplo.module:
require_once("./includes/zip.inc");
$zip = new zipfile();
$files_to_zip = array('foto1.jpg', 'foto2.doc');
foreach ($files_to_zip as $filename) {
$zip->addFile(file_get_contents(file_create_path($filename)), $filename); // the second parameter specifies the filename in the zip
}
if (!file_save_data($zip->file(), file_create_path('fotos_comprimidas.zip'))) {
drupal_set_message(t('The zip could not be created.'), 'error');
}
?>
zip.inc:
/* $Id: zip.lib.php,v 2.4 2004/11/03 13:56:52 garvinhicking Exp $ */
// vim: expandtab sw=4 ts=4 sts=4:
/**
* Zip file creation class.
* Makes zip files.
*
* Based on :
*
* http://www.zend.com/codex.php?id=535&single=1
* By Eric Mueller
*
* http://www.zend.com/codex.php?id=470&single=1
* by Denis125
*
* a patch from Peter Listiak
* date and time of the compressed file
*
* Official ZIP file format: http://www.pkware.com/appnote.txt
*
* @access public
*/
class zipfile
{
/**
* Array to store compressed data
*
* @var array $datasec
*/
var $datasec = array();
/**
* Central directory
*
* @var array $ctrl_dir
*/
var $ctrl_dir = array();
/**
* End of central directory record
*
* @var string $eof_ctrl_dir
*/
var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00";
/**
* Last offset position
*
* @var integer $old_offset
*/
var $old_offset = 0;
/**
* Converts an Unix timestamp to a four byte DOS date and time format (date
* in high two bytes, time in low two bytes allowing magnitude comparison).
*
* @param integer the current Unix timestamp
*
* @return integer the current date in a four byte DOS format
*
* @access private
*/
function unix2DosTime($unixtime = 0) {
$timearray = ($unixtime == 0) ? getdate() : getdate($unixtime);
if ($timearray['year'] < 1980) {
$timearray['year'] = 1980;
$timearray['mon'] = 1;
$timearray['mday'] = 1;
$timearray['hours'] = 0;
$timearray['minutes'] = 0;
$timearray['seconds'] = 0;
} // end if
return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) |
($timearray['hours'] << 11) | ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1);
} // end of the 'unix2DosTime()' method
/**
* Adds "file" to archive
*
* @param string file contents
* @param string name of the file in the archive (may contains the path)
* @param integer the current timestamp
*
* @access public
*/
function addFile($data, $name, $time = 0)
{
$name = str_replace('\\', '/', $name);
$dtime = dechex($this->unix2DosTime($time));
$hexdtime = '\x' . $dtime[6] . $dtime[7]
. '\x' . $dtime[4] . $dtime[5]
. '\x' . $dtime[2] . $dtime[3]
. '\x' . $dtime[0] . $dtime[1];
eval('$hexdtime = "' . $hexdtime . '";');
$fr = "\x50\x4b\x03\x04";
$fr .= "\x14\x00"; // ver needed to extract
$fr .= "\x00\x00"; // gen purpose bit flag
$fr .= "\x08\x00"; // compression method
$fr .= $hexdtime; // last mod time and date
// "local file header" segment
$unc_len = strlen($data);
$crc = crc32($data);
$zdata = gzcompress($data);
$zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2); // fix crc bug
$c_len = strlen($zdata);
$fr .= pack('V', $crc); // crc32
$fr .= pack('V', $c_len); // compressed filesize
$fr .= pack('V', $unc_len); // uncompressed filesize
$fr .= pack('v', strlen($name)); // length of filename
$fr .= pack('v', 0); // extra field length
$fr .= $name;
// "file data" segment
$fr .= $zdata;
// "data descriptor" segment (optional but necessary if archive is not
// served as file)
// nijel(2004-10-19): this seems not to be needed at all and causes
// problems in some cases (bug #1037737)
//$fr .= pack('V', $crc); // crc32
//$fr .= pack('V', $c_len); // compressed filesize
//$fr .= pack('V', $unc_len); // uncompressed filesize
// add this entry to array
$this -> datasec[] = $fr;
// now add to central directory record
$cdrec = "\x50\x4b\x01\x02";
$cdrec .= "\x00\x00"; // version made by
$cdrec .= "\x14\x00"; // version needed to extract
$cdrec .= "\x00\x00"; // gen purpose bit flag
$cdrec .= "\x08\x00"; // compression method
$cdrec .= $hexdtime; // last mod time & date
$cdrec .= pack('V', $crc); // crc32
$cdrec .= pack('V', $c_len); // compressed filesize
$cdrec .= pack('V', $unc_len); // uncompressed filesize
$cdrec .= pack('v', strlen($name) ); // length of filename
$cdrec .= pack('v', 0 ); // extra field length
$cdrec .= pack('v', 0 ); // file comment length
$cdrec .= pack('v', 0 ); // disk number start
$cdrec .= pack('v', 0 ); // internal file attributes
$cdrec .= pack('V', 32 ); // external file attributes - 'archive' bit set
$cdrec .= pack('V', $this -> old_offset ); // relative offset of local header
$this -> old_offset += strlen($fr);
$cdrec .= $name;
// optional extra field, file comment goes here
// save to central directory
$this -> ctrl_dir[] = $cdrec;
} // end of the 'addFile()' method
/**
* Dumps out file
*
* @return string the zipped file
*
* @access public
*/
function file()
{
$data = implode('', $this -> datasec);
$ctrldir = implode('', $this -> ctrl_dir);
return
$data .
$ctrldir .
$this -> eof_ctrl_dir .
pack('v', sizeof($this -> ctrl_dir)) . // total # of entries "on this disk"
pack('v', sizeof($this -> ctrl_dir)) . // total # of entries overall
pack('V', strlen($ctrldir)) . // size of central dir
pack('V', strlen($data)) . // offset to start of central dir
"\x00\x00"; // .zip file comment length
} // end of the 'file()' method
}?>
Todo lo relacionado con la instalación y configuración de Drupal
Lo primero que necesitamos para ponernos a cocinar con nuestro cms favorito es instalarlo en nuestro servidor o máquina local. Ultimamente la tarea de instalar drupal se ha hecho más sencilla a cada versión, pero todavía recuerdo la primera vez que conseguí instalar drupal despues de semanas de intentos frustrados, corrí a llamar al amigo Karlos para darle noticia del gran logro. Bueno pues manos a la masa:
Ingredientes:
Para instalar drupal correctamente, vamos a suponer que disponemos de:
-Un sistema operativo GNU/Linux (Debian mola, pero ubuntu o cualquier otro servirán).
-Un servidor de bases de datos MySQL
-Php
-Servidor de páginas web Apache.
Es recomendable tener la última versión de todo este software.
Empezamos.
Primero nos situamos en el directorio donde vayamos a instalar (generalmente /var/www si lo instalamos en nuestra máquina y descargamos la última versión de drupal mediante wget:
$ wget http://ftp.drupal.org/files/projects/drupal-5.2.tar.gz
Descomprimimos:
$ tar -zxvf drupal-5.2.tar.gz
Renombramos (en vez de a drupal lo podéis renombrar a lo que más rabia os de):
$ mv drupal-5.2 drupal
Y damos permisos de escritura al archivo settings.php para que el navegador pueda escribir la configuración
$ chmod a+w drupal/sites/default/settings.php
Hecho esto solo nos falta crear la base de datos el usuario de la base de datos:
$ mysqladmin -u root -p create database Siendo database, user y password los valores que queráis meter para el nombre de la base de datos, el usuarios de la misma, y la contraseña respectivamente (la contraseña se pone entre comillas simples ' ')
$ mysql -u root -p database (desde aquí hasta \q estamos en la consola mysql)
GRANT ALL PRIVILEGES ON database.* TO user@localhost IDENTIFIED BY 'password';
Flush privileges;
\q
Hecho esto abrimos nuestro navegador favorito y en la barra de dirección ponemos el nombre de nuestra máquina (si es local localhost) seguido de /drupal
http://localhost/drupal
Nos aparecerá una ventana en la que ponemos el nombre de la base de datos usuarios y contraseña. Aceptamos y si no hay ningún error nos saldra una pantalla en la que nos dice que tenemos que quitarle los permisos de escritura al settings.php por seguridad. Pues lo hacemos:
chmod a-w drupal/sites/default/settins.php
Aceptamos y nos llevará a la pantalla principal de nuestro sitio.
Voila! Ya tenemos drupal instalado y listo para configurar.
En las siguiente entregas abordaremos los primeros pasos después de la instalación: traducción (no tienen por que gustarte los sabores de inglés), creación de usuarios (otros chefs como nosotros) y demás.