HFS 3的定制与HFS 2的定制非常不同,不兼容于HFS 2。你可以做的事情更少,但这是因为旧系统在每次更新时都很容易出错。 过多的功能 = 过多的责任。

定制能力正在进行中。欢迎提出建议。

当前的能力主要基于样式规则。 您可以通过转到 Admin-panel > Custom HTML,选择一个适当的部分,比如 html body 的顶部,并添加一个 <style> 标签,其中包含任何内容来自由地添加样式。 示例:

  1. <style>
  2. #root { background: red }
  3. </style>

我们目前没有关于类和ID的文档,所以请使用浏览器检查DOM来找出你需要的规则(右键单击 > 检查)。

请注意,我们使用了一些CSS变量,如 --bg --text --button-bg,这可以让您的工作更加轻松。查看 蓝色背景示例

图片

包含图片的选项有几种:

  • 使用隐藏文件夹:
    • 将图片文件放入一个文件夹中,例如 “images”
    • 在虚拟文件系统中共享它
    • 删除可见性(谁能看到:无)
    • 现在您可以在您的html/style中引用这些文件,因为它们像 /images/logo.png 一样可访问
  • 在样式中嵌入小文件
  • 使用表情符号

示例

设置更宽的列表

image

在 “top of html body” 或 “html head” 部分中添加以下文本

  1. <style>
  2. .list-wrapper { max-width: 100em; }
  3. </style>

添加文本或图像到登录对话框

您可以添加任何文本(示例中的“My test”)并获得类似于这样的效果(用深色主题拍摄的截图)

image

只需在自定义HTML中添加文本,部分 “before login” 中。但由于它是HTML,你几乎可以得到任何东西,比如一张图像,只需一些基本的代码

  1. <img src='http://rejetto.com/pics/rejetto.com.gif'>

image

在示例中,我们使用的是托管在另一台服务器上的文件。

您可能希望在HFS本身中托管您的图像,将其添加到虚拟文件系统中,可能是隐藏的(删除“can see”权限),这样地址就变成了 url(/my-hidden-folder/my-logo.png)

蓝色背景

在 “top of html body” 中添加以下内容

  1. <style>
  2. :root { --bg: #258; --text: #fff; }
  3. a { color: #fff; text-decoration: underline; }
  4. </style>

我们使用下划线来区分链接,这些链接在这个示例中与普通文本颜色相同。 结果将如下所示

image

从特殊文件中附加HTML内容进入文件夹

此示例将从名为 “readme.html” 的文件中读取内容,并将其添加到列表后面。

将以下内容添加到 “After list” 部分:

  1. <div id='inject-readme'></div>
  2. <style>
  3. ul.dir { flex: unset }
  4. </style>
  5. <script>
  6. let lastPath = ''
  7. HFS.onEvent('entry', ({ entry }) => {
  8. let el = document.getElementById('inject-readme')
  9. let {pathname} = location
  10. if (pathname !== lastPath) { // 重置
  11. lastPath = pathname
  12. el.innerHTML = ''
  13. }
  14. if (entry.n === 'readme.html') // 加载
  15. fetch(entry.n).then(x => x.text()).then(x =>
  16. el.innerHTML = x)
  17. })
  18. </script>

image

从特殊文件中附加Markdown内容进入文件夹

此示例将从名为 “readme.md” 的文件中读取内容,并将其添加到列表后面(已渲染)。

将以下内容添加到 “After list” 部分:

  1. <div id='inject-readme'></div>
  2. <style>
  3. ul.dir { flex: unset }
  4. </style>
  5. <script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
  6. <script>
  7. window.addEventListener('load', () => {
  8. let lastPath = ''
  9. HFS.onEvent('entry', ({ entry }) => {
  10. let el = document.getElementById('inject-readme')
  11. let {pathname} = location
  12. if (pathname !== lastPath) { // 重置
  13. lastPath = pathname
  14. el.innerHTML = ''
  15. }
  16. if (entry.n === 'readme.md') // 加载
  17. fetch(entry.n).then(x => x.text()).then(x =>
  18. el.innerHTML = marked.parse(x))
  19. })
  20. })
  21. </script>

添加一个“复制链接”到文件菜单

将以下内容添加到 “Before header” 部分

  1. <script>
  2. HFS.onEvent('fileMenu', ({ entry }) => ({
  3. label:
  4. "Copy link",
  5. async onClick() {
  6. await navigator.clipboard.writeText(location + entry.n)
  7. HFS.dialogLib.alertDialog("Link copied")
  8. }
  9. }))
  10. </script>