如何在Drupal中使用JavaScript从节点的字段中读取/获取值?

时间:2016-09-14 19:13:09

标签: javascript drupal views drupal-theming

让我们说Drupal中的内容类型在Drupal中有三个字段机器名称:

company_color_schemacompany_logocompany_some_picture

我想检索company_color_schema,它会使用JavaScript为我提供纯文本十六进制颜色代码,以便我可以将它用作div背景颜色。

有没有办法使用JavaScript访问这些值?我查看了可用的文档,但似乎都没有覆盖它。

3 个答案:

答案 0 :(得分:0)

您可以这样做的一种方法是将JavaScript代码放在视图模板文件中,至少是其中的一部分。所以假设你有一个像这样的JavaScript行:

<?php $value_you_get_from_php = ... ; ?>

    <script>
        var bcgColor = <?php echo $value_you_get_from_php; ?>;
    </script>

因此,您将从PHP获取颜色字段值并将其打印在内联JavaScript代码中,恰好位于您定义JavaScript变量值的位置。然后,您可以在任何需要的地方使用该JavaScript变量。

另一种方法是使用节点id作为参数进行Ajax调用,但如果可以接受则第一个选项更容易。

或者,最简单的解决方案(灵感来自Artreaktor的答案):只需直接从模板文件中拍摄颜色 - 添加style标签属性并设置颜色。 Artreaktor的解决方案可能更多的是规则,但我的更容易实现。

答案 1 :(得分:0)

您应该使用drupalSettings

您可以根据需要以hook_node_view或类似方式附加

实际上,您不需要javascript来设置div背景。更好的方法是使用hook_preprocess_HOOK

mymodule_preprocess_node(&$vars) {
  $vars['background'] = $vars['node'][WHATEVER_VALUE];
}

将此代码放入您的模块,清除缓存,然后您可以在$background

中使用node.tpl.php变量

答案 2 :(得分:0)

哦,是的。在Drupal 8中:

  1. 创建视图,构建查询以显示您的字段
  2. 转到管理/扩展并启用“ RESTful Web服务”模块
  3. 向其中添加REST导出显示
  4. 为REST导出显示创建路径
  5. 选择具有设置的格式“序列化器”:
    • 强制使用字段-已选中;
    • json-已选中;
  6. 您做得好。对脚本中的网址进行Ajax处理,解析JSON,然后在JS中添加字段。