博客装修记录3:独立的装修目录

迂回宛转,很不简洁。

装修 1.1k字

尝试1:菜单导航栏新增页,做成和主页一样的列表页(失败)

试图在关于页放一个单独的装修记录页面。

  1. 推测:要建立一个单独的目录页,就需要添加一个专门的文件夹,和_post、about等文件夹类似。先添加一个和它们平级的文件夹试试

        -> 直接新建文件夹_code,在里面新建一个new1.md文件,随便写点东西测试

        接下来只需要找出这个页面的链接,在其他页面调用试试。

  1. 推测:_config.yml文件夹的nemu页面读取地址应该是url: (从source开始)/_code/; 类似于/archives/、/friends/、/about/

    而ejs文件里面的地址写法应该是

1
<a href="<%= url_for(post.next.path) %>" class="nav__link">

        估计链接需要到对应的变量(比如post下的next属性,的path属性)里面找。这个变量的属性是在哪定义的?——好吧,似乎是官方文档。看来不太能手动定义了。

        那默认页面,比如说about页,链接是什么呢?

        我顺藤摸瓜找到/themes/主题/layout/_partial/source/下面的header.ejs,里面关于导航菜单的跳转链接,写法是这样的:

1
2
<% theme.navbar.menu.forEach((item) => { %>
<a href="<%= url_for(item.url) %>" class="dropdown-menu button"><%= item.name %></a>

        这里用了一个循环语句自动取出menu里面的所有item。好狡猾,我还是不知道这些item的名字是什么。猜一下吧,直接用<%= url_for(about.url) %>这样可以吗?

        随便找一个ejs插入一个超链接代码。就放post-content的title(h1标签)下面吧。如下:

1
<a href="<%= url_for(about.url) %>"> 试图跳转到about </a>

        坏了。报错了。主页可以加载,但是点不了任何链接。语法有问题吗?报错显示about is not defined,好吧,猜错了。

        换一个地方找找吧。左上角的总是直通首页链接了吧?让我看看。左上角的首页链接写法是:

1
<%= url_for('/') %>

        来了!!!!这不就是我推测2最开头的那个吗?

        这样的话,about页的链接写法就应该是:

1
<%= url_for('/about/') %>

        让我试试。

        果然!!!!

        那么回到我新创建的页面_code,把about换成它试试:

1
<a href="<%= url_for('/_code/') %>"> 试图跳转到code </a>

        好吧,打开的空白页面写着Cannot GET /_code/。这和我之前的标签页报错一模一样。 用代码hexo new page code也一样。


        找了一下资料,标签页的问题应该是没有设置front-matter,需要添加type: "tags"。试试标签页能不能奏效

        ——可以,但是只能有一个页面。

        index页面只能有一个。

        天嘞,只能找别的方法试试了。


尝试2:主页发布文章隐藏,在新增页面通过链接跳转到特定文章

相对路径跳转文章。默认在_post下的可以直接写文件名。

这个。。。只能在md文件里面用呢。直接放进文字里面就行了。

1
{% post_link '文章文件名(不要后缀)' '文章标题(可选)' %}

接下来只要看看主页怎么隐藏文章就行了。

参考网页

bash安装:

1
npm install hexo-hide-posts

在项目根目录的_config.yml中添加下面内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 文章隐藏:https://github.com/prinsss/hexo-hide-posts
hide_posts:
enable: true # 是否启用 hexo-hide-posts
filter: hidden # 隐藏文章的 front-matter 标识,也可以改成其他你喜欢的名字
noindex: true # 为隐藏的文章添加 noindex meta 标签,阻止搜索引擎收录
# 设置白名单,白名单中的 generator 可以访问隐藏文章
# 常见的 generators 有:index, tag, category, archive, sitemap, feed, etc.
# allowlist_generators: []
allowlist_generators: ['*']

# 设置黑名单,黑名单中的 generator 不可以访问隐藏文章
# 如果同时设置了黑名单和白名单,白名单的优先级更高
# blocklist_generators: ['*']
blocklist_generators: ['index', 'feed']

如果自定义的filter就叫hidden,则可以直接给文章添加属性:hidden: true一键隐藏。

  • 让所有隐藏文章在存档页面和分类页面中可见,其他地方不可见,可以设置白名单:
1
2
3
hide_posts:
enable: true
allowlist_generators: ['archive', 'category']

但是这个黑白名单没用啊!一键全部给我隐藏了,凑合着用吧