文章标签 [articletags]

为文章增加标签,方便查询相同标签文章

文章增加标签步骤

  1. 文章模型内增加标签字段(类型为文章标签),为方便区分,以下代码中的tagtest为标签字段标识

标签栏目配置步骤

如前台不需要显示标签栏目,则只需第一步即可

  1. 增加标签模型,模型内增加标签名字段(标识必须为title,类型为文本框)
  2. 增加标签列表页 网址: /($.id)/ 标识:channel 模板文件 tag.php
  3. 增加标签列表分页(标签数量不多,可以跳过此步骤),网址: /($.id)/(page).html 标识:list 模板文件 tag.php
  4. 增加标签详情页 网址: /($.id)/($id).html 标识:article 模板文件 tag_content.php
  5. 增加标签详情分页 网址: /($.id)/($id)_(page).html 标识:articlelist 模板文件 tag_content.php

通过网址自定义可以实现 /tag/标签名/ 这样的标签网址,详见 网址自定义

绑定标签栏目

  1. 修改标签字段内的标签栏目,文章编辑时,能查看所有标签列表
  2. 如开启了自动保存选项,文章保存时,标签也将同步到标签栏目内

前台显示文章标签代码

文章列表页:

{$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.tag=$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));
        }
    }
}
应用信息
标识articletags
版本号1.6
文件大小7.9KB
发布时间2021-12-24
更新时间2023-10-17
PHP兼容--
作者 ClassCMS
安装
请在网站后台-应用商店内安装此应用.
也可在演示站点-应用商店内中安装并测试.
更新记录
1.6逻辑优化
1.5兼容低版本php
1.4bug修复
1.3bug修复
1.2性能优化,更新后,请前往文章模型标签字段内同步标签数据,否则无法查询到标签下属文章
1.1代码优化