首页 > 其他分享 >[Joe3] 利用Halo后台注入功能定制Joe3主题页脚内容

[Joe3] 利用Halo后台注入功能定制Joe3主题页脚内容

时间:2024-11-02 17:18:49浏览次数:7  
标签:footer Joe3 originalJoeFooter 页脚 joe Halo nbsp

1. 前言

如果你正使用Halo博客系统并选择了Joe3主题,你会发现其主题页脚设计非常丰富,也非常美观,可能也是我们选择Joe3的原因吧。但是每个人实际的需求是不同的,默认模板肯定不能都满足,你肯定也希望在页脚部分能有更多的自定义内容。相较于传统方法——直接在模板文件中修改这些信息,这种方法虽然简单,但每次信息更新时都需要手动编辑代码,显得既繁琐又缺乏灵活性。为了最简便的实现符合自身需求的功能,可以充分利用Halo系统的后台注入功能来动态生成页脚内容,这样既无需修改配置文件,也不影响主题文件后续的更新。

2. 优化前后对比

演示站点:Dangks' Blog (欢迎访问我的个人博客)

3. 实现步骤

3.1 确保 DOM 完全加载

首先,我们需要确保在 DOM 完全加载后再执行 JavaScript 代码。这可以通过监听 DOMContentLoaded 事件来实现:

 document.addEventListener('DOMContentLoaded', function () {
   // 在这里编写你的 JavaScript 代码
 });

接下来,我们需要通过querySelector方法获取页面中现有的 .joe_footer 元素。这个元素是我们要替换内容的目标:

 var originalJoeFooter = document.querySelector('.joe_footer');
 ​
 if (!originalJoeFooter) {
   console.error('Original .joe_footer element not found');
   return;
 }

3.3 创建新的 HTML 内容

然后,我们定义一个新的 HTML 内容字符串,包含所有需要显示的信息。这里是一个简化的内容结构(实操可以直接复制Joe3的页脚内容进行修改,也可以完全自己写一个内容样式):

 var newContent = `
   <div class="joe_container">
     <div class="item">
       <p>
         © 2022 - 2024 <a href="http://example.com" target="_blank" rel="noopener noreferrer">Your Blog Name</a>
         <br>
         <a class="icp" href="https://beian.miit.gov.cn" target="_blank" rel="noopener noreferrer nofollow">备案号</a>
         &nbsp;&nbsp;
         <a href="https://icp.gov.moe/?keyword=your_icp_number" target="_blank">萌ICP备号</a>
       </p>
       <p class="site_powered">
         Powered by <a href="https://halo.run/" target="_blank" rel="noopener noreferrer">Halo</a>
       </p>
       <p class="site_driven">
         本站点由 <a href="https://cloud.tencent.com" target="_blank" rel="noopener noreferrer nofollow">腾讯云</a> 提供云服务
       </p>
       <div class="site_life">
         已运行 <strong class="joe_run__day">0</strong> 天 <strong class="joe_run__hour">0</strong> 时 <strong class="joe_run__minute">0</strong> 分 <strong class="joe_run__second">0</strong> 秒
       </div>
       <p class="site_police">
         <a href="https://beian.mps.gov.cn/#/query/webSearch" target="_blank" rel="noopener noreferrer nofollow">公安备案号</a>
       </p>
     </div>
     <div class="side-col">
       <div class="item">
         <a class="rss" href="/rss.xml" target="_blank" rel="noopener noreferrer"><i class="joe-font joe-icon-rss-fill"></i>&nbsp;RSS</a>
         <a href="/sitemap.xml" target="_blank" rel="noopener noreferrer">站点地图</a>
       </div>
     </div>
   </div>
 `;

3.4 替换原有内容

最后,我们将新的内容注入到现有的 .joe_footer 元素中:

 originalJoeFooter.innerHTML = newContent;

4. 完整代码示例

将上述代码片段组合起来,完整的 JavaScript 代码如下:

 <script>
 document.addEventListener('DOMContentLoaded', function () {
   // 获取原始的 .joe_footer 元素
   var originalJoeFooter = document.querySelector('.joe_footer');
 ​
   if (!originalJoeFooter) {
     console.error('Original .joe_footer element not found');
     return;
   }
 ​
   // 创建新的 HTML 内容
   var newContent = `
     <div class="joe_container">
       <div class="item">
         <p>
           © 2022 - 2024 <a href="http://example.com" target="_blank" rel="noopener noreferrer">Your Blog Name</a>
           <br>
           <a class="icp" href="https://beian.miit.gov.cn" target="_blank" rel="noopener noreferrer nofollow">备案号</a>
           &nbsp;&nbsp;
           <a href="https://icp.gov.moe/?keyword=your_icp_number" target="_blank">萌ICP备号</a>
         </p>
         <p class="site_powered">
           Powered by <a href="https://halo.run/" target="_blank" rel="noopener noreferrer">Halo</a>
         </p>
         <p class="site_driven">
           本站点由 <a href="https://cloud.tencent.com" target="_blank" rel="noopener noreferrer nofollow">腾讯云</a> 提供云服务
         </p>
         <div class="site_life">
           已运行 <strong class="joe_run__day">0</strong> 天 <strong class="joe_run__hour">0</strong> 时 <strong class="joe_run__minute">0</strong> 分 <strong class="joe_run__second">0</strong> 秒
         </div>
         <p class="site_police">
           <a href="https://beian.mps.gov.cn/#/query/webSearch" target="_blank" rel="noopener noreferrer nofollow">公安备案号</a>
         </p>
       </div>
       <div class="side-col">
         <div class="item">
           <a class="rss" href="/rss.xml" target="_blank" rel="noopener noreferrer"><i class="joe-font joe-icon-rss-fill"></i>&nbsp;RSS</a>
           <a href="/sitemap.xml" target="_blank" rel="noopener noreferrer">站点地图</a>
         </div>
       </div>
     </div>
   `;
 ​
   // 替换原有内容
   originalJoeFooter.innerHTML = newContent;
 });
 </script>

