2010-06-07 24 views
6

Là một mất cụ thể hơn về vấn đề này:mô-đun drupal, kiểm tra xem loại nút

drupal jQuery 1.4 on specific pages

Làm thế nào để kiểm tra, bên trong một module, có hay không một nút là một loại nhất định để có thể làm một số thứ nhất định cho nút.

Cảm ơn

Bối cảnh:

Tôi đang cố gắng để thích ứng với mã này để thay vì làm việc trên 'my_page' nó hoạt động trên một loại nút.

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

Cảm ơn.

Trả lời

7

Bên trong của một module, bạn có thể làm điều này:

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 
    } 

} 

Đó sẽ tải một đối tượng nút cho trang nút hiện hành (nếu không có sẵn). Vì tôi không biết ngữ cảnh của mã mà bạn đang làm việc, đây là một ví dụ thô, nhưng bạn luôn có thể thấy các thuộc tính của một nút bằng cách thực hiện node_load (node_id). Tuy nhiên, tùy thuộc vào chức năng API Drupal, nó có thể đã được tải cho bạn.

Ví dụ: hook_nodeapi.

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

Bạn có thể làm:

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

Cảm ơn tôi đã cập nhật câu hỏi của mình với ngữ cảnh. – Mark

+0

Sau đó, ví dụ mã đầu tiên của tôi sẽ giúp bạn đi đúng hướng – Kevin

1

Hãy thử điều này: -

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

Ông muốn kiểm tra trong một module, không phải là một template.php chủ đề. – Kevin

+0

Điểm tốt Kevin. Bỏ qua câu trả lời của tôi ở trên! – drmonkeyninja

+0

nó hoạt động trong các mô-đun quá – wranvaud

-2
Try this:- 

$node = node_load(arg(1)); 

$node =$node->type; 

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

Vui lòng viết một số giải thích cho Mã của bạn! Chỉ cần viết mã mà không giải thích những gì nó không phù hợp – MiBrock

Các vấn đề liên quan