文章增加标签步骤
- 文章模型内增加标签字段(类型为文章标签),为方便区分,以下代码中的tagtest为标签字段标识
标签栏目配置步骤
如前台不需要显示标签栏目,则只需第一步即可
- 增加标签模型,模型内增加标签名字段(标识必须为title,类型为文本框)
- 增加标签列表页 网址: /($.id)/ 标识:channel 模板文件 tag.php
- 增加标签列表分页(标签数量不多,可以跳过此步骤),网址: /($.id)/(page).html 标识:list 模板文件 tag.php
- 增加标签详情页 网址: /($.id)/($id).html 标识:article 模板文件 tag_content.php
- 增加标签详情分页 网址: /($.id)/($id)_(page).html 标识:articlelist 模板文件 tag_content.php
通过网址自定义可以实现 /tag/标签名/ 这样的标签网址,详见 网址自定义
绑定标签栏目
- 修改标签字段内的标签栏目,文章编辑时,能查看所有标签列表
- 如开启了自动保存选项,文章保存时,标签也将同步到标签栏目内
前台显示文章标签代码
文章列表页:
{$tags=explode(;,$article.tagtest)|array_filter()}
{loop $tags as $tag}
{$tag}
{/loop}
文章页:
{$tags=explode(;,$tagtest)|array_filter()}
{loop $tags as $tag}
{$tag}
{/loop}
文章页通过标签名查询到标签的详情页 (需先配置好标签栏目):
{$thistags=explode(;,$tagtest)|array_filter()}
{loop $thistags as $thistag}
{$tagquery.cid=标签栏目id}
{$tagquery.where.title=$thistag}
{$tagarticle=cms:article:getOne($tagquery)}
{if $tagarticle}
<a href="{$tagarticle.link}">{$tagarticle.title}</a>
{/if}
{/loop}
tag查询
安装本应用后 cms:article:get 支持参数 tags
查询标签为'测试'的文章
{$query.modulehash=article} 此处需修改为对应需要查找的模型或栏目
{$query.tags.tagtest=测试}
{$articles=cms:article:get($query)}
{loop $articles as $article}
<a href="{$article.link}">{$article.title}</a>
{/loop}
查询标签为'测试'或'测试2'的文章
{$articlequery.tags.tagtest=测试\;测试2} 使用;分隔多个标签名,也支持传入数组
{$articles=cms:article:get($articlequery)}
如标签字段标识不为tagtest, 则更改为tags.xxx(xxx为字段标识)
标签栏目代码
模板tag.php内查询所有标签代码,请参考 文章查询
tag_content 显示标签下属文章代码:
{$articlequery.modulehash=article} 此处可修改为对应需要查找的模型或栏目
{$articlequery.tags.tagtest=$title}
{$tagarticles=cms:article:get($articlequery)}
{loop $tagarticles as $tagarticle}
<a href="{$tagarticle.link}">{$tagarticle.title}</a>
{/loop}
开启分页:
{$articlequery.modulehash=article} 此处可修改为对应需要查找的模型或栏目
{$articlequery.tags.tagtest=$title}
{$articlequery.page=page}
<?php
//通过当前文章,匹配到对应的分页页面
$nowarticle=C('cms:article:getOne',array('cid'=>$cid,'where'=>array('id'=>$id)));
$articlequery['pageurl']=U($cid,'articlelist',$nowarticle);
?>
{$articlequery.channelurl=$link}
{$articlequery.pagesize=1}
{$tagarticles=cms:article:get($articlequery)}
{loop $tagarticles as $tagarticle}
<a href="{$tagarticle.link}">{$tagarticle.title}</a>
{/loop}
</div>
页码:
{$pages=pagelist()}
{loop $pages as $page}
<a href="{$page.link}" class="{$page.class}">{$page.title}</a>
{/loop}
文章页找出相似文章
{if $tagtest}
{$articlequery.modulehash=article} 从全部文章模型中的文章内查找
{$articlequery.cid=$cid} 只从当前文章栏目查找
{$articlequery.tags.tagtest=$tagtest} 查询与当前文章有共同tag的文章
<?php
$articlequery['where']['id<>']=$id; //排除当前文章
?>
{$articlequery.pagesize=10}
{$articles=cms:article:get($articlequery)}
{loop $articles as $article}
<a href="{$article.link}">{$article.title}</a>
{/loop}
{/if}
文章新增时自动获取标签
安装 高级默认值
修改tagtest字段默认值项内的高级默认值为 articletags:autoTag;$;title
文章新增时,如标签为空,将自动从标题字段中匹配到已经存在的标签
如需匹配多个字段使用|分隔,如 articletags:autoTag;$;title|content
采集时标签自动保存到标签栏目
if(isset($_POST['tagtest']) && !empty($_POST['tagtest'])){
$tags=explode(';',$_POST['tagtest']);
foreach ($tags as $tag) {
if(!C('cms:article:getOne',array('cid'=>'tag栏目id','where'=>array('title'=>$tag)))){
C('cms:article:add',array('cid'=>'tag栏目id','title'=>$tag));
}
}
}