2010-06-07 2 views
6

Als ein spezifischeres nehmen auf diese Frage:Drupal-Modul, ob Knotentyp

drupal jQuery 1.4 on specific pages

Wie kann ich überprüfen, innerhalb eines Moduls, ob ein Knoten eine bestimmte Art ist in der Lage zu sein mache bestimmte Dinge zum Knoten.

Dank

Der Kontext:

Ich versuche, diesen Code anzupassen, so dass anstatt der Arbeit an ‚my_page‘ es auf einem Knotentyp arbeitet.

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); 
    } 
    } 
} 

Danke.

Antwort

7

Innerhalb eines Moduls können Sie dies tun:

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 
    } 

} 

, dass ein Knotenobjekt angesichts der aktuellen Knoten Seite (falls nicht vorhanden) geladen werden. Da ich den Kontext des Codes, mit dem Sie arbeiten, nicht kenne, ist dies ein ungefähres Beispiel, aber Sie können die Eigenschaften eines Knotens immer sehen, indem Sie node_load (node_id) ausführen. Je nach Drupal-API-Funktion wird es jedoch möglicherweise bereits für Sie geladen.

Zum Beispiel, hook_nodeapi.

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

Sie tun können:

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

Danke Ich habe meine Frage mit dem Kontext aktualisiert. – Mark

+0

Dann sollte mein erstes Codebeispiel Sie in die richtige Richtung bringen – Kevin

1

Versuchen Sie folgendes: -

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

Er will innerhalb eines Moduls prüfen, kein Thema template.php. – Kevin

+0

Guter Punkt Kevin. Ignoriere meine Antwort oben! – drmonkeyninja

+0

funktioniert es auch in Modulen – wranvaud

-2
Try this:- 

$node = node_load(arg(1)); 

$node =$node->type; 

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

Bitte schreiben Sie eine Erklärung zu Ihrem Code! Es ist nicht angebracht, Code zu schreiben, ohne zu erklären, was er tut – MiBrock