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

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

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

相关的字段添加

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

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

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

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

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

/*专题*/
function Getspecial(){
 $html='';
 $db = Typecho_Db::get();
 $result = $db->fetchAll($db->select()->from('table.special')->limit(5)
 );
  
  if($result){
  foreach($result as $val){

$spname = $val['spname'];
$spdep = $val['spdep'];
$spimg = $val['spimg'];
$sid = $val['sid'];

$html = $html.'
'.$spname.'

'.$spdep.'

专题
    '.Getsptext($sid).'
'; }} return $html; } function Getsptext($sid){ $html=''; $db = Typecho_Db::get(); $result = $db->fetchAll($db->select()->from('table.contents') ->where('sid = ?',$sid) ->limit(3) //->order('created', Typecho_Db::SORT_DESC) ); if($result){ foreach($result as $val){ $val = Typecho_Widget::widget('Widget_Abstract_Contents')->push($val); $post_title = htmlspecialchars($val['title']); $permalink = $val['permalink']; $html= $html.'
  • '.$post_title.'
    08-26
  • '; } } return $html; }

    专题前端展示,初步完成

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

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

    后续问题:

    专题页面

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

    404页面的判断代码参考

     
    xxxxxx
    专题内容