阅读视图

发现新文章,点击刷新页面。

车位备案证明

车位使用权公证备案,大多数小区的车位业主仅有车位的使用权而没有产权,不能以不动产登记的方式公示产权,在转让过程 […]

路由器账号密码忘了

这事很严重嘛?但我确实试了好久都不行,确定是忘了,不过也不影响我目前的使用,大不了重置一下! 车子的油耗显示, […]

20250215

今年开头挺忙,挺好。老房那边的宽带到期了,昨晚我去把路由器和监控拔了带回家,顺便屋子里再检查一下,电源什么的能 […]

2025年2月初

大年初一6:30开车去济南(玩了3天),6个半小时到达,下午就开始逛,去趵突泉的路上经过关帝庙,进去拜拜关老爷 […]

货拉拉运输费

刚才叫了货拉拉,发货到苏州吴江,运输费便宜了80元左右(较以往,相同的收货距离,一样的车型),这次只要180元 […]

2024年末

无 以上是2024年度总结,其实我是打了几百个字的,不过被我删掉了,今年来点不一样的,颜色采用活力橙,心想事橙 […]

气动零件价格

昨日机器上的一个气缸出现点问题,弹出异常,有气无力,看来是想罢工了,经过检查,气缸本身无问题,问题出现在控制开 […]

2024年12月

2024年12月7日,村头南北两地各竖一块村碑,村里面办了隆重的揭牌仪式,每家每户出1-2人参加,微信群里面发 […]

今日喝酒

哇,今天不得了,晚饭和老丈人一瓶酒一人一半,全喝完,53度一斤的酒,厉害了。。1994年的,现在2024年,3 […]

情绪差

昨天情绪不是很好,很烂摆的样子,上午处理事情,中午饭后,大概12点,去车里躺一会,窗一扇小开着,眯着缝,冷风一 […]

徐州客户

周三上午9点收到客户信息,疑似产品问题,我问了几个可能发生的情况,都说没有,那就奇怪了,我想着干脆去一趟吧,无锡到徐州,5小时路程,10点出发的,买了10只大闸蟹礼盒(5雌5雄,55元/只),到客户公司已经下午3点,我检查了一下产品,确实坏了,但不是我方原因造成的,给对方指出了问题所在,给我的感觉是,客户没觉得这事很严重,那就好。拉着我一顿闲扯,说晚上要带我去吃当地有名的烧烤,徐州烧烤,喝点酒,拿了瓶黄酒出来,他说“只能喝1两,剩下的你喝”,结果他真是喝了一两,脸红了。。烧烤味道不错,肉质很新鲜,价格也便宜,上了好几盘羊肉串,没吃完。周四一早就回来。


首页,有过留言的博友链接做了一些修改,把头像改成名字显示,因为有些头像看着不知道是谁,名字就非常清晰直接,看着清爽,留言数量大于等于50条的,颜色为蓝底,大于等于100条的,颜色为红底。

20241110

2024年11月10日,晚饭喝了半瓶红酒,回到家就开始头疼,洗完澡在沙发上躺了一会,没想到睡着了,儿子来叫我,我居然没听见,从来不会这样,不知道怎么回事,难道喝了劣质酒?睡了一觉后还是那样,不舒服,今早起来还是有点,上午又睡了2小时,直到中午饭后才算好。下次红酒还是不要喝了,不会分辨好坏。

今天尧哥去拈花湾秋游,周末给他准备了一些吃的,放书包,带了一些零钱,天气不错,暖阳,应该玩的很快乐。上周有人抓到一只甲鱼,买来红烧,尧哥要吃的,不排斥,6年级暑假,小家伙长高不少,除了虾不大愿意吃,其它都还行。

小区里面有好多野猫,越生越多,有个别爱猫人士在夜间角落里偷偷喂着一些吃的。业主群里面好些人都比较反感这事,包括我,白天因为上班上学,所以没什么感觉,晚上,猫们就开始出来闲逛,有的在负一停车场瞎逛,有的甚至把人家的车搞坏(哪里的线路咬断抓破),还有好几只在垃圾桶旁转悠,我有几次去扔垃圾,那个猫都不怕人的,往人这边走,还龇牙咧嘴叫,像要马上跳到身上来一样,我感觉很讨厌,有一只这样,被我打了一下,踢它,跑掉了,如果是小孩的话,非常危险,病毒不说,爪子很锋利,只得跟物业多反应反应怎么处理这些猫。

