2010-06-07 13 views
6

Como una toma más específica sobre esta cuestión:módulo de Drupal, comprobar si el tipo de nodo

drupal jQuery 1.4 on specific pages

¿Cómo verifico, dentro de un módulo, si un nodo es un cierto tipo de poder hacer ciertas cosas al nodo.

Gracias

El contexto:

estoy tratando de adaptar este código para que en lugar de trabajar en 'my_page' que funciona en un tipo de nodo.

function MYMODULE_preprocess_page(&$variables, $arg = 'my_page', $delta=0) { 

    // I needed a one hit wonder. Can be altered to use function arguments 
    // to increase it's flexibility. 
    if(arg($delta) == $arg) { 
    $scripts = drupal_add_js(); 
    $css = drupal_add_css(); 
    // Only do this for pages that have JavaScript on them. 
    if (!empty($variables['scripts'])) { 
     $path = drupal_get_path('module', 'admin_menu'); 
     unset($scripts['module'][$path . '/admin_menu.js']); 
     $variables['scripts'] = drupal_get_js('header', $scripts); 
    } 
    // Similar process for CSS but there are 2 Css realted variables. 
    // $variables['css'] and $variables['styles'] are both used. 
    if (!empty($variables['css'])) { 
     $path = drupal_get_path('module', 'admin_menu'); 
     unset($css['all']['module'][$path . '/admin_menu.css']); 
     unset($css['all']['module'][$path . '/admin_menu.color.css']); 
     $variables['styles'] = drupal_get_css($css); 
    } 
    } 
} 

Gracias.

Respuesta

7

el interior de un módulo, se puede hacer esto:

if (arg(0) == 'node' && is_numeric(arg(1)) && arg(2) != 'edit') { 
    if (!($node)) { 
     $node = node_load(arg(1)); 
    } 

    if ($node->type == 'page') { 
    // some code here 
    } 

} 

que cargará un objeto nodo dado la página actual nodo (si no está disponible). Como no conozco el contexto de código con el que está trabajando, este es un ejemplo aproximado, pero siempre puede ver las propiedades de un nodo haciendo node_load (node_id). Pero, dependiendo de la función de API de Drupal, puede que ya esté cargada.

Por ejemplo, hook_nodeapi.

http://api.drupal.org/api/function/hook_nodeapi

Se podría hacer:

function mymodule_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) { 
    switch ($op) { 
     case 'view': 
     // some code here 
    } 
} 
+0

Gracias, actualicé mi pregunta con el contexto. – Mark

+0

Luego, mi primer ejemplo de código debería llevarlo en la dirección correcta – Kevin

1

Prueba esto: -

function MyModule_preprocess_node(&$vars) { 
    if ($vars['type'] == 'this_type') { 
    // do some stuff 
    } 
} 
+0

Quiere comprobar dentro de un módulo, no es un tema de template.php. – Kevin

+0

Buen punto Kevin. ¡Ignora mi respuesta arriba! – drmonkeyninja

+0

funciona también dentro de los módulos – wranvaud

-2
Try this:- 

$node = node_load(arg(1)); 

$node =$node->type; 

if($node == 'node_type'){ 
    //do something 
} 
+2

¡Por favor escriba algunas explicaciones a su Código! Simplemente escribir código sin explicar lo que hace no es apropiado – MiBrock

Cuestiones relacionadas