在这里为doyocms文章添加简单的标签功能,主要修改的文件为/source/article.php,再就是/template/你的风格文件夹/article/下的两个文件list.html和article.html,同时再添加一个list_tag.html文件到article文件夹下,下面我们来操作下。
首先在后台栏目分类里面添加个一个字段,vchar型,255个字节。这个字段标识为tag
首先在文章的控制器article.php文件内添加一个方法,如下:
function listtag(){ $tag=$this->syArgs('tag',1); if($tag){ $w=" where tag like '%".$tag."%' "; } $order=' order by orders desc,addtime desc,id desc'; $sql='select id,tid,title,style,trait,gourl,addtime,hits,litpic,orders,price,mrank,mgold,isshow,htmlurl,htmlfile,description,user,body,tag from '.$this->db.' a left join '.$this->db.'_field b on (a.id=b.aid)'.$w.$order; $total_page=total_page($this->db."_field".$w); $this->lists = $this->Class->syPager($this->syArgs('page',0,1),7,$total_page)->findSql($sql); $pages=$this->Class->syPager()->getPager(); $this->pages=pagetxt($pages); $list_c=$this->lists; foreach($list_c as $k=>$v){ $list_c[$k]['tag']=str_ireplace($this->syArgs('tag',1),'<i>'.$this->syArgs('tag',1).'</i>',$v['tag']); $list_c[$k]['url']=html_url('article',$v); } $this->lists=$list_c; $this->positions='<a href="'.$GLOBALS["WWW"].'">首页</a> > '.$this->syArgs('tag',1); $this->display('article/list_tag.html'); } }
然后回到文章列表页list.html,再列表页添加{$v[tag']}既为调用了标签,如果你后台添加的标签自定义字段填写的时候是这样的写的“xx,xx,xx”,前台调用这样可能出现的会是“xx,xx,xx”,和后台一样的,这里需要处理下。
将{$v[tag']}换成以下代码:(我的标签是用一个空格隔开的,如果你们是用英文逗号隔开的话下面红色的地方要自己改下)
<?php $t=explode(" ",$v['tag']); foreach($t as $value){ echo "<span><a href='/index.php?c=article&a=listtag&tag=".$value."' target='_blank'>".$value."</a></span>"; } ?>
如果是内容页调用则是:
<?php $t=explode(" ",$article['tag']); foreach($t as $value){ echo "<span><a href='/index.php?c=article&a=listtag&tag=".$value."' target='_blank'>".$value."</a></span>"; } ?>
下面我们来修改添加的标签列表页list_tag.html,这个页面也普通列表页写法就是一样的啦!