在 jekyll 中生成针对 github 页面的类别页面

2023-12-20

我正在尝试使用 jekyll 为我的 github 页面博客生成类别页面。当我在本地运行时使用jekyll serve这有效,因为它可以使用我的插件。

使用这个例子从文档 https://jekyllrb.com/docs/plugins/#generators不起作用,因为 github 不会生成自定义插件:

module Jekyll
  class CategoryPage < Page
    def initialize(site, base, dir, category)
      @site = site
      @base = base
      @dir = dir
      @name = 'index.html'

      self.process(@name)
      self.read_yaml(File.join(base, '_layouts'), 'category_index.html')
      self.data['category'] = category

      category_title_prefix = site.config['category_title_prefix'] || 'Category: '
      self.data['title'] = "#{category_title_prefix}#{category}"
    end
  end

  class CategoryPageGenerator < Generator
    safe true

    def generate(site)
      if site.layouts.key? 'category_index'
        dir = site.config['category_dir'] || 'categories'
        site.categories.each_key do |category|
          site.pages << CategoryPage.new(site, site.source, File.join(dir, category), category)
        end
      end
    end
  end
end

但是,如果我可以生成自己的页面,但不在_site目录。然后,我会将这些作为“常规”页面签入,即使它们是由系统生成的。

有没有办法在外部生成类别页面_site与 jekyll 的目录?


A)您可以编写自定义脚本(shell 或 Ruby 或其他)使用以下命令在任何地方生成文件文件 I/O 操作 https://stackoverflow.com/questions/2777802/how-to-write-to-file-in-ruby.在上面的示例中,您可以将带有 front-matter 的文件写入项目目录,而不是向站点添加新页面。例如(红宝石):

open('somepath/#{category}/index.html', 'w') { |f|
  f << "---\n"
  f << "key: #{variable}\n"
  f << "---\n"
}

当然,你必须在推送之前在本地运行它项目到 GitHub。


B)或者你可以在本地渲染您的 Jekyll 站点并只推_site内容到 GitHub。然后您可以使用任何插件你需要。你必须创建一个.nojekyll项目根目录中的文件绕过 Jekyll 处理 https://blog.github.com/2009-12-29-bypassing-jekyll-on-github-pages/在 GitHub 上,您还必须将其添加到 Jekyll 的包含中(在_config.yml):

include: - .nojekyll

