Typecho文章单独输出标签缩略名和标签名

typecho教程 2020-08-25

当前文章缩略图插件逻辑是这样的:如果文章含有图片附件(可能有多张图片),则直接取附件中的第一张图片作为文章缩略图;否则根据文章的分类缩略名取缩略图;如果上述两种情况的缩略图均不存在,则从插件中已存在的图片中随机一张图片作为当前文章的缩略图。

我一直打算把文章缩略图插件逻辑更改为:如果文章含有图片附件(可能有多张图片),则直接取附件中的第一张图片作为文章缩略图;否则根据文章标签中第一个标签的缩略名取缩略图;如果上述两种情况的缩略图均不存在,则根据文章的分类缩略名取缩略图,如果上述三种情况的缩略图均不存在,最后从插件中已存在的图片中随机一张图片作为当前文章的缩略图。

以上是我要取文章输出标签缩略名和标签名的原因,下面我讲解一下方法,先看以下代码:

  function tags($widget, $split = ',', $default = NULL)

  {

  /* 取出tags /

  if ($widget->tags) {

  $result = array();

  foreach ($widget->tags as $tag) {

  $result[] = $tag['permalink'];

  }

  echo implode($split, $result);

  } else {

  echo $default;

  }

  }

以上是网上一篇单独输出tag链接地址的文章,这个跟Tag相关,然后在模版中调用方法

即可实现Tag链接地址输出

按照以上的方法,因Tag有标签名(name)和标签缩略名(slug)字段,那么单独输出文章标签缩略名方法为:

  function tags($widget, $split = ',', $default = NULL)

  {

  /* 取出tags /

  if ($widget->tags) {

  $result = array();

  foreach ($widget->tags as $tag) {

  $result[] = $tag['slug'];

  }

  echo implode($split, $result);

  } else {

  echo $default;

  }

  }

然后在模板中调用方法

即可,如果你只想取文章标签中的第一个标签,则将方法改为:

  function tags($widget, $default = NULL)

  {

  /* 取出tags /

  if ($widget->tags) {

  foreach ($widget->tags as $tag) {

  echo $tag['slug'];

  break;

  }

  } else {

  echo $default;

  }

  }

若需要单独输出标签名,则将以上标签缩略名方法中的“slug”改为“name”即可。

by 彭智勇原创

评论 (0)
    Top