关于博友链接

抱歉各位,我换一种方式显示博友的链接,之前是单独一个页面显示,现在改为首页隐藏显示,点击★下划显示来留言过的所有访问者,并有相关链接,右上角是留言次数,自动记录,按留言时间顺序排列,原有页面的链接全部移至浏览器收藏夹并多端同步,会不定期浏览访问,嗯,如果您对我的这个操作介意的话,可以单方面删除我,愿博客和折腾继续,愿生活愉快,一切顺利。


2024年11月28日更新:

为了实现 仅显示最近6个月内有新留言的访客,我们需要对代码进行一些修改,基于评论时间过滤出符合条件的评论者,并只显示最近6个月内有新留言的访客。这个逻辑是通过获取每个评论的时间,并与当前时间进行比较来实现的。

主要修改点:

  1. 计算6个月前的时间戳
  2. 过滤掉6个月前没有新留言的访客
  3. 显示符合条件的访客信息

完整代码修改:

php
<?php
// 获取所有评论并按照评论ID排序
$comments = get_comments(array(
    'number' => 99999, // 获取评论数量
    'status' => 'approve', // 只获取已经被批准的留言
    'order' => 'DESC', // 倒序排列
    'author__not_in' => array(1), // 排除博主的ID,这里假设博主ID是1
));

// 用来存储不重复的评论者信息及留言次数
$unique_comments = array();

// 获取当前时间戳(秒级)
$current_time = current_time('timestamp');

// 定义6个月的时间戳(6个月 = 180天)
$six_months_ago = strtotime('-6 months', $current_time);

// 遍历评论
foreach ($comments as $comment) {
    $email = $comment->comment_author_email;
    $comment_date = strtotime($comment->comment_date); // 获取评论的时间戳

    // 如果评论日期在6个月前,则跳过
    if ($comment_date < $six_months_ago) {
        continue;
    }

    // 如果没有记录该评论者的信息,则添加到数组中
    if (!isset($unique_comments[$email])) {
        $unique_comments[$email] = array(
            'count' => 0,
            'url' => $comment->comment_author_url,
            'comment' => $comment,
            'latest_comment_date' => $comment_date // 记录最新留言的时间
        );
    }

    // 更新该评论者的最新留言时间
    if ($comment_date > $unique_comments[$email]['latest_comment_date']) {
        $unique_comments[$email]['latest_comment_date'] = $comment_date;
    }

    // 增加该邮箱的留言次数
    $unique_comments[$email]['count']++;
}

// 显示每个评论者的名称和留言次数
foreach ($unique_comments as $email => $data) {
    $count = $data['count'];
    $comment = $data['comment'];
    $comment_author_url = $data['url'];
    $comment_author_name = esc_html($comment->comment_author); // 获取评论者名称并进行转义
    $latest_comment_date = $data['latest_comment_date'];

    // 判断该评论者是否超过6个月没有新留言
    if ($latest_comment_date < $six_months_ago) {
        // 如果该评论者的最新留言时间超过6个月,则不显示名字和链接
        continue;
    }

    // 生成评论者名称和链接的代码
    echo '<div style="position: relative; display: inline-block; margin-right: 20px; padding: 0;">';
    if (!empty($comment_author_url)) {
        echo '<a rel="nofollow" target="_blank" href="' . home_url() . "/goto?url=" . base64_encode($comment_author_url) . '">';
    }

    // 显示评论者的名称
    echo '<span style="font-size: 1em; padding: 0 3px;">' . $comment_author_name . '</span>';

    if (!empty($comment_author_url)) {
        echo '</a>';
    }

    // 根据留言次数设置背景颜色和字体颜色
    if ($count >= 50) {
        // 背景为红色,字体为白色
        echo '<span style="font-size: 0.7em; color: #fff; background: #f7828a; border-radius: 2px;">'
            . esc_html($count) . '</span>';
    } elseif ($count > 30) {
        // 背景为绿色,字体为白色
        echo '<span style="font-size: 0.7em; color: #fff; background: #90b47f; border-radius: 2px;">'
            . esc_html($count) . '</span>';
    } else {
        // 默认样式
        echo '<span style="font-size: 0.7em; color: #29d;">'
            . esc_html($count) . '</span>';
    }

    echo '</div>';
}
?>

