Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » Drupal »

Duda sobre bloques en drupal

Estas en el tema de Duda sobre bloques en drupal en el foro de Drupal en Foros del Web. Hola a todos!! Os cuento, mi duda consiste en saber dónde se almacena el código de un bloque creado en Drupal. Necesito saberlo porque tengo ...
  #1 (permalink)  
Antiguo 05/07/2011, 02:46
 
Fecha de Ingreso: octubre-2008
Ubicación: Plasencia
Mensajes: 109
Antigüedad: 15 años, 6 meses
Puntos: 6
Duda sobre bloques en drupal

Hola a todos!!
Os cuento, mi duda consiste en saber dónde se almacena el código de un bloque creado en Drupal. Necesito saberlo porque tengo que modificar una aplicación ya hecha y para crear un nuevo módulo me gustaría poder fijarme en el código de otros ya creados, dado que mis conocimientos sobre Drupal son muy limitados.
De antemano gracias por su ayuda,
Un saludo.
  #2 (permalink)  
Antiguo 06/07/2011, 13:41
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 14 años, 6 meses
Puntos: 265
Respuesta: Duda sobre bloques en drupal

Crear un bloque personalizado en Drupal no es dificil, tenes dos alternativas:

La rapida: Creas un bloque vacio desde la interfaz de Drupal, y luego haces un override con un fichero tpl. Si por ejemplo vos creas un bloque y este tiene id=3 ... entonces vos creas un fichero llamado block-block-3.tpl.php dentro de la carpeta de tu theme, y listo, ese fichero respondera al codigo que vos le pongas, y podras usar la api de Drupal y la de cualquier modulo que hayas instalado. En tu theme dispones, si o si, de un fichero llamado "block.tpl.php", a ese bloque lo duplicas y le pones el nombre que te dije antes, y reemplazas la variable $content por lo que vos quieras.
Otra forma de hacerlo es poniendo de formato de entrada "PHP code", pero no me gusta, esa manera es aun mas rapida.

La profesional: Usando un modulo personalizado. Drupal te brinda un hook llamado "hook_block" el cual te permite crear los modulos que vos quieras.
El hook_block se divide en operaciones, te voy a poner un ejemplo rapido:

Código PHP:
function tumodulo_block($op 'list'$delta 0$edit = array()){

    
//Declaramos un array vacio que tendra el contenido del bloque (o bloques)
    
$block = array();

    if(
$op == "list"){
        
$block[0]["info"] = t('Titulo del bloque');
    }
    elseif(
$op == "view"){
        
$block["content"] = t("Este es mi primer bloque");
    }

    return 
$block;

List es el $op que indica que se estan listando los bloques, eso es para que aparezca en la pagina de Bloques del admin de Drupal, no tiene mas historia que eso.
La parte importante es el $op view, el cual es el que nos muestra el contenido del bloque en pantalla.
$block es un vector, donde el indice "content" es el contenido del mismo, yo lo que hice ahi fue asignar un string y listo, pero lo mas usual es usar la funcion theme, y pasarle variables como parametro, esto hace entrar en juego el hook_theme, ahi definis los templates a usar por cada llamada que hagas, y declaras un tpl donde podras maquetar el contenido del bloque a tu gusto.

Te dejo un pedazo de codigo de una web que estoy desarrollando:

Código PHP:
function streetstyle_block($op 'list'$delta 0$edit = array()){

    
//Declaramos un array vacio que tendra el contenido del bloque (o bloques)
    
$block = array();

    if(
$op == "list"){
        
// Generamos la lista de bloques, para mostrarlas en admin/block
        
$block[0]["info"] = t('Perfil usuario');
    }
    elseif(
$op == "view"){
        global 
$user;
        
$block["content"] = theme("profile_user",$user);
    }

    return 
$block;
}


function 
streetstyle_theme(){
            return array(
                
'profile_user' => array(
                        
'arguments' => array('uid' => NULL),
                        
'template' => 'profile-blocks',
                ),
            );
    } 
Dentro del fichero profile-blocks.tpl.php voy a tener el contenido del bloque.

No se, espero que te haya servido, aunque si tu nivel en Drupal es pequeño, quedate con la primer alternativa.

Saludos.
  #3 (permalink)  
Antiguo 07/07/2011, 01:14
 
Fecha de Ingreso: octubre-2008
Ubicación: Plasencia
Mensajes: 109
Antigüedad: 15 años, 6 meses
Puntos: 6
Respuesta: Duda sobre bloques en drupal

Muchas gracias, tu respuesta me ha sido de gran ayuda!!

Etiquetas: bloques
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:55.