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

Imágen de pdf Manual de Programacion en Drupal 7

Manual de Programacion en Drupal 7gráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 13 de Febrero del 2018)
953 visualizaciones desde el 13 de Febrero del 2018
957,8 KB
46 paginas
Creado hace 8a (26/02/2016)
Manual de Programación en Drupal 7

Volver a davidam.com

Manual desarrollado por David Arroyo Menéndez.
1 API de Drupal

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 correspondientes cambios en el núcleo, de este modo, se reducen los esfuerzos en 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 dbquery

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 fija 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 finalmente, 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.

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 fija el valor del argumento ($nid=1). Seguidamente se carga el nodo cuyo nid es $nid en $node. Y, finalmente, 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, tampoco 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 fija el valor del argumento ($uid=1). Seguidamente se carga el usuario cuyo uid es $uid en la tabla users. Y, finalmente, se imprime el nombre del usuario o lo que se necesite.

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

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 Drupal. Podemos hacerlo desde varias partes:

Customfield php de views
Templates de nuestro tema instalado
Templates de módulos instalados
Templates que modifican views
Módulos nuevos
Desde contenidos ó bloques con el filtro 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í.

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 fields 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 introduce el siguiente código y se pulsa en actualizar:

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

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ífico (por ejemplo, botones) cuando el usuario logado coincide con el usuario de la fila de nuestra vista.

1.6 Templates de nuestro tema instalado

Otra situación en la que se puede querer aplicar nuestros conocimientos de la API. Es modificando algún template del tema que está activo ó que se ha desarrollado para el proyecto actual.

Es posible que por alguna razón un cliente pida que después del contenido de un nodo aparezca el nombre del administrador del sitio (cuyo uid es 1). En el caso de que el tema activo fuera barlik abriríamos el
siguiente fichero: "themes/bartik/templates/node.tpl.php" y debajo de print render($content); se introducirían las líneas de código relativas a la función user\load que ya hemos visto. Quedando todo del
siguiente modo:

...
<div class="content clearfix"<?php print $content_attributes; ?>>
<?php
// We hide the comments and links now so that we can render them later.
hide($content['comments']);
hide($content['links']);
print render($content);
?>
<?php
$uid = 1;
$account = user_load($uid);
print($account->name);
?>
</div>

<?php
...

1.7 Templates de módulos instalados

Modificar templates de módulos instalados es similar a lo visto en el anterior apartado. Tan solo es necesario localizar el template del módulo que se pretende modificar, copiarlo en la carpeta del tema y hacer
allí las modificaciones pertinentes.

1.8 Templates que modifican views

Si desde una vista se pulsa a Style settings ­> Theme se ven los diferentes nombres con los que es posible reescribir las plantillas relacionadas con views. Una vez elegida la plantilla a reescribir, se introduce el
fichero en la carpeta del tema.

Ahora que ya se sabe donde aplicar la api, se puede seguir aprendiendo nuevas funciones.

1.9 drupal\set\message

Imprime un mensaje, normalmente con la acción que se acaba de realizar. Un ejemplo:

<?php
drupal_set_message('Aprendiendo a usar drupal_set_message');
?>

Este código hace aparecer la frase "Aprendiendo a usar drupal\set\message" formateado como mensaje drupal, normalmente dentro de una caja verde.

La llamada a la API de drupal\set\message es la siguiente:

drupal_se
  • Links de descarga
http://lwp-l.com/pdf8749

Comentarios de: Manual de Programacion 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