我正在尝试将一个PHP变量传递给我的JavaScript文件。这个文件是js/back背景Config.js,它位于主题目录中,这是文件的内容。
(function($, Drupal){
Drupal.behaviors.backgroundAnimation = {
attach: function(context, settings) {
alert(Drupal.settings.variableName);
alert(Drupal.settings.basePath);
}
};
})(jQuery, Drupal);Drupal.settings.basePath显示正确,但我不知道如何从template.php传递variableName。我试过几种方法,但都没有用。
有大量的例子在网上,但没有一个包含文件名和设置在一起。就像这个:
drupal_add_js(array('variableName' => 'value'), 'setting');好吧,但是我应该把我的文件名放在哪里?我总是像这样添加我的JavaScript文件。
drupal_add_js(path_to_theme().'/js/backgroundConfig.js');我怎么把它结合在一起?
发布于 2015-01-22 11:39:43
如何把它结合起来收集?
没有- Javascript文件和设置是完全不同的两件事。添加到设置中的任何内容都将在全局Drupal对象上可用,在调用JS文件中的代码时,该对象将可用。
您的代码应该是:
drupal_add_js(array('variableName' => 'value'), 'setting');
drupal_add_js(path_to_theme().'/js/backgroundConfig.js');或者反过来说,这真的不重要。
发布于 2015-01-22 11:59:45
你们真的很亲密。这是一个小小的错误,也许有点误会。
首先,应该添加一个设置(取自api.d.o):
drupal_add_js(array('myModule' => array('key' => 'value')), 'setting');现在可以通过.js文件通过Drupal.settings.myModule.key访问此设置。上面的第一个数组键是您将用于访问Drupal.settings中的设置对象的名称。通过这种方式,您可以在需要时向Drupal.settings.myModule添加多个设置。
当您通过drupal_add_js添加js时,实际上可以发生两种不同的事情。如果要添加像backgroundConfig.js这样的文件,Drupal将实际将该文件加载到HTML中,允许将其聚合,等等。
添加设置时,不需要添加文件,而是将该设置创建为存在于每个页面的全局Drupal.settings JavaScript对象中的对象。
因此,总之,您可以添加一个文件或添加一个设置。通常,模块/主题的行为将使用此设置来确定其在给定页面或上下文中的工作方式。
此外,在浏览器中,试着打开Web检查器,转到控制台,并键入Drupal以更好地了解这里发生了什么,以及其他模块和主题如何使用此功能。
发布于 2015-01-22 12:01:28
最好举个例子:
PHP:
drupal_add_js(array('myvar' => 'value'), 'setting');联合来文:
(function($){
Drupal.behaviors.backgroundAnimation = {
attach: function(context, settings) {
alert(settings.myvar); // Should alert 'value'
}
};
})(jQuery);使用模块名分组设置通常是个好主意,如下所示:
drupal_add_js(array('mymodule' => array('myvar' => 'value')), 'setting');因此,要通过JS访问它,您可以这样做:
settings.mymodule.myvarhttps://drupal.stackexchange.com/questions/145047
复制相似问题