SlideShare una empresa de Scribd logo
1 de 24
Descargar para leer sin conexión
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.
¿Cuál es su finalidad?

Otorgar una salida como texto plano (por lo
general HTML) por medio de sus datos de
entrada.
¿Qué tan compleja puede ser la
estructura?
¿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.
¿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.
¿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.
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.
¿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
¡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
Estándares de codificación


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 “rn” (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


Estructuras de control:




Usar siempre llave inclusive en los casos que sea opcional.





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.
En el caso de la estructura control “IF” usar siempre “ELSEIF” en vez
de “ELSE IF”

Estructuras de control alternativas para
templates:


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');


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
Referencias:
•

Render arrays:
•
•

•

Theming:
•
•

•

https://drupal.org/node/930760
https://api.drupal.org/api/drupal/includes%21
common.inc/function/drupal_render/7
https://drupal.org/node/722174
https://api.drupal.org/api/drupal/modules!sys
tem!system.api.php/function/hook_theme/7

Coding standars
•

https://drupal.org/coding-standards
¡Gracias!
Walter Herrera
walt.herrera@gmail.com
walter.h@3chamz.com
Cel.: 5017-0261

Más contenido relacionado

La actualidad más candente (20)

Curso de pl sql básico
Curso de pl sql básicoCurso de pl sql básico
Curso de pl sql básico
 
Presentacion Sql
Presentacion SqlPresentacion Sql
Presentacion Sql
 
Diapositivas de acceso a datos ado.net
Diapositivas de acceso a datos ado.netDiapositivas de acceso a datos ado.net
Diapositivas de acceso a datos ado.net
 
Yungan geovanny 6_s_ti_2
Yungan geovanny 6_s_ti_2Yungan geovanny 6_s_ti_2
Yungan geovanny 6_s_ti_2
 
Sql DDL Lenguaje de definición de datos
Sql DDL Lenguaje de definición de datosSql DDL Lenguaje de definición de datos
Sql DDL Lenguaje de definición de datos
 
Arquitectura N-Capas y ADo.NET
Arquitectura N-Capas y ADo.NETArquitectura N-Capas y ADo.NET
Arquitectura N-Capas y ADo.NET
 
lenguaje transact
lenguaje transactlenguaje transact
lenguaje transact
 
Orm presentación final
Orm presentación finalOrm presentación final
Orm presentación final
 
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosEstructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
 
Examen Sandra U Israel Oracle
Examen Sandra U Israel OracleExamen Sandra U Israel Oracle
Examen Sandra U Israel Oracle
 
Sql
SqlSql
Sql
 
Guia programacionwebbasicophp
Guia programacionwebbasicophpGuia programacionwebbasicophp
Guia programacionwebbasicophp
 
screencast y bases de datos
screencast y bases de datos screencast y bases de datos
screencast y bases de datos
 
Qué es xml
Qué es xmlQué es xml
Qué es xml
 
Hibernate framework
Hibernate frameworkHibernate framework
Hibernate framework
 
Intro sql y plsql
Intro sql y plsqlIntro sql y plsql
Intro sql y plsql
 
CakePHP
CakePHPCakePHP
CakePHP
 
MVC en CakePHP 2.0
MVC en CakePHP 2.0MVC en CakePHP 2.0
MVC en CakePHP 2.0
 
Guia herramientas de bd
Guia herramientas de bdGuia herramientas de bd
Guia herramientas de bd
 
Curso de pl sql básico
Curso de pl sql básicoCurso de pl sql básico
Curso de pl sql básico
 

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

Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Phputs
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Phputs
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Phputs
 
Como desarrollar-un-sistema-en-php-paso-a-paso
Como desarrollar-un-sistema-en-php-paso-a-pasoComo desarrollar-un-sistema-en-php-paso-a-paso
Como desarrollar-un-sistema-en-php-paso-a-pasocampucss
 
Zope Page Templates
Zope Page TemplatesZope Page Templates
Zope Page TemplatesCodeSyntax
 
Tutorial de cakePHP itst
Tutorial de cakePHP itstTutorial de cakePHP itst
Tutorial de cakePHP itstomicx
 
3 d cruz_borges_aime_b1examen
3 d cruz_borges_aime_b1examen3 d cruz_borges_aime_b1examen
3 d cruz_borges_aime_b1examenmichelleortegon2
 
Uso de las clases iostream
Uso de las clases iostreamUso de las clases iostream
Uso de las clases iostreamTensor
 
Presentacion de la Estructura basica para_c++
Presentacion de la Estructura basica para_c++Presentacion de la Estructura basica para_c++
Presentacion de la Estructura basica para_c++ValeriaBerrones
 
Estructura basica para_c_
Estructura basica para_c_Estructura basica para_c_
Estructura basica para_c_Jesus22barrera
 
Tutorial en Apache Spark - Clasificando tweets en realtime
Tutorial en Apache Spark - Clasificando tweets en realtimeTutorial en Apache Spark - Clasificando tweets en realtime
Tutorial en Apache Spark - Clasificando tweets en realtimeSocialmetrix
 
Trabajo tutorial de visual C++
Trabajo tutorial de visual C++Trabajo tutorial de visual C++
Trabajo tutorial de visual C++Bryangio2002
 

Similar a Arrays renderizables y Estándares de codificación en Drupal (20)

EXPO PERL UTT
EXPO PERL UTTEXPO PERL UTT
EXPO PERL UTT
 
Tutorial de php
Tutorial de phpTutorial de php
Tutorial de php
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Php
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Php
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Php
 
Como desarrollar-un-sistema-en-php-paso-a-paso
Como desarrollar-un-sistema-en-php-paso-a-pasoComo desarrollar-un-sistema-en-php-paso-a-paso
Como desarrollar-un-sistema-en-php-paso-a-paso
 
Zope Page Templates
Zope Page TemplatesZope Page Templates
Zope Page Templates
 
Curso Bash 3
Curso Bash 3Curso Bash 3
Curso Bash 3
 
Tutorial de cakePHP itst
Tutorial de cakePHP itstTutorial de cakePHP itst
Tutorial de cakePHP itst
 
3 d cruz_borges_aime_b1examen
3 d cruz_borges_aime_b1examen3 d cruz_borges_aime_b1examen
3 d cruz_borges_aime_b1examen
 
Uso de las clases iostream
Uso de las clases iostreamUso de las clases iostream
Uso de las clases iostream
 
Presentacion de la Estructura basica para_c++
Presentacion de la Estructura basica para_c++Presentacion de la Estructura basica para_c++
Presentacion de la Estructura basica para_c++
 
Estructura basica para_c_
Estructura basica para_c_Estructura basica para_c_
Estructura basica para_c_
 
Manual+php+básico
Manual+php+básicoManual+php+básico
Manual+php+básico
 
Biblioteca
BibliotecaBiblioteca
Biblioteca
 
Curso php y_my_sql
Curso php y_my_sqlCurso php y_my_sql
Curso php y_my_sql
 
Tutorial en Apache Spark - Clasificando tweets en realtime
Tutorial en Apache Spark - Clasificando tweets en realtimeTutorial en Apache Spark - Clasificando tweets en realtime
Tutorial en Apache Spark - Clasificando tweets en realtime
 
Intrucciones basicas para C++
Intrucciones basicas para C++Intrucciones basicas para C++
Intrucciones basicas para C++
 
INSTRUCCIONES BASICAS C++
INSTRUCCIONES BASICAS C++INSTRUCCIONES BASICAS C++
INSTRUCCIONES BASICAS C++
 
Trabajo tutorial de visual C++
Trabajo tutorial de visual C++Trabajo tutorial de visual C++
Trabajo tutorial de visual C++
 

Último

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 

Último (13)

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 

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

  • 1. Arrays renderizables y Estándares de codificación en Drupal
  • 2. ¿Que es un Array renderizable? Es una estructura de datos asociativa y estandarizada que es utilizada en el sistema de renderizado de temas.
  • 3. ¿Cuál es su finalidad? Otorgar una salida como texto plano (por lo general HTML) por medio de sus datos de entrada.
  • 4.
  • 5. ¿Qué tan compleja puede ser la estructura?
  • 6.
  • 7.
  • 8.
  • 9. ¿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.
  • 10.
  • 11. ¿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.
  • 12. ¿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.
  • 13.
  • 14. 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.
  • 15. ¿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
  • 16.
  • 17. ¡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
  • 19.  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 “rn” (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
  • 20.  Estructuras de control:   Usar siempre llave inclusive en los casos que sea opcional.   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. En el caso de la estructura control “IF” usar siempre “ELSEIF” en vez de “ELSE IF” Estructuras de control alternativas para templates:
  • 21.  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');
  • 22.  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