然后你可以渲染网站(jekyll build) and 推送内容_site目录到 GitHub。您可以使用一些 shell 脚本自动执行此步骤。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 jekyll 中生成针对 github 页面的类别页面 的相关文章

  • Jekyll 右对齐文本

    如何在 Jekyll 中右对齐文本 我有一段文本想要右对齐 如果是 HTML 我会这样做 style text align right 我怎样才能用 Jekyll 在 Markdown 中做到这一点 Jekyll 2 0 使用 kramdo
  • 将 Jekyll 添加到现有网站

    我有一个简单的网站 并尝试在新文件夹中添加 Jekyll 博客blog因此我已经跑了jekyll new blog在文件夹中 path 但是当我运行命令时jekyll build in path我有这些错误 jekyll build Con
  • 为什么我在安装 gem 时收到“权限被拒绝”错误?

    我正在尝试安装 Jekyll 运行后gem install jekyll我收到此错误 ERROR While executing gem Errno EACCES Permission denied usr local lib ruby g
  • 使用 Liquid 按字母顺序对帖子进行排序

    有没有办法使用 Jekyll 按字母顺序对多个帖子进行排序 我现在有这样的事情 for post in site categories threat li a href post title a li endfor 它有效 但帖子很混乱 我
  • 从文档和 jekyll 源文件夹配置提供服务的 GitHub 页面

    标准 F 遵循 ProjectScaffold 的文档具有以下结构 project docs content files output tools 生成的文档保存到output 然后被推送到gh pages branch 最近 GitHub
  • 使用curl将文件推送到GitHub存储库

    我想在 GitHub 存储库上创建 推送 新文件 而不需要git工具 因为git我的工具不可用PHP主持人 所以我做了一些研究 发现GitHub REST API https docs github com en rest 我尝试使用cur
  • 如何将 GitHub Actions 与多个存储库结合使用并部署到 GitHub Pages?

    有没有办法设置 Github Actions 来运行多个npm run build是 我想使用多个存储库并将它们设置为主站点上的不同网页 想象一下我有 3 个存储库 Main Angular App 和 React App 主存储库将有我的
  • Jekyll 无法服务(Ruby 不兼容的库版本)

    当尝试跑步时jekyll serve 它似乎构建正确 尽管有我无法解决的警告 但随后无法提供服务 jekyll build完成 但生成的文件缺少已编译的 CSS 输出来自jekyll serve Ignoring ffi 1 9 10 be
  • 无法在 Windows 10 上连接到 Jekyll 的 localhost:4000

    我正在尝试在 Windows 10 计算机上设置 Jekyll 但无法连接到由以下人员创建的网站 127 0 0 1 4000 jekyll serve or bundle exec jekyll serve 我已遵循 Julian Thi
  • 如何将 Google Analytics 跟踪 ID 添加到 GitHub Pages

    可能是一个简单的问题 但我现在对添加充满疑问谷歌分析跟踪ID to GitHub 页面 我正在使用 GitHub 自动页面生成器来创建我的 GitHub 页面 但它要求提供 Google Analytics 跟踪 ID 我尝试注册 Goog
  • Jekyll 的本地邮政资产

    我想知道其他人在使用 Jekyll 时如何组织个人帖子的资源 例如 如果帖子有图像 您是否只需将其转储到共享图像文件夹中 我真的不喜欢这样做的想法 这意味着图像与帖子完全分离 而我认为它们应该配对 我编写了一个插件 让我可以轻松地组织子目录
  • 无需 root 即可安装 Jekyll

    我想在共享服务器上建立一个 jekyll 博客 当我尝试安装 Jekyll 时 我收到 您没有写入权限 如何在没有 root 或 sudo 的情况下解决这个问题 更多详情 我在共享服务器上有空间 但没有 root 访问权限 我无法安装 Ru
  • 使用 Liquid 标记获取 Jekyll 中的今天日期

    我认为这 应该 很容易 但我无法使用 Liquid 标记在 Jekyll 页面中显示今天的日期 根据文档 https github com Shopify liquid wiki Liquid for Designers 我应该能够这样做来
  • 自定义 github 页面的预览图像

    是否可以自定义在将链接发布到 github 页面时看到的预览图像 我觉得他们专门解决了 github 存储库的问题here https docs github com en github administering a repository
  • 您可以使用 Jekyll 的 _includes 文件夹中的子目录吗?

    我的计划是在 includes目录 包括 页脚 包括 英雄 includes cta etc 当我引用那个时 include footers footer1 html 我收到以下错误 Liquid Exception Included fi
  • 我可以为 GitHub Pages 创建多个存储库吗?

    我创建了一个用于在 GitHub 上托管博客的存储库 有什么方法可以创建额外的存储库来托管多个博客 或者我仅限于一个存储库 因为用户名 github io只能使用一次吗 您可以将一个站点发布到https
  • 如何将 Jekyll 帖子分成两个不同的文件夹?

    我有一个 posts文件夹 我只是想要一种简单的方法将文件夹中的帖子分成两个不同的文件夹 并且出于纯粹的组织原因而没有任何永久链接更改 只需在您的目录中创建子目录即可 posts目录 当 Jekyll 生成永久链接时 子目录将被忽略
  • 无法访问 Github 403 错误:权限被拒绝

    我是 Git Github 的新手 所以请原谅我的困惑 问题是 我刚刚对本地存储库进行了更改 并且想推送到 Github 上的原点 特别是 gh pages 之前 我一直在使用另一个 Github 帐户 因此我更改了 user name 和
  • 从 GitHub Pages 中删除 html 扩展

    我正在使用 GitHub 页面来托管我的最新网站 http mysite github io 我想知道是否有办法从子页面末尾删除 html 扩展名 http mysite github io contact html 因为无法访问服务器 它
  • 如何从导航中排除 RSS (Jekyll-Feed)?

    导航中没有指向我的 rss feed 的实际链接 但它添加了一个 cssborder在我的菜单中另一个边框的顶部 看起来很丑 那么如何从我的导航中删除提要呢 jekyll feed gem 输出一个li用于饲料 Nav Menu

