给typecho主题做内容专题功能,打造文章系列

admin 轻心小站 关注 LV.19 运营
发表于Typecho博客程序版块 教程

当网站发展到一定的时候,站内文章会显得很多,显得很杂乱,一个很好的网站专题功能,不仅可以帮助栏目分类更好的聚集网站内容,还能大幅度提升用户的垂直粘性,提升SEO哦spimes主题里面,先通过插件主题启

当网站发展到一定的时候,站内文章会显得很多,显得很杂乱,一个很好的网站专题功能,不仅可以帮助栏目分类更好的聚集网站内容,还能大幅度提升用户的垂直粘性,提升SEO哦

spimes主题里面,先通过插件主题启用的时候,初始化创建专题id,专题名称,专题描述和专题封面的数据库数据

  1. $db->query('ALTER TABLE `'.$db->getPrefix().'contents` ADD `sid` INT(10) DEFAULT NULL;');
  2. $sql = "CREATE TABLE `{$prefix}special` (
  3. `sid` int UNSIGNED NOT NULL AUTO_INCREMENT,
  4. `spname` varchar(255) COMMENT '专题名称',
  5. `spdep` varchar(255) COMMENT '专题描述',
  6. `spimg` varchar(255) COMMENT '专题封面',
  7. `cid` int,
  8. PRIMARY KEY (`sid`)
  9. )DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci";
  10. $db->query($sql);

相关的字段添加

这里要注意的是sid为专题sid,并且在文章contents添加一个sid,来索引匹配专题的sid即可

QQ图片20220427133232.png

通过插件来实现添加专题,并且在发布文章的时候,选择专题

QQ图片20220427133349.png

前端在定义一个获取专题函数,一个获取专题下面的文章栏目

  1. /*专题*/
  2. function Getspecial(){
  3. $html='';
  4. $db = Typecho_Db::get();
  5. $result = $db->fetchAll($db->select()->from('table.special')->limit(5)
  6. );
  7. if($result){
  8. foreach($result as $val){
  9. $spname = $val['spname'];
  10. $spdep = $val['spdep'];
  11. $spimg = $val['spimg'];
  12. $sid = $val['sid'];
  13. $html = $html.'<div class="sp_item" >
  14. <div class="entry-container">
  15. <div class="block-image feaimg">
  16. <a class="block-fea scrollLoading" title="'.$spname.'" style="background-image:url('.$spimg.')"><i class="mask"></i>
  17. </a></div>
  18. <header class="entry-header"><span class="entry-title"><a href="http://001.0f1.cn/106.html">'.$spname.'</a></span></header>
  19. <div class="entry-summary ss"><p>'.$spdep.'</p></div></div><span class="lirekan"><i class="ri-record-circle-line ri-lg"></i> 专题 </span><ul class="lire">'.Getsptext($sid).'</ul>
  20. </div>';
  21. }}
  22. return $html;
  23. }
  24. function Getsptext($sid){
  25. $html='';
  26. $db = Typecho_Db::get();
  27. $result = $db->fetchAll($db->select()->from('table.contents')
  28. ->where('sid = ?',$sid)
  29. ->limit(3)
  30. //->order('created', Typecho_Db::SORT_DESC)
  31. );
  32. if($result){
  33. foreach($result as $val){
  34. $val = Typecho_Widget::widget('Widget_Abstract_Contents')->push($val);
  35. $post_title = htmlspecialchars($val['title']);
  36. $permalink = $val['permalink'];
  37. $html= $html.'<li><a href="'.$permalink.'"><i class="ri-git-commit-line ri-lg"></i> '.$post_title.'</a><div class="liretime">08-26</div></li>';
  38. }
  39. }
  40. return $html;
  41. }

专题前端展示,初步完成

QQ图片20220427133822.png

zt1.png

后续问题:

专题页面

由于考虑到无论是改变路由,还是新建页面都会涉及到动态参数的url,这样就不符合收录,因此还是觉得借用404页面去延伸专题页面,既保持了url页面的优化友好度,也保证了参数传值

404页面的判断代码参考

  1. <?php
  2. global $id;
  3. global $zt_on;
  4. $id='';
  5. $str=$_SERVER["REQUEST_URI"];
  6. if(preg_match('/zt/i',$str)){
  7. if(preg_match('/\d+/',$str,$arr)){
  8. $id=$arr[0];
  9. $zt_on=true;
  10. $html='<div class="col-md-9 contpost">
  11. <header>
  12. <div class="widget-list-title"><i class="ri-calendar-todo-line ri-lg"></i> <span>xxxxxx</span></div>
  13. </header>
  14. <div class="row" id="content">专题内容</div>
  15. </div>';
  16. $this->need('header.php');
  17. $this->need('assets/special - list.php');
  18. $this->need('sidebar.php');
  19. }}
  20. else{
  21. $this->need('header.php');
  22. $this->need('assets/404set.php');
  23. }
  24. ?>

文章说明:

本文原创发布于探乎站长论坛,未经许可,禁止转载。

题图来自Unsplash,基于CC0协议

该文观点仅代表作者本人,探乎站长论坛平台仅提供信息存储空间服务。

评论列表 评论
发布评论

评论: 给typecho主题做内容专题功能,打造文章系列

粉丝

0

关注

0

收藏

0

已有0次打赏