尝试1:菜单导航栏新增页,做成和主页一样的列表页(失败)
试图在关于页放一个单独的装修记录页面。
- 推测:要建立一个单独的目录页,就需要添加一个专门的文件夹,和_post、about等文件夹类似。先添加一个和它们平级的文件夹试试
-> 直接新建文件夹_code,在里面新建一个new1.md文件,随便写点东西测试
接下来只需要找出这个页面的链接,在其他页面调用试试。
推测:_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 | <% theme.navbar.menu.forEach((item) => { %> |
这里用了一个循环语句自动取出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 | # 文章隐藏:https://github.com/prinsss/hexo-hide-posts |
如果自定义的filter就叫hidden,则可以直接给文章添加属性:hidden: true一键隐藏。
- 让所有隐藏文章在存档页面和分类页面中可见,其他地方不可见,可以设置白名单:
1 | hide_posts: |
但是这个黑白名单没用啊!一键全部给我隐藏了,凑合着用吧