PDF de programación - Manual de Programación en Drupal 7

Imágen de pdf Manual de Programación en Drupal 7

Manual de Programación en Drupal 7gráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 22 de Enero del 2018)
547 visualizaciones desde el 22 de Enero del 2018
467,0 KB
60 paginas
Creado hace 11a (12/04/2013)
Manual de Programación en Drupal 7

David Arroyo Menéndez

April 12, 2013

Contents

1 API de Drupal

1.1 db\query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 node\load
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 user\load . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4 Aplicando funciones de la API a nuestro proyecto Drupal
. .
1.5 Views php . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6 Templates de nuestro tema instalado . . . . . . . . . . . . . .
1.7 Templates de módulos instalados . . . . . . . . . . . . . . . .
1.8 Templates que modican views . . . . . . . . . . . . . . . . .
1.9 drupal\set\

message

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.10 node\save
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.11 user\save . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.12 watchdog . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.13 t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.14 db\insert
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.15 db\update
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.16 db\delete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2 Desarrollo de Módulos

2.1 Arquitectura de los Módulos de Drupal . . . . . . . . . . . . .
2.2 Módulos del Núcleo . . . . . . . . . . . . . . . . . . . . . . . .
2.3 Hooks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4 Creación de Bloques . . . . . . . . . . . . . . . . . . . . . . .
2.5 Creando un chero .info . . . . . . . . . . . . . . . . . . . . .
2.6 Un chero .module . . . . . . . . . . . . . . . . . . . . . . . .

2
3
4
4
5
6
7
8
8

8
9
9
10
11
12
13
14

14
14
15
16
17
17
18

1

2.7 Nuestro objetivo: Dos Block Hook . . . . . . . . . . . . . . .
2.8 Empezando el .module . . . . . . . . . . . . . . . . . . . . . .
2.9 La

18
19
hook\block\

implementación

de

info

() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

20
hook\block\

2.10 La

implementación

de

view

() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.11 Instalación de Módulos . . . . . . . . . . . . . . . . . . . . . .
2.12 Form API . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.13 Formulario Básico
. . . . . . . . . . . . . . . . . . . . . . . .
2.14 Formulario Básico con Botón Submit . . . . . . . . . . . . . .
2.15 Un formulario básico con eldset
. . . . . . . . . . . . . . . .
2.16 Formulario Básico con Campos Obligatorios . . . . . . . . . .
2.17 Formulario Básico con Atributos de Elementos Adicionales . .
2.18 Formulario Básico con Manejador de la Validación . . . . . .
2.19 Formulario con un manejador de submit . . . . . . . . . . . .
2.20 Un Formulario de Múltiples Pasos . . . . . . . . . . . . . . . .
2.21 Un Formulario con Campos Dinámicos . . . . . . . . . . . . .
2.22 Formulario para Subir un Fichero a Drupal
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.23 Mail API
2.24 drupal\mail
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.25 Creando Tipos de Contenido
. . . . . . . . . . . . . . . . . .
2.26 Por qué crear tus propias entidades . . . . . . . . . . . . . . .
2.27 El Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.28 Bundles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.29 El Esquema de la API . . . . . . . . . . . . . . . . . . . . . .

3 Licencia

1 API de Drupal

20
21
22
22
24
25
26
27
28
30
31
36
40
42
49
51
51
52
52
52

52

Una API (del inglés Application Programming Interface) es un interfaz para
comunicar componentes de un sistema de software. Para cada componente
del sistema una API maneja la comunicación entre el componente y el núcleo.
Este método hace que los cambios en el componente se aislen de los corre-
spondientes cambios en el núcleo, de este modo, se reducen los esfuerzos en

2

depuración y pruebas a los componentes únicamente. En general, una API
establece un estándar para tratar con operaciones de bajo nivel e introducir
estabilidad y uniformidad en el código. El ejemplo más común de una API
es la API de la base de datos, que encapsula las operaciones de la base de
datos desde el núcleo, de tal modo que el núcleo funciona sin tener en cuenta
el gestor de base de datos que el sistema usa. Ahora se verán unos ejemplos
de cómo podemos usar la api de drupal.
1.1 db\query
Con db\query es posible hacer consultas select a la base de datos. Ahora se
verán las siguientes líneas de código:

