You are on page 1of 18

PRIMEROS PASOS HERRAMIENTAS TILES PARA UN DESARROLLADOR

EDITOR DE CDIGO
Es necesario tener un editor de cdigo. Ejemplos de editores de cdigo: block de notas, wordpad, gedit, aptana, netbeans, eclipse, etc.

EL MDULO DEVEL
En realidad se trata de un conjunto de mdulos para realizar varias tareas: Devel o Bloques o Switch user, permite cambiar de usuario sin desloguearse y volver a loguearse. De tal manera que se pueda probar la funcionalidad que dependa de roles u otros aspectos de manera ms fcil. Es necesario que el usuario tenga permiso switch users para poder ver este bloque. o El bloque Execute PHP. Es un bloque que tiene un rea de texto, donde podemos poner cdigo PHP y lo mostrar en la parte de mensajes de nuestro tema. Especialmente til para pruebas rpidas. o Pginas o devel/cache/clear, permite borrar la cache de drupal. o devel/info, esta ruta nos de la informacin completa de phpinfo(), sin tener que crear un archivo especial para eso. o devel/reinstall, permite desinstalar y volver a instalar los mdulos que seleccionemos, Tener cuidado porque la rutina de desinstalacin puede borrar las tablas de los mdulos. Es til cuando se requiere ejecutar este proceso, tal vez para probar un mdulo que estamos desarrollando, y necesitamos reinstalarlo de forma "limpia". o devel/menu/reset, permite reconstruir los menus. De tal manera que se apliquen los cambios que hemos realizado en los mismos. o devel/variable, nos muestra una interfaz con una lista de las variables del sistema y la opcin de poder editarlas y cambiar
1

su valor. Puede ser muy til cuando estamos desarrollando un mdulo y queremos probar el efecto de cambiar el valor de una variable de configuracin o alguna otra con la cual estamos interactuando. o devel/php, nos da una interfaz para ejecutar cdigo php. Muy similar al bloque Execute PHP. El resultado se muestra en el rea de mensajes. o devel/session, nos muestra el contenido de la variable $_SESSION o etc. Generate Content o Este mdulo nos permite generar rapidamente contenido de prueba. o Generacin de contenido. Podemos seleccionar el tipo de nodo que deseamos crear . Llena informacin del ttulo, cuerpo, y los campos creados. Adems hace la prueba con mltiples usuarios. o Generacin de usuarios o Generacin de vocabularios y trminos

ESTNDARES SEGURIDAD Y BUENAS PRCTICAS


A continuacin se lista una serie de estndares de cdigo y buenas prcticas para escribir cdigo (tomado de los estndares de cdigo de Drupal.org): IDENTACIN Y ESPACIOS EN BLANCO Hay que usar una identacin de dos espacios en blanco, sin tabs. Las lneas no deben contener espacios en blanco al final. Los archivos deben ser formateados con para terminar terminar las lneas con \n (finalizacin de lnea de Unix), y no con \r\n (finalizacin de lineas de Windows). Todos los archivos de texto deben terminar con una simple nueva linea (\n)

OPERADORES
2

