我有一个基于hugo-future-imperfect主题的blogdown网站,其中在rmd中正确创建了DT输出,但是当应用serve_site/build_site时,数据不会显示(尽管标题会显示)。
我创建了两个全新的网站(因此没有其他复杂性)来说明这个问题。这是代码和输出:
```{r DT}
library(DT)
library(tidyverse)
iris %>%
datatable()
```
a) 默认主题
b) Hugo Imperfect主题
我有一个基于hugo-future-imperfect主题的blogdown网站,其中在rmd中正确创建了DT输出,但是当应用serve_site/build_site时,数据不会显示(尽管标题会显示)。
我创建了两个全新的网站(因此没有其他复杂性)来说明这个问题。这是代码和输出:
```{r DT}
library(DT)
library(tidyverse)
iris %>%
datatable()
```
a) 默认主题
b) Hugo Imperfect主题
widgetframe
。install.packages("widgetframe")
ts <- iris %>% DT::datatable()
所以当你想要展示数据表时,只需要这样做:
widgetframe::frameWidget(ts)
对我来说没问题!
根据https://owi.usgs.gov/blog/leaflet/和https://github.com/rstudio/blogdown/issues/20,答案是在iframe中显示输出。因此:
将输出绑定到代码中的变量,不要显示此块的输出:
```{r, message=FALSE, warning=FALSE, include=FALSE}
library(DT)
library(tidyverse)
d1 <- iris %>%
datatable()
d1
```
```{r, message=FALSE, warning=FALSE, include=FALSE}
library(htmlwidgets)
library(htmltools)
htmlwidgets::saveWidget(d1, file = "d1.html", selfcontained = TRUE)
```
<iframe seamless src="../d1/index.html" width="100%" height="500"></iframe>
您应该在页面中看到来自此iframe的输出。
这不是一个漂亮的解决方法。希望问题能够在rblogdown中很快得到解决。
htmlwidgets::saveWidget(d1, file = "d1.html", selfcontained = TRUE)
,它会创建一个名为 d1.html 的文件。该文件将被创建在 blogdown 的 content/post 目录中,因此会影响常规文章的排版... - giocomaiDT :: saveWidget(d1,“temp.html”,selfcontained = FALSE)
一次来生成必要的库。然后将“temp_files / *”复制到“themes / your-theme / static / lib”中。<script>
标签放入“themes / my-theme / layouts / partials / scripts.html”中,并将<link rel =“stylesheet”...>
标签放入“themes / my-theme / layouts / partials / head.html”中。<link href="{{ "lib/datatables-css-0.0.0/datatables-crosstalk.css" | relURL }}" rel="stylesheet">
<link href="{{ "lib/dt-core-1.10.16/css/jquery.dataTables.min.css" | relURL }}" rel="stylesheet">
<link href="{{ "lib/dt-core-1.10.16/css/jquery.dataTables.extra.css" | relURL }}" rel="stylesheet">
<link href="{{ "lib/crosstalk-1.0.0/css/crosstalk.css" | relURL }}" rel="stylesheet">
前往 head.html 文件
<script src="{{ "lib/htmlwidgets-1.0/htmlwidgets.js" | relURL }}"></script>
<script src="{{ "lib/jquery-1.12.4/jquery.min.js" | relURL }}"></script>
<script src="{{ "lib/datatables-binding-0.4/datatables.js" | relURL }}"></script>
<script src="{{ "lib/dt-core-1.10.16/js/jquery.dataTables.min.js" | relURL }}"></script>
<script src="{{ "lib/crosstalk-1.0.0/js/crosstalk.min.js" | relURL }}"></script>
转到 scripts.html 页面
之后
```{r, results = "asis"}
DT::datatable(d1)
```
应该可以工作。
"/lib/...
而不是"lib/...
。此外,我还必须将htmlwidgets-1.0更新为htmlwidgets-1.2。最后,我没有scripts.html
文件,但有一个js.html
文件。所有这些都取决于主题,因此直接复制粘贴在这里不起作用。另外,我在本地使其工作了,但在netlify上无法工作,我意识到我在.gitignore
文件中有lib/
,所以我必须使用git add ... -f
。现在它可以工作了! - RAFisherman