<?php
// Drupal 7
// Notice the place holders are now done using the same syntax as PDOs (:uid)
// Placeholders also don't need to be quoted anymore.
$uid = 1;
$result = db_query('SELECT n.nid, n.title, n.created
FROM {node} n WHERE n.uid = :uid', array(':uid' => $uid));
// Result is returned as a iterable object that returns a stdClass object on each iteration
foreach ($result as $record) {
// Perform operations on $record->title, etc. here.
// in this example the available data would be mapped to object properties:
// $record->nid, $record->title, $record->created
print($record->title);
}

Primero se ja el valor del argumento ($uid=1). Seguidamente se ejecuta
la consulta (se hace un select a la tabla node cuyo argumento es el uid). Y
nalmente, se recorren los resultados de la consulta imprimiendo el título del
nodo. La llamada a la API de db\query es la siguiente:

db_query($query, array $args = array(), array $options = array())
Parametros:
$query Es la sentencia de consulta lista para ejecutarse.
$args Un array de valores para sustituir en la consulta.
$options Un array de opciones para controlar como la consulta opera.
Valor devuelto:
DatabaseStatementInterface Un objeto sentencia ya ejecutado.

3

Es posible consultar la api de db\query, para una descripción completa

de la función y sus argumentos.
1.2 node\load
En general, para obtener un nodo desde un nid es más cómodo utilizar
node\load que carga un objeto nodo desde la base de datos. Ahora se verá
un ejemplo de código:

$nid = 1;
$node = node_load($nid);
print($node->title);

Primero se ja el valor del argumento ($nid=1). Seguidamente se carga
el nodo cuyo nid es $nid en $node. Y, nalmente, se imprime el título del
nodo o lo que se quiera. La llamada a la API de node\load es la siguiente:
node_load($nid = NULL, $vid = NULL, $reset = FALSE)
Carga un objeto nodo desde la base de datos.
Parámetros
$nid El ID del nodo.
$vid El ID de la revisión del nodo.
$reset Si resetear la cache node_load_multiple.
Valor devuelto
Un objeto nodo completamente poblado.

Es posible consultar la api de node\load, para una descripción completa

de la función y sus argumentos.
1.3 user\load
De la misma manera, que no se suele usar db\query para cargar nodos, tam-
poco lo usamos para cargar usuarios. user\load carga un objeto usuario de
la base de datos. Ahora se verá un ejemplo de código:

$uid = 1;
$account = user_load($uid);
print($account->name);

Primero se ja el valor del argumento ($uid=1). Seguidamente se carga
el usuario cuyo uid es $uid en la tabla users. Y, nalmente, se imprime el
nombre del usuario o lo que se necesite.

La llamada a la API de node\load es la siguiente:

4

user_load($uid, $reset = FALSE)

Carga un objeto usuario Drupal tiene un objeto usuario ($user) global,
que representa el usuario logado actualmente. Para evitar confusión es
una buena idea asignar el resultado de esta función a un variable
local diferente, generalmente $account.

Si tu quieres actuar como el usuario que estás cargando, es esencial
llamar primero a:

<?php drupal_save_session(FALSE); ?>

Parametros $uid Entero especificando el ID del usuario a cargar.
$reset TRUE para resetear la cache interna y cargar desde la base de
datos; FALSE (por defecto) para cargar desde la caché interna, si está
asignada. Valor devuelto Un objeto usuario completamente cargado si
ha habido éxito en la carga, si el usuario no pudo ser cargado
devuelve FALSE.

Es posible consultar la api de user\load, para una descripción completa

de la función y sus argumentos.

1.4 Aplicando funciones de la API a nuestro proyecto Drupal

Ahora veamos como aplicar las funciones aprendidas a nuestro proyecto Dru-
pal. Podemos hacerlo desde varias partes:

ˆ Customeld php de views

ˆ Templates de nuestro tema instalado

ˆ Templates de módulos instalados

ˆ Templates que modican views

ˆ Módulos nuevos

ˆ Desde contenidos ó bloques con el ltro php activo

La parte de nuevos módulos lo abordaremos en el próximo capítulo, pero
el resto de hacks que podemos hacer a drupal sí es interesante verlo desde
aquí.

5

1.5 Views php

Para tener esta funcionalidad es necesario tener instalado el módulo views
php. Este módulo te permite insertar código php en un campo de views.
Veamos cómo con un ejemplo.

Dada la siguiente vista:

Pulsamos en + en el apartado Fields. Encontramos un desplegable de

categorías de elds y seleccionamos Global.

Y ahí elegimos Global PHP y pulsamos Agregar. En la siguiente
pantalla encontramos un montón de opciones y vamos hasta Value Code y
pulsamos en AVAILABLE VARIABLES para ver las variables que tenemos
disponibles.
Ahora es el momento de recordar user\load y ver que la variable disponible
$row->uid nos puede servir como valor de entrada. De este modo, se intro-
duce el siguiente código y se pulsa en actualizar:

$account = user_load($row->uid);
return $account->name;

6

Luego es necesario salvar la vista, teniendo un display de página ó de

bloque.

Este ejemplo podría (y debe) ser fácilmente implementado usando views.
Pero ilustra muy bien el poder de views php. Una necesidad real donde usar
views php podría ser lo siguiente:

global $user;
if ($user->uid == $row->uid)
{
print '[buttons]';
}

Este código imprime algo especíco (por ejemplo, botones) cuando el

usuario logado coincide con el usuario de la la de nuestra vista.

1.6 Templates de nuestro tema instalado

Otra situa
  • Links de descarga
http://lwp-l.com/pdf8421

Comentarios de: Manual de Programación en Drupal 7 (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad