我正在使用Jekyll制作并在GitHub上托管的静态网站上工作。其中一篇文章看起来像this
另外,我创建了一个Rmarkdown文件,我想将生成的html文件嵌入到帖子中。我读了here,我只需要这样做:
您只需在项目的DocumentRoot中创建名称为 _includes / 的文件夹,然后在其中创建一个HTML文件,例如" mycomponent.html"并使用以下内容在您的帖子中调用它:
{% include mycomponent.html %}
我在_includes /文件夹中添加了我的html文件,并在相应帖子的markdown文件末尾添加了这段代码。但是,当我这样做时,网站布局会完全改变
我有办法避免这种情况吗?该网站的所有文件都是商店here。
修改
我发现另一个问题建议this:
在我看来,最好的解决方案是:
使用jQuery:
a.html:
<html> <head> <script src="jquery.js"></script> <script> $(function(){ $("#includedContent").load("b.html"); }); </script> </head> <body> <div id="includedContent"></div> </body> </html>
b.html:
<p> This is my include file </p>
我完全不明白。不知何故,网站的布局已恢复,但现在一些图像和htmlwidget丢失了。此外,页面的页脚完全搞砸了。
答案 0 :(得分:3)
从回购开始,我假设您已尝试将_includes/Report.html
包含在另一个文件中。
_includes/Report.html
是一个完整的HTML网页(包含doctype
和html
代码),而非include
设计的部分内容。 Liquid将使用完整的HTML替换include标记,从而创建无效的标记以及布局问题的可能来源:
<!doctype html>
<html>
<head>...</head>
<body>
...
<!doctype html>
<html>
...
</html>
</body>
</html>
要解决此问题,请从_includes/Report.html
删除额外标记(保留script
标记),并使用Liquid包含更正的部分:
{% include Report.html %}
答案 1 :(得分:1)
我发现没有必要在另一个中嵌入一个html。使用R,可以创建带有post的Rmd文件,然后将其转换为所需的md文件。 Jason Fisher的website通过逐步说明很好地解释了它。他的GitHub site也提供了有用的信息。
另一个有用的site是Juuso Parkkinen的作品。他是那个告诉我他从未将html嵌入到另一个中的人,只使用R直接创建他的Jekyll网站,使用以下code:
# compiles all .Rmd files in _R directory into .md files in _posts directory,
# if the input file is older than the output file.
# run ./knitpages.R to update all knitr files that need to be updated.
KnitPost <- function(input, outfile, base.url="/") {
# this function is a modified version of an example here:
# http://jfisher-usgs.github.com/r/2012/07/03/knitr-jekyll/
require(knitr);
opts_knit$set(base.url = base.url)
fig.path <- paste0("blog/figs/", sub(".Rmd$", "", basename(input)), "/")
opts_chunk$set(fig.path = fig.path)
opts_chunk$set(fig.cap = "testing")
render_jekyll()
knit(input, outfile, envir = parent.frame())
}
for (infile in list.files("blog/_R", pattern="*.Rmd", full.names=TRUE)) {
outfile = paste0("blog/_posts/", sub(".Rmd$", ".md", basename(infile)))
# knit only if the input file is the last one modified
if (!file.exists(outfile) | file.info(infile)$mtime > file.info(outfile)$mtime) {
KnitPost(infile, outfile)
}
}
他的GitHub帐户也是一个有用的参考。