代码分析:

  1. 计算6个月前的时间戳
    • 使用 strtotime('-6 months', $current_time) 获取当前时间戳的6个月前的时间戳,用于后续判断。
  2. 遍历评论并过滤
    • 在遍历所有评论时,通过 strtotime($comment->comment_date) 获取每条评论的时间戳,并与 $six_months_ago 进行比较。
    • 如果评论的时间戳早于6个月前,则跳过该评论(即不显示该评论者的名字和链接)。
  3. 记录每个评论者的最新留言时间
    • 对于每个评论者,保留其最新的评论时间,并与后续的评论进行比较,确保只显示最近6个月内有留言的评论者。
  4. 判断评论者是否符合条件
    • 在显示评论者信息之前,检查评论者的最新留言时间,如果该时间早于6个月前,则跳过显示。
  5. 生成评论者的显示内容
    • 如果评论者符合条件,会显示评论者的名字、链接以及留言次数。留言次数的不同背景颜色根据条件设置:
      • 50条及以上:红色背景
      • 30条至50条:绿色背景
      • 小于30条:默认字体蓝色

2024进入11月

已入11月,时间总是一晃而过,这几天暖阳,很舒服,出行是外套+T恤,短袖收起来,牛仔裤也换了稍厚的,看了日历,1月底过年,还有3个月不到,这一年一年的过的好快,近期虽说有点忙,但还是有点忙里偷闲,自我放松,昨日上午去老同学家喝茶聊天,他工作自由,基本在家,所以我以后多了一个喝茶聊天的去处,下午回公司处理事情。由于每天要送儿子去学校,7点到校,所以到公司基本是7点半左右,今天有点困,到公司停好车后,把座椅躺下,眯睡了一会,结果睡着了,醒来已是8点40,赶紧起来回办公室,泡杯红茶,开始工作。

上周把车子的4条轮胎换了,3年7万4千公里,花纹磨浅,想着年底出差要跑高速,还是换了吧。原厂米其林换成马牌。新轮胎果然好使,开起来感觉稍有轻巧,制动距离也稍有变短,能感受出来。胎噪未感觉有变化。

尧哥七年级期中考试全班第五,数学全班第一。离他自己的目标还有差距,还需努力。

Hugo添加搜索

感谢:ZISHU ,分享了“用原生 js 给网站写个搜索功能”这篇文章。

大体步骤差不多,但是按照上面链接操作,打开搜索页面为空。以下为修改后的顺序。

具体操作步骤:

1,在主题\layouts文件夹,新建index.json文件,此时本地预览http://localhost:1313/index.json查看,如有显示标题,地址这些就表示这一步成功。

{{- $.Scratch.Set "posts" slice -}}
{{- range where .Site.RegularPages "Type" "post" -}}
    {{- $.Scratch.Add "posts" (dict "title" .Title "permalink" .Permalink "summary" .Summary "content" .Content) -}}
{{- end -}}
{{- $.Scratch.Get "posts" | jsonify -}}

2,在\layouts\page文件夹,新建search.html文件,每个主题文件有差异,可参考同主题的single.html

