2019独角兽企业重金招聘Python工程师标准>>>

一、前言:

标签云是博客、CMS类系统的常见功能,读者可以根据标签快速的查找和浏览自己喜欢的文章。个人很喜欢Typecho的简洁,但对于后台不能控制前台标签栏目的显示还是略表遗憾。令人高兴的是Typecho的插件机制可以让Typecho Fans很容易的开发出自己想要的插件,于是决定自己开发一个标签云插件。

该插件已被Typecho官方merge。

二、资料:

  • Typecho官方文档,在此不做过多介绍。

三、效果:

四、使用帮助:

  1. 下载插件
  2. 将插件上传到/usr/plugins/目录
  3. 在需要使用标签云的模板中放入如下PHP代码 Typecho_Plugin::factory(‘usr/themes/sidebar.php’)->tagCloud();
  4. 登陆后台,在菜单“控制台->插件”中启用插件,并根据自己需求进行配置即可轻松使用
  5. 如果标签云模板结构不同,重写插件中render()方法即可

代码如下:(点击下载)

<?php
if (!defined('__TYPECHO_ROOT_DIR__')) exit;
/** * MyTagCloud插件,后台控制前台标签智能显示 * * @package MyTagCloud * @author Ma Yanlong * @version 1.0.0 * @link http://www.mayanlong.com */
class MyTagCloud_Plugin implements Typecho_Plugin_Interface {// 是否启用const ENABLE_YES = 10;  //启用const ENABLE_NO = 20;  //不启用// 是否显示没使用的标签const ZERO_SHOW = 10;   //显示const ZERO_HIDE = 20;   //不显示/** * 激活插件方法,如果激活失败,直接抛出异常 * * @access public * @return void * @throws Typecho_Plugin_Exception */public static function activate() {// factory('name') name是插件接口名称 可以取任何名称 为方便寻找我们以文件目录命名Typecho_Plugin::factory('usr/themes/sidebar.php')->tagCloud = array('MyTagCloud_Plugin', 'process');}/** * 禁用插件方法,如果禁用失败,直接抛出异常 * * @static * @access public * @return void * @throws Typecho_Plugin_Exception */public static function deactivate(){}/** * 获取插件配置面板 * * @access public * @param Typecho_Widget_Helper_Form $form 配置面板 * @return void */public static function config(Typecho_Widget_Helper_Form $form) {// 是否启用$compatibilityMode = new Typecho_Widget_Helper_Form_Element_Radio('enable', array(self::ENABLE_YES   =>  _t('启用'),self::ENABLE_NO   =>  _t('不启用')), self::ENABLE_YES, _t('是否启用该插件'), _t("启用后将这段PHP代码放到需要显示标签的模板中即可 Typecho_Plugin::factory('usr/themes/sidebar.php')->tagCloud(); "));$form->addInput($compatibilityMode->addRule('enum', _t('必须选择一个模式'), array(self::ENABLE_YES, self::ENABLE_NO)));// 是否显示没使用的标签$compatibilityMode = new Typecho_Widget_Helper_Form_Element_Radio('zero', array(self::ZERO_SHOW   =>  _t('显示'),self::ZERO_HIDE   =>  _t('不显示')), self::ZERO_SHOW, _t('显示没使用的标签'), _t("默认显示所有标签,请根据自己需要进行设置。"));$form->addInput($compatibilityMode->addRule('enum', _t('必须选择一个模式'), array(self::ZERO_SHOW, self::ZERO_HIDE)));// 前台显示栏目标题$title = new Typecho_Widget_Helper_Form_Element_Text('title', NULL, '标签', _t('前台显示栏目标题'));$form->addInput($title);// 最多显示标签数量$limit = new Typecho_Widget_Helper_Form_Element_Text('limit', NULL, '20', _t('最多显示标签数量'));$form->addInput($limit);}/** * 个人用户的配置面板 * * @access public * @param Typecho_Widget_Helper_Form $form * @return void */public static function personalConfig(Typecho_Widget_Helper_Form $form){}/** * 插件实现方法 * * @access public * @return void */public static function process() {$enable = Typecho_Widget::widget('Widget_Options')->plugin('MyTagCloud')->enable;$zero = Typecho_Widget::widget('Widget_Options')->plugin('MyTagCloud')->zero;$title = Typecho_Widget::widget('Widget_Options')->plugin('MyTagCloud')->title;$limit = (int)Typecho_Widget::widget('Widget_Options')->plugin('MyTagCloud')->limit;// 是否启用if ($enable != self::ENABLE_YES) {return;}// 查找满足条件的标签$tags = Typecho_Widget::widget('Widget_Metas_Tag_Cloud', array('sort' => 'count','ignoreZeroCount' => $zero == self::ZERO_HIDE ? true : false,'desc' => true,'limit' => $limit));// 是否有标签if ($tags->have()) {self::render($title, $tags);}}/** * 输出Html标签 * * @access public * @return void */public static function render($title, $tags) {// 拼接并输出html$html = '<section class="widget"> <h3 class="widget-title">'. $title .'</h3> <div class="widget-list">';while ($tags->next()) {$html .= "<a href='{$tags->permalink}' style='display: inline-block; margin: 0 5px 5px 0;'>{$tags->name}</a>";}$html .=    '</div> </section>';echo $html;}}

本文首发于马燕龙个人博客,欢迎分享,转载请标明出处。
马燕龙个人博客:http://www.mayanlong.com
马燕龙个人微博:http://weibo.com/imayanlong
马燕龙Github主页:https://github.com/yanlongma

转载于:https://my.oschina.net/imayanlong/blog/702660

Typecho - MyTagCloud标签云插件相关推荐

