ctools_include()
加载了dropdown.theme.inc
文件,我们知道,否则,theme_ctools_dropdown()
由于调用未定义的函数,调用会导致致命错误。
theme_ctools_dropdown()
本身无条件添加需要的dropdown.js
和dropdown.css
文件。
因此,我相信您的代码永远不会在这些页面上被调用(即不会显示该块)。为了证明这一点,挤进drupal_set_message('Hello world');
你的某个地方,hook_block_view()
看看会发生什么。
如果您看到该消息,请hook_js_alter()
在您的代码中进行搜索,也许某处的某个逻辑会dropdown.js
在这些页面上删除。
更新: drupal_add_js()
清除缓存后不会包含在块内调用。因此,您需要使用 #attached 属性包含 JS 和 CSS 文件:
ctools_include('dropdown.theme');
// ...
$block['content'] = array(
'#markup' => theme_ctools_dropdown($vars),
'#attached' => array(
'css' => array(
drupal_get_path('module', 'ctools') . '/css/dropdown.css',
),
'js' => array(
drupal_get_path('module', 'ctools') . '/js/dropdown.js',
),
),
);