5. 结语

通过上述步骤,不仅能够保持Joe3主题页脚的优雅外观,还能确保信息的及时更新,减少维护成本,让网站管理更加高效便捷。这样一来,无论是版权信息的更改还是其他细节的调整,都可以轻松实现,而无需担心影响到整体的设计美感。也没有改变系统的配置文件,丝毫不用担心后续主题文件的更新。这种方法不仅提高了代码的灵活性,对于看不明白项目代码的非开发类博主还增加了可操作性。希望本文对你有所帮助!

标签:footer,Joe3,originalJoeFooter,页脚,joe,Halo,nbsp
From: https://blog.csdn.net/weixin_52269666/article/details/143453318

相关文章

  • python在word的页脚插入页面
    1、插入简易页码importwin32com.clientaswin32fromwin32com.clientimportconstantsimportosdoc_app=win32.gencache.EnsureDispatch('Word.Application')#打开word应用程序doc_app.Visible=Truedoc=doc_app.Documents.Add()footer=doc.Sections(1).Foo......
  • halo配置踩坑过程小记
    写在最前:​ 终于搞定了最后的一步域名解析配置,其实动态博客的折腾程度也不低于当时的hexo吧,也可能当时的痛苦过程已经忘了。。整理一下思路,记录一下配置过程走过的坑。​ 我是从hexo用了半年想折腾点新玩意儿的,其实hexo配置自动化部署之后也挺方便的,反正都是本地编辑写作,后台啥......
  • j-modal的 slot="footer" 失效 v-if判断页脚按钮
     <j-modal:visible="visible":title="title"@cancel="close":fullscreen="true">..........<spanslot="footer">   <div:key="row.KfjqFlag"v-if="row.KfjqFlag==''......
  • Halo 开发者指南——容器私有化部署
    华为云SWR私有化部署镜像构建dockerbuild-thalo-dev/halo:2.20.0.上传镜像镜像标签sudodockertag{镜像名称}:{版本名称}swr.cn-south-1.myhuaweicloud.com/{组织名称}/{镜像名称}:{版本名称}sudodockertaghalo-dev/halo:2.20.0swr.cn-south-1.myhuaweicloud.c......
  • Halo 开发者指南——项目运行、构建
    准备工作环境要求OpenJDK17LTSNode.js20LTSpnpm9IntelliJIDEAGitDocker(可选)名词解释工作目录指Halo所依赖的工作目录,在Halo运行的时候会在系统当前用户目录下产生一个halo-next的文件夹,绝对路径为~/halo-next。里面通常包含下列目录或文件:​db​:存放H......
  • Oracle数据库配置大页脚本
    编辑脚本su-oracle$vihugepages_settings.sh------------------------------------------#!/bin/bash##hugepages_settings.sh##Linuxbashscripttocomputevaluesforthe#recommendedHugePages/HugeTLBconfiguration#onOracleLinux##Note:Thisscri......
  • Python爬虫:网页脚注与引用的智能捕手
    标题:Python爬虫:网页脚注与引用的智能捕手在数字化信息的海洋中,网页脚注和引用是丰富内容、提供来源的重要方式。然而,对于Python爬虫而言,如何精准捕捉这些细微信息,成为了一项挑战。本文将深入探讨Python爬虫在处理网页中的脚注和引用时的策略与技巧,通过实例代码展示其高效性......
  • Halo 建站 | 基于 Token 的持久化登录机制实践
    ......
  • wkhtmltopdf 生成带页眉页脚的pdf
    系统环境:ubuntu初次安装 sudoapt-getinstallwkhtmltopdf尝试命令:wkhtmltopdf--javascript-delay5000--page-width210mm--page-height297mm--margin-top20mm--margin-bottom20mm--margin-left20mm--margin-right20mm--header-center"文档标题-[date]"-......
  • 将状态文本添加到(文本)页脚
    我正在尝试创建一个enditor,其中页脚包含左侧的常用绑定和右侧的一些状态信息,例如行号。文本中的页脚非常简单,所以我想扩展它,但我无法看到我的标签和基本页脚的绑定。这是我的代码:classMyFooter(Footer):DEFAULT_CSS="""MyFooter{.right-label{......