Arrays renderizables y Estándares de codificación en Drupal

24
Arrays renderizables y Estándares de codificación en Drupal

description

Introducción breve a los Arrays renderizables y estándares de codificación en Drupal

Transcript of Arrays renderizables y Estándares de codificación en Drupal

Page 1: Arrays renderizables y Estándares de codificación en Drupal

Arrays renderizables y Estándares de codificación en Drupal

Page 2: Arrays renderizables y Estándares de codificación en Drupal

¿Que es un Array renderizable?

Es una estructura de datos asociativa y estandarizada que es utilizada en el sistema de renderizado de temas.

Page 3: Arrays renderizables y Estándares de codificación en Drupal

¿Cuál es su finalidad?

Otorgar una salida como texto plano (por lo general HTML) por medio de sus datos de entrada.

Page 4: Arrays renderizables y Estándares de codificación en Drupal
Page 5: Arrays renderizables y Estándares de codificación en Drupal

¿Qué tan compleja puede ser la estructura?

Page 6: Arrays renderizables y Estándares de codificación en Drupal
Page 7: Arrays renderizables y Estándares de codificación en Drupal
Page 8: Arrays renderizables y Estándares de codificación en Drupal
Page 9: Arrays renderizables y Estándares de codificación en Drupal

¿Porqué lo hicieron de esta forma?

Antes de drupal 7 se podían alterar algunas cosas como por ejemplo, los formularios (con hook_form_alter()); pero muchas otras cosas que necesitaban ser alteradas por un modulo o tema ya se encontraban renderizados como HTML, antes de poder hacer cualquier cosa racional con ellos.

En drupal 7 y posteriores, un modulo o tema, puede hacer uso del hook_page_alter (existen otros hooks) que permite alterar precisamente en el ultimo momento, la disposición o contenido de la página.

Page 10: Arrays renderizables y Estándares de codificación en Drupal
Page 11: Arrays renderizables y Estándares de codificación en Drupal

¿De que otra forma nos puede ayudar?

Programadores

Concentrarnos más en la lógica de la aplicación.

Lograr separar de mejor forma el contenido o datos de la presentación.

Proveerles a los frontends solo lo que necesitan.

Frontends

Concentrarse más en la presentación.

No hay necesidad de hacer una manipulación exhaustiva de los datos para obtener mas datos.

Código HTML más limpio.

• Procesos más ágiles de desarrollo • Facilidad al momento del mantenimiento o corrección de errores.

Page 12: Arrays renderizables y Estándares de codificación en Drupal

¿Cómo esta estandarizado el array renderizable? El array renderizable esta conformado por dos tipos de pares llave/valor:

• Propiedades: se identifican por el símbolo # y sus valores influyen en como el array es renderizado.

• Hijos: son elementos cuyas llaves no empiezan con el símbolo # y sus valores a su vez, pueden ser arrays renderizables por si mismos y estos serán procesados durante el renderizado del array padre.

Page 13: Arrays renderizables y Estándares de codificación en Drupal
Page 14: Arrays renderizables y Estándares de codificación en Drupal

Algunas propiedades comunes

#type – Si el array es un elemento, este cargara las propiedades por defecto del elemento.

#markup – Indica que su valor es un markup (HTML).

#prefix/#suffix – Texto o etiqueta HTML que se va a colocar como prefijo o sufijo.

#pre_render – Su valor es un array de funciones que serán llamadas para alterar el presente array antes de ser renderizado.

#post_render – Su valor es un array de funciones que serán llamadas después de ser rederizado el array (estas reciben como parámetros el HTML renderizado y el mismo array a ser rederizado).

#theme – El hook (función) responsable de renderizar el array, incluyendo a los hijos.

#theme_wrappers – Un array de hooks de temas, que se encargaran de envolver el HTML renderizado dentro de otro código HTML.

#cache – Marca el array para permanecer en cache y su tiempo de expiración.

Page 15: Arrays renderizables y Estándares de codificación en Drupal

¿Podemos crear nuestros propios themes?

hook_theme($existing, $type, $theme, $path)

Devuelve un array asociativo con información del theme hook, las llaves externas son los nombres de los hooks y sus valores son arrays conteniendo información sobre el hook.

• variables • render element • file

• path • template • function

• base hook • pattern • preprocess fuctions

• override preprocess function • type • theme path

Page 16: Arrays renderizables y Estándares de codificación en Drupal
Page 17: Arrays renderizables y Estándares de codificación en Drupal

¡No reinventes la rueda!

• theme_image • theme_link

• theme_html_tag • theme_item_list

• theme_links • theme_menu_link

• theme_table • theme_menu_tree

https://api.drupal.org/api/drupal/functions

Page 18: Arrays renderizables y Estándares de codificación en Drupal

Estándares de codificación

Page 19: Arrays renderizables y Estándares de codificación en Drupal

Sangrías y espacios en blanco:

Usar sangría con 2 espacios en blanco sin usar tabuladores.

Los archivos deben finalizar con el símbolo de nueva línea “\n” (Unix) y no “\r\n” (Windows)

Operadores:

Todos los operadores binarios deben de contener un espacio en blanco antes y después de sus operadores.

Ejemplo: $foo = $bar Si $fo=$bar No

Casting

Colocar un espacio en blanco entre el tipo y la variable a aplicar el casting.

Ejemplo: (int) $var

Page 20: Arrays renderizables y Estándares de codificación en Drupal

Estructuras de control:

Colocar un espacio en blanco entre el nombre de la estructura de control y el paréntesis que abre, esto con la finalidad de distinguirlas de las llamadas a funciones.

Usar siempre llave inclusive en los casos que sea opcional.

En el caso de la estructura control “IF” usar siempre “ELSEIF” en vez de “ELSE IF”

Estructuras de control alternativas para templates:

Page 21: Arrays renderizables y Estándares de codificación en Drupal

Llamadas a funciones:

Estas deben llamarse sin espacios entre el nombre de la función, el paréntesis que abre y el primer parámetro. $var = foo($bar, $baz, $quux);

Declaraciones de funciones:

Argumentos con valores por default deben de ir al final de la lista.

Arrays

Los elementos de un array deben de ir separados por un espacio en blanco después de la coma y un espacio antes y después del operador de asociación “=>” $some_array = array('hello', 'world', 'foo' => 'bar');

Page 22: Arrays renderizables y Estándares de codificación en Drupal

Si la declaración de un array supera los 80 caracteres, cada elemento del array debe de estar en su propia línea e identado en un nivel. $form['title'] = array( '#type' => 'textfield', '#title' => t('Title'), '#size' => 60, '#maxlength' => 128, '#description' => t('The title of your node.'), );

https://drupal.org/coding-standards