首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何包含一个JavaScript文件并通过一个函数调用传递一个PHP变量的值?

我如何包含一个JavaScript文件并通过一个函数调用传递一个PHP变量的值?
EN

Drupal用户
提问于 2015-01-22 11:30:34
回答 4查看 2.2K关注 0票数 0

我正在尝试将一个PHP变量传递给我的JavaScript文件。这个文件是js/back背景Config.js,它位于主题目录中,这是文件的内容。

代码语言:javascript
复制
(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。我试过几种方法,但都没有用。

有大量的例子在网上,但没有一个包含文件名和设置在一起。就像这个:

代码语言:javascript
复制
drupal_add_js(array('variableName' => 'value'), 'setting');

好吧,但是我应该把我的文件名放在哪里?我总是像这样添加我的JavaScript文件。

代码语言:javascript
复制
drupal_add_js(path_to_theme().'/js/backgroundConfig.js');

我怎么把它结合在一起?

EN

回答 4

Drupal用户

回答已采纳

发布于 2015-01-22 11:39:43

如何把它结合起来收集?

没有- Javascript文件和设置是完全不同的两件事。添加到设置中的任何内容都将在全局Drupal对象上可用,在调用JS文件中的代码时,该对象将可用。

您的代码应该是:

代码语言:javascript
复制
drupal_add_js(array('variableName' => 'value'), 'setting');
drupal_add_js(path_to_theme().'/js/backgroundConfig.js');

或者反过来说,这真的不重要。

票数 3
EN

Drupal用户

发布于 2015-01-22 11:59:45

你们真的很亲密。这是一个小小的错误,也许有点误会。

首先,应该添加一个设置(取自api.d.o):

代码语言:javascript
复制
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以更好地了解这里发生了什么,以及其他模块和主题如何使用此功能。

票数 2
EN

Drupal用户

发布于 2015-01-22 12:01:28

最好举个例子:

PHP:

代码语言:javascript
复制
drupal_add_js(array('myvar' => 'value'), 'setting');

联合来文:

代码语言:javascript
复制
(function($){
  Drupal.behaviors.backgroundAnimation = {
    attach: function(context, settings) {
      alert(settings.myvar); // Should alert 'value'
    }
  };
})(jQuery);

使用模块名分组设置通常是个好主意,如下所示:

代码语言:javascript
复制
drupal_add_js(array('mymodule' => array('myvar' => 'value')), 'setting');

因此,要通过JS访问它,您可以这样做:

代码语言:javascript
复制
settings.mymodule.myvar
票数 1
EN
页面原文内容由Drupal提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://drupal.stackexchange.com/questions/145047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档