Todos los operadores binarios (operadores que estn entre dos valores), como +, -, =, !=, ==, >, etc. deben tener un espacio antes y despus del operador, para una mayor facilidad de lectura. Por ejemplo, una asignacin debe ser formateada como $foo = $bar; en vez de $foo=$bar;. Los operadores unarios (operadores que operan con un solo valor), como ++, no deben tener espacio entre el operador y la variable o nmero sobre el cual operan. CASTING Poner un espacio entre el (tipo) y la variable sobre la que se va a realizar el cast: (int) $mynumber. ESTRUCTURAS DE CONTROL Incluye if, for, while, switch, etc. Ac un ejemplo de como debe hacerse: if (condition1 || condition2) { action1; } elseif (condition3 && condition4) { action2; } else { defaultaction; } Como observamos debe haber un espacio entre las palabras y los parntesis, esto es para distinguirlo de las llamadas a funciones. Se recomienda usar siempre las llaves, incluso en las situaciones donde es opcional. Esto para aumentar la legibilidad del cdigo y disminuir la posibilidad de errores lgicos si se agregan nuevas lneas. Para el switch: switch (condition) { case 1: action1;
3

break; case 2: action2; break; default: defaultaction; } Para el la estructura do-while: do { actions; } while ($condition); LLAMADA A FUNCIONES Las llamadas a funciones deben hacerse sin espacios entre el nombre y la apertura de los parntesis, y el primer parmetro; debe haber espacios entre las comas y cada parmetro, y no espacios entre los parmetros, y no debe haber espacio entre el ltimo parmetro el parntesis que cierra y los punto y coma. Ac un ejemplo: $var = foo($bar, $baz, $quux); Como se muestra en las lineas de antes, debe haber un espacio en cada lado del signo igual usado para asignacin. En caso de que tengamos varias asignaciones en un bloque se debe poner ms espacios al lado izquierdo del signo de asignacin para que los signos igual queden alineadas. $short = foo($bar); $long_variable = foo($baz); DECLARACIN DE FUNCIONES
4

function funstuff_system($field) { $system["description"] = t("This module inserts funny text into posts randomly."); return $system[$field]; } Los argumentos con valores por defecto van al final de la lista de argumentos. LLAMADAS A CONSTRUCCIN DE CLASES Cuando se llama a un constructor de clases sin argumentos, siempre incluir los parntesis: $foo = new MyClassName(); This is to maintain consistency with constructors that have arguments: $foo = new MyClassName($arg1, $arg2); Note that if the class name is a variable, the variable will be evaluated first to get the class name, and then the constructor will be called. Use the same syntax: $bar = 'MyClassName'; $foo = new $bar(); $foo = new $bar($arg1, $arg2); ARRAYS Los arrays deben estar formateasod con un espacio separando cada elemento (despus de la coma), y y espacios alrededor del operador de asociacin =>, si es aplicable: $some_array = array('hello', 'world', 'foo' => 'bar'); Note que si se est declarando un array y tienen una longitud mayor de 80
5

caracteres, cada elemento debe ser colocado en su propia lnea, y debe estar identado de acuerdo a su nivel: $form['title'] = array( '#type' => 'textfield', '#title' => t('Title'), '#size' => 60, '#maxlength' => 128, '#description' => t('The title of your node.'), ); Note la coma al final de los elementos del array. Esto es para ayudar a prevenir errores de parsing si se agregan nuevos elementos ms adelante. COMILLAS Drupal no tiene un estandar fuerte sobre el uso de comillas simples vs. comillas dobles. Donde sea posible, por consistencia dentro de cada mdulo, y con respecto al estilo personal de los desarrolladores. Las comillas simples son ms rpidas porque no tienen que ejecutar una interpretacin. Su uso es recomendable, excepto en dos casos: 1. Uso de variables inline, ejemplo "<h2>$header</h2>". 2. String traducidos donde se requiere usar comillas simples "He's a good person.".

CONCATENACIN DE STRINGS Espacio entre el punto de concatenacin y las cadenas a concatenar, para aumentar la legibilidad. <?php $string $string $string $string = = = = 'Foo' . $bar; $bar . 'foo'; bar() . 'foo'; 'foo' . 'bar';
6

?> Cuando se concatenan variables simples se puede usar comillas dobles y poner la variable dentro. <?php $string = "Foo $bar"; ?> Cuando se usa operador de asignacin y concatenacin ('.='), usar un espacio a ambos lados del operador: <?php $string .= 'Foo'; $string .= $bar; $string .= baz(); ?> COMENTARIOS Usar los comentarios tipo Doxygen. PUNTO Y COMA Como el punto y coma es opcional, cuando se se est cerrando el bloque de PHP, esto podra llevar a omitirlas al final. El estndar de drupal es que siempre debe ponerse el punto y coma al final: <?php print $tax; ?> -- YES <?php print $tax ?> -- NO EXAMPLE URL Usar "example.com" para todas las URLs de prueba. FUNCIONES Y VARIABLES Funciones y variables deben ser nombradas en minscula, y las palabras deben ser separadas por guiones bajos. Funciones deben adems tener el nombre del
7