随机推荐

  • AWS Lambda在S3存储桶中创建文件夹

    我有一个 Lambda 它在文件上传到 S3 A 存储桶时运行 并将这些文件移动到另一个存储桶 S3 B 挑战在于我需要在 S3 B 存储桶内创建一个文件夹 其中包含相应的上传文件日期 并将文件移动到该文件夹 非常感谢任何帮助或想法 这可能
  • 如何使用 SQL 切换字符串中每个字母的大小写?

    我需要使用 PostgreSQL 将其转换为此 dxItw9a4 gt DXiTW9A4 有没有已经设置好的功能或方式 如果您只处理字符 A Z 则可以使用翻译 https www postgresql org docs 9 1 funct
  • 使用 AspectJ 了解调用者类

    我正在尝试模仿Spring的AspectJ Async 支持 http static springsource org spring docs 3 0 0 RELEASE spring framework reference html sc
  • Joomla 文章页面:检查已发布与否的代码

    我正在文章页面中寻找 php 代码来检查文章是否已发布 我试过这个 但它是假的 if listing 列表 已发布 1 有人能给我一些提示吗 多谢 PS Joomla 1 7 3 JReviews 2 3 使用Joomla默认内容结构 尝试
  • 使用python在多个文件中进行多个正则表达式替换[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我有一个项目 需要使用 python
  • 使用 Process.Start 和 UAC 在 .NET 中模拟

    我正在尝试从另一个 NET 程序运行程序 该程序需要使用 Process Start System Diagnostics 方法的模拟选项进行提升 用于模拟的用户是本地管理员 操作系统是2008年 UAC已开启 每当调用进程启动时 我都会收
  • 将 stargazer 与内存贪婪的 glm 对象一起使用

    我正在尝试运行以下回归 m1 glm y x1 x2 x3 x4 data df family binomial m2 glm y x1 x2 x3 x4 x5 data df family binomial m3 glm y x1 x2
  • PhpMyAdmin 自动刷新 MySQL 表

    当我在 phpmyadmin 本地页面中运行更新或选择查询时 我会通过 GO 按钮弹出表格结果 但是 为了使用服务器中的 php 文件 我必须使用刷新按钮来查看表上新传入的数据 创建视图没有帮助 或者我可能会丢失某些内容 我怎样才能像自动刷
  • 如何获取配置标志的值?

    有没有办法获得a的值配置标志 https doc rust lang org reference html conditional compilation 例如 我想获取以下值target os as str String 不诉诸以下方法i
  • MySQL:写入从节点

    假设我有一个汽车数据库 我有品牌和型号 FK 到品牌 我计划让用户跟踪他们的汽车 每辆车都有一个 FK 型号 现在 我有很多用户 我想拆分数据库来分配负载 品牌和型号表变化不大 但它们需要跨分片共享 我的想法是使用 MySQL 从品牌和型号
  • 如果我没有关闭 PHP 标签,Notepad++ 函数列表 PHP 将无法工作

    我想在我的 PHP 代码中使用 notepad 的函数列表功能 实际上 如果我编写关闭 PHP 标签 gt 则函数列表可以正常工作 但是如果我没有关闭 PHP 标签 则函数列表将无法工作 我只是想 即使我没有关闭 PHP 标签 函数列表仍然
  • Ajax表单提交,文件未提交

    我正在尝试为我的 Django 表单实现 AJAX 表单提交 这些文件是在没有 AJAX 的情况下提交的 因此服务器端的逻辑似乎可以正常工作 使用ajax 除了文件之外的其余值都会被提交 这是我正在实现的代码 AJAX表单提交 functi
  • XPS 文件的结构是什么

    我认为 XPS 文件就像 PDF 文件 但是 XPS 文件的结构是什么 类似于 PDF 文件吗 CNET 上的 XPS 与 PDF http reviews cnet com 4520 3672 7 6673717 2 html Excer
  • 自定义键盘出现约 5 秒延迟

    我正在使用 objc Xcode 7 制作自定义键盘 尝试了 6 次 问题是键盘加载速度太慢 我尝试加载完全空的UIInputViewController的观点 没有变化 我没有xib 没有大量资源 如果有人知道这个问题的任何解决方案 请写
  • 更新 Javascript 2D 数组中的元素会更新整个列[重复]

    这个问题在这里已经有答案了 我在 Javascript 中创建了一个 2D 数组 4x4 如下所示 let visited new Array 4 fill new Array 4 fill false console log visite
  • Xcode 中的垂直突出显示(列选择)

    如何在 Xcode 中突出显示矩形选区 按住 Option 键的同时单击并拖动 进行垂直突出显示 块选择时 应用正常的复制和粘贴规则 command c 和 command v
  • 如何禁用 Dexguard?

    我浏览了文档 寻找如何在运行 gradle 时禁用 dexguard 但保留插件 dexguard 我尝试修改 proguardFilegetDefaultDexGuardFile dexguard debug pro 什么也不做 但不幸的
  • 键盘关闭时的背景故障

    我面临着我的片段布局 xml 有点复杂的情况 所以层次结构如下 相对布局 无背景 ScrollView fillViewPort true 滚动条 none FrameLayout 无背景 LinearLayout 无背景 Relative
  • 如何在flutter中从ModalBottomSheet刷新ParentStatefulWidget的状态

    我是颤振新手 我对小部件的状态没有正确的了解 我正在创建一个应用程序 在其中从主屏幕向购物车添加一些商品 然后单击 Cartbutton 我打开 ModalBottomSheet 用户还可以在其中修改其购物车商品 以及当用户关闭 Modal
  • 在 jekyll 中生成针对 github 页面的类别页面

    我正在尝试使用 jekyll 为我的 github 页面博客生成类别页面 当我在本地运行时使用jekyll serve这有效 因为它可以使用我的插件 使用这个例子从文档 https jekyllrb com docs plugins gen