  1. 基于HTML5 SVG可互动的3D标签云jQuery插件

    svg3dtagcloud.js是一款基于HTML5 SVG的3D标签云jQuery插件.该3D标签云插件不需要额外的CSS样式,可使用鼠标与标签进行互动,并提供很多参数来控制标签云的外观. 效果演示 ...

  2. [jQuery]3D效果的标签云

    刚才看了篇园友关于如何自定义标签云的文章,心痒痒自己也想弄一个,其实原理非常简单,就是动态load标签页里的标签,按需要的格式重新动态生成DOM结构,再通过第三方的js插件(他们用的是Google V ...

  3. Hexo Butterfly 主题功能拓展 - 标签云 云养猫

    记录一下正在使用的两款Hexo插件 效果请看这里~ TaQini Hexo-Tag-Cloud Hexo 标签云插件:官方文档 安装流程 进入到 hexo 的根目录,然后在 package.json ...

  4. Hexo(sakura)自定义标签云

    自定义标签云 一.效果 二.演示 1. 新建tags资源文件夹 2. 创建样式文件 3. 局部显示标签云 一.效果 之前引入的标签云插件,看似很炫酷,实则有点鸡肋,今天忍不住又开始魔改前端css了 H ...

  5. yunfile php,【转载】Typecho又拍云文件管理插件UpyunFile升级

    自上次发布又拍云插件UpyunFile已过去两年,这期间得到很多用户的反馈,存在不少的小问题,但由于时间关系,一直没有时间更新和维护插件,伴随本次博客升级,重新整理原插件源码,修复曾出现过的Bug,经 ...

  6. 标签云的实现(使用jQuery插件jqcloud)

    jqcloud 是jQuery的一个插件,用于生成标签云. github地址:https://github.com/lucaong/jQCloud 用法 1.确保引入jQuery 2.引入js和css ...

  7. 非插件修改 WordPress 标签云样式

    对于 WordPress 常见的一种修改标签云字体样式的办法,是直接修改 wp-includes 目录下面的 category-template.php 文件,不过这种做法不推荐使用,毕竟是系统文件, ...

  8. 基于纯 CSS3 技术实现美观的标签云效果

    标签云是博客的标配功能,能够清晰的呈现博客的各个关键词和主题.在这个效果中,您将学习如何使用 CSS3 技术创建一个效果精美的标签云效果. 作为实验项目,使用了 CSS3 渐变,阴影和最重要的的 CS ...

  9. 添加分类、标签云(球状)、彩色标签

    添加分类页面 1.新建页面 $ cd your-hexo-site $ hexo new page categories 在终端窗口下,定位到 Hexo 站点目录下.使用 hexo new page ...

  10. python + wordcloud实现任意形状标签云

    公司最新App--AirOh已经上线三个多月,积累了首批原始用户.后台分别对用户和功能进行了统计分析,得到了丰富的数据结果.除了常规的表格.曲线.柱状图及污染热图等展示形式,亦对数据进行标签化处理,得 ...

最新文章

  1. linux安装android sdk
  2. 中国反渗透膜产业竞争现状与投资战略决策报告2021-2027年版
  3. 永冻土层matlab图片,俄永冻土层现冰河期洞熊,站立可达3.5米,身体各器官保存完好...
  4. openresty配置部署
  5. 六、利用frp穿透连接内网的linx系统和windows系统
  6. jfinal使用shiro注解大体流程
  7. 和我一起来分析某药品仓储管理系统 卡死现象
  8. python排序元组两个元素_在python中对具有3个元素的元组列表进行排...
  9. Struts2 转换器
  10. 图像算法五:【图像小波变换】多分辨率重构、Gabor滤波器、Haar小波
  11. c++ 状态模式(state)
  12. css叠层_CSS 理解样式层叠
  13. VFP9 连接mysql代码示例
  14. Android 常用颜色值及半透明效果配置
  15. DataMatrix识别及定位项目笔记(2)——基于QT+libdmtx-0.7.5的DataMatrix解码及定位
  16. Bupt桌游馆--共享资源清单
  17. Strange Fractions(奇怪的分数)-数论
  18. iOS开发 - ANPs推送通知
  19. 加入滚动条的html代码
  20. MyBatis(2)

热门文章

  1. Ugly Windows
  2. hdu 1232 畅通工程(并查集)
  3. 关于WP7上音乐播放的嫉妒恶心的一些规则和解决方案。
  4. java内存分配分析/栈内存、堆内存
  5. Mac菜单栏设置教程,教你更改顺序或隐藏APP图标
  6. nginx 增加stream_realip_module模块
  7. HDU 5015 233 Matrix 矩阵快速幂
  8. vue+vuex的应用笔记
  9. Web安全与Rational AppScan入门
  10. 《Flume日志收集与MapReduce模式》一2.1 下载Flume