{{ partial "header.html" . }}
<main>
  <div class="header">
   
  </div>

  <article class="post-content markdown-body">
    {{ .Site.Params.postHeaderContent | safeHTML }}
    {{ .Content }}

    <form id="searchForm">
      <input autocomplete="off" type="text" id="searchInput" placeholder="输入搜索内容..." required>
      <button type="submit">Saerch</button>
    </form>

    <ul id="resultsList" style="list-style-type: none;padding: 20px 0;word-wrap: break-word;color: #6b7280;"></ul>
 
  </article>
  <script>
    let data = [];
  
    // 从 /index.json 加载数据
    fetch('/index.json')
      .then(response => response.json())
      .then(json => {
        data = json; // 保存数据
      })
      .catch(error => console.error('Error loading data:', error));
  
    document.getElementById('searchForm').addEventListener('submit', function (event) {
      event.preventDefault();
      const query = document.getElementById('searchInput').value.toLowerCase();
      const resultsList = document.getElementById('resultsList');
  
      resultsList.innerHTML = ''; // 清空之前的结果
  
      if (query) {
        const results = data.filter(item =>
          item.title.toLowerCase().includes(query) ||
          item.summary.toLowerCase().includes(query) ||
          item.content.toLowerCase().includes(query) // 添加全文内容的搜索
        );
  
        if (results.length > 0) {
          results.forEach(item => {
            const listItem = document.createElement('li');
            const truncatedContent = getTruncatedContent(item.content, query);
            listItem.innerHTML = `
                  <a href="${item.permalink}" target="_blank">${highlightKeywords('<h999 style="color: #f7828a;margin-right: 10px;">➤</h999> ' + item.title, query)}</a>
                  <p>${highlightKeywords(truncatedContent, query)}</p>
              `;
            resultsList.appendChild(listItem);
          });
        } else {
          resultsList.innerHTML = '<li>没有找到相关内容。</li>';
        }
      }
    });
  
    function highlightKeywords(text, query) {
      const regex = new RegExp(`(${query})`, 'gi');
      return text.replace(regex, '<span class="keyword-highlight">$1</span>');
    }
  
    function getTruncatedContent(content, query) {
      const index = content.toLowerCase().indexOf(query);
      if (index === -1) return highlightKeywords(content, query); // 如果没有找到关键词,返回高亮的内容
  
      const start = Math.max(0, index - 50); // 前50个字符
      const end = Math.min(content.length, index + query.length + 50); // 后50个字符
      const truncated = content.substring(start, end);
  
      // 添加省略号
      if (start > 0) {
        return '...' + highlightKeywords(truncated, query); // 在开头添加省略号
      } else if (end < content.length) {
        return highlightKeywords(truncated, query) + '...'; // 在结尾添加省略号
      }
  
      return highlightKeywords(truncated, query); // 返回高亮的截断内容
    }
</script>
</main>

3,在\content,新建search.md

---
slug: search
title: search
layout: search
---

4,在config.toml设置

[[params.socials]]
name = "搜索"
link = "/search/"

[outputs]
  home = ["HTML", "JSON"]

5,最后一步,添加相应的css

#searchForm {
  margin-top: 20px;
  display: flex;
  align-items: center;
  max-width: 800px;
  width: 100%;
}
#searchForm input {
  flex: 1;
  height: 50px;
  padding: 0 15px;
  outline: none;
  border: 2px solid #ccc;
  border-radius: 3px;
}
#searchForm input:focus {
  border-color: #666;
}
#searchForm button {
  height: 50px;
  padding: 0 15px;
  cursor: pointer;
  background: #c4c3c3;
  outline: none;
  border: 2px solid #ccc;
  margin-left: 10px;
  border-radius: 3px;
  width: 20%;
}

#resultsList {
  padding-left: 18px;
}
#resultsList .keyword-highlight {
  background: #f6f694;
  padding: 0 2px;
  border-radius: 3px;
}
#resultsList > li {
  margin-bottom: 20px;
  padding-bottom: 20px;
  border-bottom: 2px solid #ccc;
}
#resultsList > li > a {
  color: #6b7280;
}
#resultsList * {
  padding: 0;
  margin: 0;
  font-size: inherit;
  color: inherit;
}

至此hugo即可。

 

禁海外

抱歉,为了避免海外的恶意骚扰(恶意请求+cc等),从现在开始,无限期关闭海外访问。

把主题首页改成两栏显示

今天周末,在家休息,外面阴雨绵绵,上午8:30送儿子去课外培训班,就在家附近,走过去5分钟,上课到11:30接,然后回家跟老婆两人看了一部电影,烧了一壶热水,喝茶,中午饭后睡了一小会,被骚扰电话吵醒,我生气的在电话里骂人。。真的很烦,最近银行贷款的营销电话好多,一天能接好几个,周末都要打来!!睡不着了。。起床折腾主题代码,想把首页文章显示为两栏(Wordpress首页改成两栏显示),没有着急敲键盘,思考了一会,突然灵感来了,马上整起来,嗯,好像效果还行,心情瞬间大好。

