2010-06-07 18 views
6

Come un introito più specifica su questa questione:Drupal modulo, controllare se il tipo di nodo

drupal jQuery 1.4 on specific pages

Come posso controllare, all'interno di un modulo, se un nodo è un certo tipo di essere in grado di fai certe cose al nodo.

Grazie

Il contesto:

sto cercando di adattare questo codice in modo che piuttosto che lavorare su 'my_page' funziona su un tipo di 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); 
    } 
    } 
} 

Grazie.

risposta

7

All'interno di un modulo, si può fare questo:

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 
    } 

} 

che caricherà un oggetto nodo dato pagina nodo corrente (se non disponibile). Dato che non conosco il contesto del codice su cui stai lavorando, questo è un esempio approssimativo, ma puoi sempre vedere le proprietà di un nodo facendo node_load (node_id). Ma, a seconda della funzione API di Drupal, potrebbe già essere caricato per te.

Ad esempio, hook_nodeapi.

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

Si potrebbe fare:

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

Grazie Ho aggiornato la mia domanda con il contesto. – Mark

+0

Quindi il mio primo esempio di codice dovrebbe portarti nella giusta direzione – Kevin

1

Prova questo: -

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

Vuole controllare all'interno di un modulo, non un template.php tema. – Kevin

+0

Buon punto Kevin. Ignora la mia risposta sopra! – drmonkeyninja

+0

funziona anche all'interno dei moduli – wranvaud

-2
Try this:- 

$node = node_load(arg(1)); 

$node =$node->type; 

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

Per favore scrivi alcune spiegazioni al tuo codice! Basta scrivere il codice senza spiegare quello che fa non è appropriato – MiBrock

Problemi correlati