Typecho - MyTagCloud标签云插件
2019独角兽企业重金招聘Python工程师标准>>>
一、前言:
标签云是博客、CMS类系统的常见功能,读者可以根据标签快速的查找和浏览自己喜欢的文章。个人很喜欢Typecho的简洁,但对于后台不能控制前台标签栏目的显示还是略表遗憾。令人高兴的是Typecho的插件机制可以让Typecho Fans很容易的开发出自己想要的插件,于是决定自己开发一个标签云插件。
该插件已被Typecho官方merge。
二、资料:
- Typecho官方文档,在此不做过多介绍。
三、效果:
四、使用帮助:
- 下载插件
- 将插件上传到/usr/plugins/目录
- 在需要使用标签云的模板中放入如下PHP代码 Typecho_Plugin::factory(‘usr/themes/sidebar.php’)->tagCloud();
- 登陆后台,在菜单“控制台->插件”中启用插件,并根据自己需求进行配置即可轻松使用
- 如果标签云模板结构不同,重写插件中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标签云插件相关推荐
- 基于HTML5 SVG可互动的3D标签云jQuery插件
svg3dtagcloud.js是一款基于HTML5 SVG的3D标签云jQuery插件.该3D标签云插件不需要额外的CSS样式,可使用鼠标与标签进行互动,并提供很多参数来控制标签云的外观. 效果演示 ...
- [jQuery]3D效果的标签云
刚才看了篇园友关于如何自定义标签云的文章,心痒痒自己也想弄一个,其实原理非常简单,就是动态load标签页里的标签,按需要的格式重新动态生成DOM结构,再通过第三方的js插件(他们用的是Google V ...
- Hexo Butterfly 主题功能拓展 - 标签云 云养猫
记录一下正在使用的两款Hexo插件 效果请看这里~ TaQini Hexo-Tag-Cloud Hexo 标签云插件:官方文档 安装流程 进入到 hexo 的根目录,然后在 package.json ...
- Hexo(sakura)自定义标签云
自定义标签云 一.效果 二.演示 1. 新建tags资源文件夹 2. 创建样式文件 3. 局部显示标签云 一.效果 之前引入的标签云插件,看似很炫酷,实则有点鸡肋,今天忍不住又开始魔改前端css了 H ...
- yunfile php,【转载】Typecho又拍云文件管理插件UpyunFile升级
自上次发布又拍云插件UpyunFile已过去两年,这期间得到很多用户的反馈,存在不少的小问题,但由于时间关系,一直没有时间更新和维护插件,伴随本次博客升级,重新整理原插件源码,修复曾出现过的Bug,经 ...
- 标签云的实现(使用jQuery插件jqcloud)
jqcloud 是jQuery的一个插件,用于生成标签云. github地址:https://github.com/lucaong/jQCloud 用法 1.确保引入jQuery 2.引入js和css ...
- 非插件修改 WordPress 标签云样式
对于 WordPress 常见的一种修改标签云字体样式的办法,是直接修改 wp-includes 目录下面的 category-template.php 文件,不过这种做法不推荐使用,毕竟是系统文件, ...
- 基于纯 CSS3 技术实现美观的标签云效果
标签云是博客的标配功能,能够清晰的呈现博客的各个关键词和主题.在这个效果中,您将学习如何使用 CSS3 技术创建一个效果精美的标签云效果. 作为实验项目,使用了 CSS3 渐变,阴影和最重要的的 CS ...
- 添加分类、标签云(球状)、彩色标签
添加分类页面 1.新建页面 $ cd your-hexo-site $ hexo new page categories 在终端窗口下,定位到 Hexo 站点目录下.使用 hexo new page ...
- python + wordcloud实现任意形状标签云
公司最新App--AirOh已经上线三个多月,积累了首批原始用户.后台分别对用户和功能进行了统计分析,得到了丰富的数据结果.除了常规的表格.曲线.柱状图及污染热图等展示形式,亦对数据进行标签化处理,得 ...
最新文章
- linux安装android sdk
- 中国反渗透膜产业竞争现状与投资战略决策报告2021-2027年版
- 永冻土层matlab图片,俄永冻土层现冰河期洞熊,站立可达3.5米,身体各器官保存完好...
- openresty配置部署
- 六、利用frp穿透连接内网的linx系统和windows系统
- jfinal使用shiro注解大体流程
- 和我一起来分析某药品仓储管理系统 卡死现象
- python排序元组两个元素_在python中对具有3个元素的元组列表进行排...
- Struts2 转换器
- 图像算法五:【图像小波变换】多分辨率重构、Gabor滤波器、Haar小波
- c++ 状态模式(state)
- css叠层_CSS 理解样式层叠
- VFP9 连接mysql代码示例
- Android 常用颜色值及半透明效果配置
- DataMatrix识别及定位项目笔记(2)——基于QT+libdmtx-0.7.5的DataMatrix解码及定位
- Bupt桌游馆--共享资源清单
- Strange Fractions(奇怪的分数)-数论
- iOS开发 - ANPs推送通知
- 加入滚动条的html代码
- MyBatis(2)