/** * 构造函数,初始化组件 * * @access public * @param mixed $request request对象 * @param mixed $response response对象 * @param mixed $params 参数列表 */ public function __construct($request, $response, $params = NULL) { //设置函数内部对象 $this->request = $request; $this->response = $response; $this->parameter = new Typecho_Config(); if (!empty($params)) { $this->parameter->setDefault($params); } }
/** * 标签云 * @params string 配置字符串 * @format string 格式化输出 * @return void */ public static function tagCloud($params = null, $format = '<a href="{permalink}" style="{fontsize};{color};" title="{count}篇文章">{name}</a>') { Typecho_Widget::widget('Widget_Metas_Tag_Cloud', $params)->to($tags); $list = $counts = array(); while ($tags->next()) { $list[] = array('mid' => $tags->mid, 'name' => $tags->name, 'permalink' => $tags->permalink, 'count' => $tags->count); $counts[] = $tags->count; } if (empty($counts)) { echo '暂无标签'; return; } $min_count = min($counts); $spread = max($counts) - $min_count; $params = new Typecho_Config($params); $params->setDefault(array('smallest' => 8, 'largest' => 22, 'unit' => 'pt')); if ($spread <= 0) { $spread = 1; } $font_spread = $params->largest - $params->smallest; if ($font_spread < 0) { $font_spread = 1; } $font_step = $font_spread / $spread; $html = ''; foreach ($list as $tag) { $color = 'color:#' . self::randColor(); $fontsize = 'font-size:' . ($params->smallest + ($tag['count'] - $min_count) * $font_step) . $params->unit; $html .= str_replace(array('{name}', '{permalink}', '{count}', '{fontsize}', '{color}'), array($tag['name'], $tag['permalink'], $tag['count'], $fontsize, $color), $format); } echo $html; }