6

この質問に対するより具体的な見解として:

特定のページのdrupaljQuery1.4

モジュール内で、ノードが特定のタイプであるかどうかを確認して、ノードに対して特定のことを実行できるようにするにはどうすればよいですか。

ありがとう

コンテキスト:

'my_page'で作業するのではなく、ノードタイプで機能するように、このコードを適応させようとしています。

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

ありがとう。

4

3 に答える 3

8

モジュール内で、これを行うことができます:

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
   }

}

これにより、現在のノードページが指定されたノードオブジェクトがロードされます(使用できない場合)。使用しているコードのコンテキストがわからないため、これは大まかな例ですが、node_load(node_id)を実行することで、ノードのプロパティをいつでも確認できます。ただし、Drupal API関数によっては、すでにロードされている場合があります。

たとえば、hook_nodeapiです。

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

あなたができること:

function mymodule_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
   switch ($op) {
      case 'view': 
         // some code here
   }
}
于 2010-06-07T13:01:24.660 に答える
1

これを試して:-

function MyModule_preprocess_node(&$vars) {
  if ($vars['type'] == 'this_type') {
    // do some stuff
  }
}
于 2010-06-07T11:19:19.700 に答える
-2
Try this:-

$node = node_load(arg(1));

$node =$node->type;

if($node == 'node_type'){
    //do something
}
于 2014-07-19T09:48:57.117 に答える