gropo/modulo como prefijo, para prevenir colisin de nombres entre mdulos. VARIABLES PERSISTENTES Variables persistentes (aquellas que son definidas por Drupal usando las funciones variable_get()/variable_set()) deben ser nombradas todo en minusculas, y las palabras deben ser sepradas con un guin bajo. Adems deben usar un prefijo de nombre grupo/modulo para evitar colisiones entre mdulos. CONSTANTE Las constantes deben ser siempre con letras maysculas. Esto incluye el uso de las constantes predefinidas de PHP como TRUE, FALSE y NULL. Las constantes definidas por los mdulos tambin deben estar precedidas por un el nombre del mdulo en mayscula. VARIABLES GLOBALES Si tu necesitas definir variables globales, los nombres deben comenzar on un guion bajo seguido del nombre del modulo/thema y seguido de otro guion bajo. CLASES Las clases deben usar la convencin "CamelCase". Ejemplo: <?php abstract class DatabaseConnection extends PDO { ?> Los mtodos de clase y las propiedades deben ser "lowerCamelCase": <?php public $lastStatement; ?> Evitar el uso de metodos de clase o propiedades privadas. User protected. De esta manera otra clase puede extender tu clase y modificarla. Los mtodos Protected y propiedades no deben usar guion bajo como prefijo. NOMBRES DE ARCHIVOS

Todos los archivos de documentacin deben tener la extensin ".txt" para que puedan ser vistos en archivos Windows de manera ms sencilla. Adems, los nombres de archivos deben ser en maysculas (README.txt en vez de readme.txt), pero la extensin misma en en minscula (ejemplo txt en vez de TXT). Ejemplos: README.txt, INSTALL.txt, TODO.txt, CHANGELOG.txt etc.

EL SISTEMA MODULAR DE DRUPAL MODULOS Un mdulo es un conjunto de archivos que agregan funcionalidad (extensibilidad) a Drupal. El ncleo de Drupal en s dispone por s mismo de varios mdulos que son usados siempre y sirven de base al buen funcionamiento y las tareas usuales de Drupal. Es como una pieza "enchufable" al "ncleo" (core) de Drupal. Es decir, la instalacin de Drupal, puede funcionar sin la gran mayora de mdulos (salvo que sea mdulo del core) e instalarse posteriormente un mdulo para hacer determinada tarea. Tambin podra desinstalarse los mdulos que no se necesiten y de esta manera ahorrar consumo de memoria. Adems, un mdulo podra agregarse a varios sitios web que requieran la misma funcionalidad. Son como piezas con las cuales se puede construir una solucin adaptada a una necesidad concreta. Podramos clasificar los mdulos como: Mdulos Mdulos Mdulos Mdulos del Core obligatorios del Core opcionales Contribuidos Personalizados

Si es que necesitas hacer algo que no viene en el ncleo de Drupal y no encuentras dentro de los mdulos existentes uno que te permita hacerlo, probablemente sea tiempo de crear un mdulo personalizado. Ahora si deseas que otras personas puedan usar tu mdulo y lo subes a drupal.org se
9

transformara en un mdulo contribuido. (Figura mostrando como un mdulo es un componente enganchable) COMO CREAR UN MDULO En esta seccin explicaremos los pasos necesarios para la creacin de un mdulo. Se har los ejemplos de nombre asumiendo que el mdulo se llama "inventario", por lo cual deber reemplazar este nombre por el nombre del mdulo que est creando. 1. Crear una carpeta que contenga todos los archivos del mdulo. Usualmente esta carpeta tendr el nombre del mdulo y ser colocada en /sites/all/modules de la instalacin de Drupal. Es decir, crearamos la carpeta /sites/all/modules/inventario (donde inventario es el nombre de nuestro mdulo). 2. En esta carpeta creamos el archivo inventario.info que contendr la informacin de nuestro mdulo para que sea identificado por Drupal. 3. Tambin creamos dentro de la carpeta el archivo inventario.module que contendr el cdigo php de nuestra aplicacin.

ARCHIVO inventario.info Este archivo contiene informacin sobre el mdulo para Drupal. Sin este archivo el mdulo no aparecer en la lista de mdulos. Este archivo tiene un formato de lista de pares llave-valor. Es decir, una serie de llaves (claves) que son seguidas de un signo igual y el valor que tiene dicha llave. Los pares obligatorios son: name, descripcion y core. El resto es opcional Una observacin especial para para la version. En caso el mdulo se suba a drupal.org, el sitio de drupal crea automticamente una versin y la coloca en el archivo cada vez que se suba y se cree un tarball. En caso el mdulo no vaya a ser compartido mediante el sitio de drupal, se puede colocar un nmero de versin de acuerdo al criterio que creamos conveniente. Entonces tendramos un archivo con el siguiente formato aproximado:
10

; $Id$ name = Nombre del Mdulo description = Una descripcin de lo que hace el mdulo version = 0.1 core = 6.x Donde: name, es el nombre del mdulo. El nombre debe comenzar en mayscula. Sin es ms de una palabra solo la primera es en mayscula y las dems en minscula. description, una descripcin corta (hasta 255 caracteres) de que es lo que hace el mdulo version, indica cual es el nmero de versin de nuestro mdulo core, es la versin de drupal en la cual puede funcionar el mdulo

En el archivo inventario.info agrega el siguiente texto ; $Id$ name = Inventario description = Permite llevar un Inventario de los productos de un comercio electrnico version = 0.1 core = 6.x NOTA IMPORTANTE .- Para que se muestre el mdulo tambien es necesario el archivo .module Una vez que pongamos la carpeta de nuestro mdulo en la ubicacin de la instalacin de Drupal (el lugar ms apropiado para poner nuestra carpeta es /sites/all/modules/) podremos ver el efecto del archivo inventario.info si vamos al men Modules (en negro en la figura):
11

Que nos mostrar la lista de los mdulos instalados y por instalar. Ac aparecer nuestro mdulo con la siguiente de la siguiente manera:

12

Donde podemos ver que aparece la informacin que hemos colocado en inventario.info. Las otras opciones no obligatorias para colocar en este archivo son las siguientes: dependencies, es un array con la lista de mdulos que son requeridos por nuestro mdulo para funcionar. Si estos mdulos sobre los cuales nuestro mdulo es dependiente no estn presentes nuestro mdulo no puede ser activado con un check para ser instalado. Si estn presentes pero no instalados el administrador recibe una lista de los mdulos que necesita activar para poder instalar este mdulo (TODO: captura de pantalla). Para escribir las dependencias colocaremos el nombre del mdulo, sin la palabra module, en minscula. Los espacios en blanco no estn permitidos. Como ejemplo tenemos: dependencies[] = taxonomy dependencies[] = comment package, Es una forma de decirle a Drupal que nuestro mdulo es parte de un grupo (paquete) de mdulos, ya sea que estes vienen juntos, o porque extiende un paquete ya existente. Al momento de mostrarse aparecer en un recuadro dentro de ese paquete. Si no colocamos esta opcin, nuestro mdulo aparecer en el grupo Others. php, Desde la versin 6 de drupal el mdulo puede indicar cual es la versin mnima de php que requiere.

13

ARCHIVO inventario.module Este archivo almacenar el cdigo php de nuestro mdulo y las funciones que vayamos a utilizar. Es el corazn de nuestro mdulo y el que se relacionar con Drupal. Muchas de estas funciones son implementaciones de hooks de drupal. QU ES UN hook? Drupal permite la comunicacin de un mdulo con ncleo a travs de ciertas funciones pre-definidas, llamadas hooks. Un hook, lleva el nombre del mdulo y la funcin unida por un guin bajo. Por ejemplo (siempre suponiendo que nuestro mdulo se llame inventario) en nuestro archivo inventario.module podemos crear las siguientes funciones: inventario_perm() inventario_block($op = 'list', $delta = 0) inventario_admin() etc.

En la documentacin, suele aparecer la palabra de hook en el lugar del nombre del mdulo (por ello se les conoce como hooks). Por ejemplo, los hooks anteriores aparecern como: hook_perm() hook_block($op = 'list', $delta = 0) hook_admin()

Y ya sabemos que para utilizar estas funciones debemos reemplazar la palabra hook por el nombre de nuestro mdulo. Adems, es importante resaltar que cada hook puede tener algunos parmetros que recibe, en algunos casos opcionales. CREANDO PERMISOS PARA EL MDULO Con el hook_perm, un mdulo puede indicar los nombres de los permisos que existen para ser asignados a los diferentes roles. Este hook no nos dice que
14

acceso da cada permiso, sino que solo nos da una lista de los permisos disponibles. Ms adelante veremos el hook_access, donde se definen los accesos. El nombre del permiso no puede ser igual a ningn otro permiso de alguno de los otros mdulos instalados, porque sino en la lista de permisos aparecera varios iguales (o el sistema podra comportarse de modo inesperado utilizando un permiso que no le corresponde). Para evitar estas colisiones se recomienda poner el nombre el mdulo dentro del permiso. Ms exactamente se recomienda colocar un verbo que describa la accin a realizar seguido del nombre del mdulo. Ejemplos de nombres de permiso: administrar inventario registrar inventario borrar inventario etc.

Usted podra asignar los permisos a los usuarios en Administer->User management->Permissions Ejemplos <?php /** * Permisos vlidos para este mdulo * @return array Un array con todos los permisos vlidos para este mdulo */ function inventario_perm() { return array('registrar inventario'); } ?> Y si tienes varios permisos, solo se agrega ms elementos al array: <?php
15

function inventario_perm() { return array('administrar inventario', 'registrar inventario', 'borrar inventario'); } ?>

REVISANDO SI UN USUARIO TIENE UN PERMISO Si queremos revisar si un usuario tiene un determinado permiso, podemos usar la funcin user_access($string, $account = NULL, $reset = FALSE); En donde: $string es el nombre del permiso sobre el cual queremos averiguar si el usuario tiene privilegios $account es la cuenta de usuario para la que queremos saber si se tiene los privilegios. Este parmetro es opcional y si no es proporcionado se toma el usuario actual (actualmente logueado). $reset, este parmetro indica si se va a resetear o no el cache de los permisos de usuario. De colocar TRUE, se recalcularn los permisos del usuario. Es necesario cuando se necesita los valores modificados cada vez, como cuando se agregan roles de forma dinmica. Esta funcin devuelve un boolean, que es TRUE si el usuario tiene el privilegio correspondiente. Hay que recordar que el usuario con id = 1 (el primer usuario que se creo) es un super-usuario con todos los privilegios, por lo cual usar est funcin con el mismo siempre nos devolver TRUE, BLOQUES, REGIONES Y CREACION DE BLOQUES A TRAVS DE UN MDULO
16

Los bloques permiten la presentacin de pequeos elementos de la pgina, que pueden moverse entre regiones. Las regiones son las reas dentro de un tema en donde pueden colocarse uno o varios bloques. Drupal nos permite crear bloques en un mdulo, utilizando para ello el hook_block. Gracias a este hook, definimos cuantos bloques tendremos, las opciones de configuracin del mismo y como va a ser su presentacin. La definicin de este hook es la siguiente: hook_block($op = 'list', $delta = 0, $edit = array()) Como vemos recibe 3 parmetros. El primero de ellos $op es para ver el tipo de operacin que vamos a ejecutar. Las opciones son: list configure save view Mediante la primera opcin definimos la lista de bloques que va a tener nuestro mdulo. Mediante el segundo de ellos definimos las configuraciones que vamos a poder hacer a cada uno de los mdulos. Mediante el tercero podemos grabar las configuraciones definidas en configure. Mediante el cuarto definimos la parte visual de cada uno de los bloques que tengamos definidos.

17

El segundo parmetro es de tipo integer, y nos proporciona el ndice de la lista de bloques (definidos cuando en list de $op) sobre el cual se est trabajando en ese momento. Y el tercero de ellos, funciona cuando $op es igual a save, y nos proporciona la lista de datos enviados por el form de configuracin (que hemos colocado en la opcin configure de $op).

18

You might also like