Drupal 7:如何从组件的预处理函数中检索节点的内容类型?

Drupal 7: How do I retrieve a node's Content Type from within a component's prepocess function?

我有一个组件需要我获取该组件所在节点的内容类型。我看到有一个函数可以帮我获取它:

node_type_get_name($node)

但是,当我在组件内部使用这个函数时pre-process hook,例如:

 my_component_preprocess_my_component_theme(&$variables, $node) {
   dpm(node_type_get_name($node));
 }

我一无所获。

如果我 dpm($node); 我得到的是组件的标题,而不是节点。

谁知道我如何检索节点的 content-type?

您可以像这样加载当前节点:

<?php
$node = menu_get_object();
if ( !empty($node) ) {
  print "Have node";
}
?>

因此,您将加载完整节点并可以检查其类型 ($node->type) 以及您需要的任何其他内容。

https://www.drupal.org/forum/support/post-installation/2010-07-28/how-to-get-node-object-or-nid-for-the-current-page

当然,如果您没有节点,则意味着当前页面不是节点(可能是视图或某些自定义页面...)。