第一步:在index.php的 <?php if(have_posts()):?> 下一行添加<div class=”posts-container” style=”display: flex;flex-wrap: wrap;gap: 5px 40px;”> ,在 <ol class=”page-navigator”>上一行添加</div>。意思就是,给它定义一个框,并且给它style css。

第二步:在css末尾添加以下代码,在宽屏和窄屏上都能正确显示。

.post{width: calc(50% - 20px);box-sizing: border-box;} 
 
/* Switch to single-column layout on mobile */
@media (max-width: 800px) {.post {width: 100%;}}

第三步:把single,page和search的class=”post”添加style=”width: 100%;”

20241025

最近一直在小范围修改hugo主题,目前已经成为我满意的样子,以后应该不再大改主题,昨天下午帽子叔打电话来要求GONG AN BEI AN,加了微信,我也是第一时间做处理并发消息告知,到昨天傍晚收到短信已通过,这速度绝对赞。

Wordpress的站点,基本每天有人来攻击,就这么好玩嘛,目前也没什么应对方案,暂时还能顶住,就是查看对方ip怎么经常变更,反正发现一次加一次黑名单。安全方面,hugo确实可能要好很多,不排除以后再次全部使用hugo的可能,至少现在已经做好完全准备。上一次由hugo转回wp是因为主题even由于长期未更新导致不兼容最新的hugo版本,经过这一年多的摸索,我认为只有让主题精简(删除一些不必要的东西,主题文件清晰),简单一些才适配新的版本,也做了一些主题的测试,证明我的想法目前来看没有问题,当然,升级版本前先备份一下旧版本,万一出什么问题还能换回去。

目前两种程序都在使用着,两者都喜欢。

Hugo一些设置

做了一些安全设置:

阻止hugo站点被rss订阅 ✔

阻止hugo站点被搜索引擎收录 ✔

阻止hugo站点被其它网站iframe嵌入 ✔

设置hugo站点防盗链 ✔

手动设置站内第三方链接不显示网址并用base64跳转 ✔

<a rel="nofollow" target="_blank" href="#" onclick="window.location.href=atob('aHR0cHM6Ly90aGlyZC1wYXJ05rLmNvbS8='); return false;">链接文本</a>

假设您的链接是 https://third-party-link.coom,转换结果为 aHR0cHM6Ly90aGlyZC1wYXJ05rLmNvbS8=

极简没什么不好,用来自己简单的记录挺好。

修改主题

对于折腾主题这事,有点强迫症,一定要弄到yes,反正自己觉得满意,舒服了才行。一直喜欢清爽一点的界面,能隐藏的就隐藏,能不显示就不显示:

1,在首页加入最近留言者的头像,并用base64显示其站点链接,方便回访。

2,留言者头像用下拉的形式显示。

3,头像设置半透明opacity: 0.6

4,header同样设置半透明opacity: 0.6

5,整站字体加大

折腾暂时停止,又或许过段时间有新的想法出来,然后再小范围打磨。

这运气

这运气是没谁了,加油卡积分换的康师傅方便面,想吃,拆一盒吧,有2把叉子,加量不加价嘛?

这运气吧,挺奇怪。

有次出差,中午吃面,鸡腿面,付了一个鸡腿的钱,服务员端来面,上面摆着一个鸡腿,吃了一半,发现碗底还有一个。。这可如何是好?

有次在kfc买了一个鸡肉汉堡套餐,服务员拿给我,当时比较饿,没注意,打开直接就吃起来,吃了两口发现不对呀,不是鸡肉,是牛肉汉堡,服务员也是不好意思什么什么的。。有点忘了,好像当时还补给我一个鸡肉汉堡的。

有次下班后,在路边捡到一个钻戒,钻石挺小个,刮一下挺硬,至今还在我办公抽屉里,有人出价1000,我没卖,我不知道真假,真的倒也算了,如果是假的,那我就坑人了,我不愿意做那事,所以一直放着。

。。。

❌