r - R Shiny:如何使用带有图标功能的fontawesome pro版?
问题描述
我通过该icon
功能在我的 Shiny 应用程序中使用了 fontawesome 图标。
我已经下载了 fontawesome 的专业版,并使用了此处的说明:shinydashboard some Font Awesome Icons Not Working将 Shiny 默认使用的免费版本(内部shiny\www\shared\font-awesome
)替换为我的付费版本。这在本地运行良好,所有专业图标都显示在我的应用程序中。
但是,当我部署到 时shinyapps.io
,Shiny 似乎又回到了使用默认版本。我确实尝试将我的 pro 目录包含在/www/
我的应用程序的文件夹中,但没有成功。似乎没有办法告诉icon()
函数查看本地版本的 fontawesome,比如icon(...,lib=local)
,或者icon(...,lib=path_to_fa)
......
任何帮助都会非常受欢迎。
解决方案
诀窍是,在htmlDependency
调用内部(icon()
函数中),删除package = "shiny"
并替换"www/shared/fontawesome"
为我的 FA 文件夹的绝对路径(我还更新了版本号)。
编辑:更准确地说,下面是(非常轻微的)修改后的图标功能:
my_icon = function (name, class = NULL, lib = "font-awesome") {
prefixes <- list(`font-awesome` = "fa", glyphicon = "glyphicon")
prefix <- prefixes[[lib]]
if (is.null(prefix)) {
stop("Unknown font library '", lib, "' specified. Must be one of ",
paste0("\"", names(prefixes), "\"", collapse = ", "))
}
iconClass <- ""
if (!is.null(name)) {
prefix_class <- prefix
#if (prefix_class == "fa" && name %in% font_awesome_brands) {
# prefix_class <- "fab"
#}
iconClass <- paste0(prefix_class, " ", prefix, "-", name)
}
if (!is.null(class))
iconClass <- paste(iconClass, class)
iconTag <- tags$i(class = iconClass)
if (lib == "font-awesome") {
htmlDependencies(iconTag) <- htmlDependency("font-awesome",
"5.7.2", "./www/shared/fontawesome/",
stylesheet = c("css/all.min.css"))
}
htmltools::browsable(iconTag)
}
除了注释掉一些行之外,我唯一改变的部分是htmlDependency
调用。在原始函数中,它是:
htmlDependency("font-awesome", "5.3.1", "www/shared/fontawesome", package = "shiny",
stylesheet = c("css/all.min.css", "css/v4-shims.min.css")
推荐阅读
- python - 有没有办法让进程的pid开始使用批处理文件?
- laravel - Webpack Laravel-Mix Chunk 错误类型错误:“e[r] 未定义”
- javascript - Javascript 中的 [[Scopes]] 和 [[Scope]] 有什么区别?
- php - 使用 ppk、rsa、pkcs8 进行 PHP 身份验证
- python - 将多列覆盖为一列 Pandas
- angular - 无法导入角材料
- matlab - 创建具有 N-4 行和 N-2 列的矩阵
- angular - 角度翻译:如何翻译数据表搜索和分页
- python - 数据抓取 - 字段值 - 问题
- pandas - 用列替换数据框的索引