我猜这是在Drupal 7
如果您需要快速上手...如何组织你的模块
例。我们称你的模块为“mymodule”。
[内MyModule的文件夹]
mymodule.info mymodule.module --js/ --inc/
把所有的JavaScript具体涉及您的模块中的“JS”文件夹 把所有的PHP文件,具体涉及到你的模块中的“INC”文件夹(短为包括)
1)使用hook_block_view()
//Within mymodule_block_view()
//Put your content for the block
$block['content']= '<div id="my_container" style="position: relative; width: 60em; height: 30em;">
<div id="my"></div>
</div>';
//Later on
return $block;
完整的例子见https://api.drupal.org/api/drupal/modules%21block%21block.api.php/function/hook_block_view/7。
我就拆了这一点到一个单独的文件,或者使用module_file_include()(见https://api.drupal.org/api/drupal/includes!module.inc/function/module_load_include/7),或在功能包,并调用该函数从内部mymodule_block_view()
2)在您的方框图
使用
drupal_add_js()
$module_path = drupal_get_path('module', 'mymodule'); //Get path of your module
drupal_add_js($module_path.'/js/[your JS file]', 'file');
解释和举例这里添加JS:https://api.drupal.org/api/drupal/includes%21common.inc/function/drupal_add_js/7
请注意,刚才明明白白增加<script>
到$block['content']
可以工作,但通过使用drupal_add_js()
,您可以利用Drupal的缓存(以及各种缓存模块)来帮助加速您的网站。如果你只是使用<script>
,你没有任何优势。
3)一般提示:学习jQuery,比纯JavaScript
drupal_add_js("jQuery(document).ready(my.init({url: 'https://1.2.3.4/'}));", 'inline');
部分例子更容易(你hook_block_view内):
$module_path = drupal_get_path('module', 'mymodule'); //Get path of your module
drupal_add_js($module_path.'/js/[your JS file]', 'file');
$block['content']= '<div id="my_container" style="position: relative; width: 60em; height: 30em;">
<div id="my"></div>
</div>';
drupal_add_js("jQuery(document).ready(my.init({url: 'https://1.2.3.4/'}));", 'inline');
正如我上面提到的,我将分离出的模块代码分成更小(更易管理)的文件。
举例来说。
inc/mymodule_menu.inc.php //hook_menu
inc/mymodule_blocks.inc.php //hook_block_view
inc/mymodule_firstblock.inc.php //Code for a block wrapped in a function, which hook_block_view calls
希望这有助于
忘了说了,如果它是一个外部JavaScript文件,它是好的,给drupal_add_js()的URL,使用“外部”选项。 – ConnectedSystems 2014-10-02 12:58:25
谢谢你,这很有帮助。该模块现在功能正常,我用你的代码和它的工作很好,我完全没有使用你的“drupal_add-js”,我用它来调用我的js文件,就像这样“\t \t drupal_add_js(drupal_get_path('module','我')。'/js/myinit.js','文件'); “现在任何人都可以使用该模块,如果他们希望。 – BeNoZo 2014-10-06 21:53:07