【问题标题】:Drupal 7 + D3 - embed circle-pack visualization in a pageDrupal 7 + D3 - 在页面中嵌入圆形包可视化
【发布时间】:2015-07-02 16:37:26
【问题描述】:

我正在尝试在 Drupal 7 基本页面中嵌入 D3 圆形包,但它出现在页面的错误部分 - 页脚下方。见这里:http://www.thedata.co/circlepackzoom10。我尝试了不同的主题,但没有任何区别。

我正在使用带有 PHP 过滤器的 php include 方法:<?php include './sites/thedata.co/files/html/circle_packZoom-10.html';

我能够在节点正文中嵌入 D3 图表,因此在某些情况下似乎可以做到。

使用 Chrome,JS 控制台定义内容区域为:<div class="field-item odd" property="content:encoded">。也不适用于 Firefox。

完整代码如下:http://jsfiddle.net/cajmcmahon/9a5xaovv/

var pack = d3.layout.pack()
    .size([r, r])
    .children(function(d) {
        return d.values; // accessor for children
    })
    .value(function(d) {
        return d.values; // accessor for values
    });

//Declare SVG attributes
var svg = d3.select("body").append("svg")
    .attr("width", w)
    .attr("height", w)
    .append("g")
    .attr("transform", "translate(" + (w - r) / 2 + "," + (w - r) / 2 + ")");

有人知道如何将它放置在节点的主要内容区域中吗?谢谢。

【问题讨论】:

    标签: javascript d3.js drupal-7


    【解决方案1】:

    选择要放置图表的元素,而不是在 d3.select("body").append("svg") 中选择“body”。

    类似:

    d3.select('#divID').append('svg') ... etc
    

    因为此方法只是将其附加到网站的正文元素。

    【讨论】:

    • 谢谢!这让我朝着正确的方向前进。 Drupal 主题有点棘手(很多嵌套)。我尝试了 'div#main-content' 和 'div#node-content' 但似乎没有用。我正在使用 'var svg = d3.select('div#article-47').append("svg")' 将它放到正确的位置,但如果我想嵌入另一个页面,则意味着必须修改代码.我认为这是一个 Drupal 挑战。如果我得到一个系统范围的解决方案,我会回帖,即可以嵌入到任何页面中。
    • 您可能需要稍微延迟 d3 代码,因为 drupal 可能需要一些时间来绘制 DOM。
    • 谢谢。我以前没试过。我看看能不能把它整理好。
    • 我把整个 D3 脚本放在 'window.onload = function() { console.log('Loaded..'); } 只是为了确保 DOM 正在加载。 'div#article-47' 似乎仍然是最好的/唯一的#divID,所以我暂时把它放在那里。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多