Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Drupal 7 javascript自定义节点上的drupal 7文件字段格式化程序(用于设置jQuizMe)_Drupal 7 - Fatal编程技术网

Drupal 7 javascript自定义节点上的drupal 7文件字段格式化程序(用于设置jQuizMe)

Drupal 7 javascript自定义节点上的drupal 7文件字段格式化程序(用于设置jQuizMe),drupal-7,Drupal 7,我已经设置了一个具有自定义节点类型的模块(我称为jquizme,在我非常喜欢使用的javascript jquizme之后)。我为需要提供的javascript文件设置了两个字段以使其正常工作(在通用jQuizMe-2.2.js文件之后,您需要添加另外两个javascript文件,一个用于设置,另一个用于测验内容) Drupal将文件保存为myjavascriptfile.js.txt——我对它们进行了测试,它们仍然可以使jQuizMe界面正常工作。问题是,我想在节点页面上添加这些文件。。。每个

我已经设置了一个具有自定义节点类型的模块(我称为jquizme,在我非常喜欢使用的javascript jquizme之后)。我为需要提供的javascript文件设置了两个字段以使其正常工作(在通用jQuizMe-2.2.js文件之后,您需要添加另外两个javascript文件,一个用于设置,另一个用于测验内容)

Drupal将文件保存为myjavascriptfile.js.txt——我对它们进行了测试,它们仍然可以使jQuizMe界面正常工作。问题是,我想在节点页面上添加这些文件。。。每个节点的文件将不同。我如何访问drupal_add_js()函数的文件,以便它们加载相关节点的文件

我尝试设置自定义字段格式化程序,但我不知道如何自动访问给定节点的文件的uri以放入drupal_add_js()函数(我可以添加一个静态文件,它可以很好地加载……我使用hook_node_视图(jquizme_node_视图)实现了这一点)

所以我只需要一种方法来访问文件的信息…它们是如何链接到每个节点的?我找不到连接。 正如您可能注意到的,我是一个模块编写新手,我可能不太了解与面向对象编程相关的内容(抱歉,还没有发展到那个水平),但我愿意接受任何答案。我肯定我遗漏了重要的信息,但这已经太长了

我在前面还设置了一个特殊页面,看看是否可以让jQuizMe在Drupal中工作,这样代码中仍然有

我尝试了很多答案(过去六个小时左右……这里说的太多了),最近的一个答案是使用代币,但这不起作用。以下是我到目前为止的情况:

函数jquizme_node_view($node,$view_mode,$langcode){ 开关($node->type){ 案例“jquizme”: $items=field\u get\u items('node',$node','field\u myfield',$node->language); drupal_add_css(drupal_get_path('module','jquizme')。/jquizme.css',>array('scope'=>'header'); drupal_add_js(drupal_get_path('module','jquizme')。/alert.js'); drupal_add_js(drupal_get_path('module','jquizme')。/jquizme-2.2.js',>array('scope'=>'header'); //drupal_add_js($tokens['node']['jquizme_js1_field'],数组('scope'=>>'header'); //drupal_add_js($tokens['node']['jquizme_js2'],数组('scope'=>'header'); 打破 } }

提前谢谢

你能试试这个吗

// Let me assume that the field names of your two file fields
// are jquizme_js1_field and jquizme_js2_field for convenience..
function jquizme_node_view($node, $view_mode, $language) {
  $items = field_get_items('node', $node, 'jquizme_js1_field');
  _jquizme_add_js_from_filefield($items);

  $items = field_get_items('node', $node, 'jquizme_js2_field');
  _jquizme_add_js_from_filefield($items);

}

// Given the values of a filefield attached to some entity,
// adds them as JS files to the page.
function _jquizme_add_js_from_filefield($items = array()) {
  foreach ($items as $item) {
    $fid = &$item['fid'];
    $file = file_load($fid);
    if (!$file) {
      continue; // Maybe the file got deleted..
    }
    $wrapper = file_stream_wrapper_get_instance_by_uri($file->uri);
    $path = $wrapper->realpath();
    // Ensure that the path exists and that it is a Javascript file..
    if (file_exists($path) && preg_match('\.js$', $path)) {
      drupal_add_js($path, array('type' => 'file'));
    }
  }
}

唷!我90%在那里!我搜索了如何查找附加到节点的文件的fid,并完成了一些工作。这是我的结果代码——它远不是完美的,但对于我的学习阶段,我非常高兴$节点=节点负载($nid);从这里我可以访问文件名。然后我将它连接到我知道的drupal_add_js的路径上,最棒的是我得到了要呈现的jQuizMe测验,问题是现在我得到了drupal消息通知:在jQuizMe_node_view()中使用未定义的常量und-假定的'und'(C:\xampp\htdocs\devel\sites\all\modules\custom\jQuizMe\jQuizMe.module的第40行)。注意:在jquizme_node_view()中使用了未定义的常量filename-假定为“filename”(C:\xampp\htdocs\devel\sites\all\modules\custom\jquizme\jquizme.module的第40行)。如何消除此警告消息?