SlideShare ist ein Scribd-Unternehmen logo
1 von 24
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt? (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
 

Ähnlich wie 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
 

Ähnlich wie 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++
 

Kürzlich hochgeladen

investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
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
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 

Kürzlich hochgeladen (12)

investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
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
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 

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