Typecho - MyTagCloud标签云插件
来源:互联网 发布:windows 10 经典主题 编辑:程序博客网 时间:2024/05/16 12:03
一、前言:
标签云是博客、CMS类系统的常见功能,读者可以根据标签快速的查找和浏览自己喜欢的文章。个人很喜欢Typecho的简洁,但对于后台不能控制前台标签栏目的显示还是略表遗憾。令人高兴的是Typecho的插件机制可以让Typecho Fans很容易的开发出自己想要的插件,于是决定自己开发一个标签云插件。
该插件已被Typecho官方merge。
二、资料:
- Typecho官方文档,在此不做过多介绍。
三、效果:
四、使用帮助:
- 下载插件
- 将插件上传到/usr/plugins/目录
- 在需要使用标签云的模板中放入如下PHP代码 Typecho_Plugin::factory(‘usr/themes/sidebar.php’)->tagCloud();
- 登陆后台,在菜单“控制台->插件”中启用插件,并根据自己需求进行配置即可轻松使用
- 如果标签云模板结构不同,重写插件中render()方法即可
代码如下:(点击下载)
<?phpif (!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
0 0
- Typecho - MyTagCloud标签云插件
- Typecho 主题与插件
- Typecho插件-相关阅读TEReadMore
- typecho页面进度条加载插件
- typecho极验验证插件
- 测试typecho的sitemap插件
- typecho
- Typecho微语插件-正式版1.0
- Typecho插件-数据库备份TEDbBak 1.0
- Typecho微语插件-更新至1.01
- typecho插件TECopyright-更新到1.02
- 阿里云CentOS安装typecho
- typecho插件ArticleProtect-给文章加上访问权限
- 球状标签云插件
- 阿里云 ecs 配置 typecho wordpress多站点
- D3.js写的标签云插件
- Typecho数据库设计
- Typecho PHP 编码规范
- 为什么涨工资的是我和他
- UWP开发入门系列笔记之(一):UWP初览
- 剑指offer(二十五)之把数组排成最小的数
- 1010.一元多项式求导(25)
- cxf web service 解决返回的json格式数据乱码问题
- Typecho - MyTagCloud标签云插件
- linux 帮助命令
- XmlSerializer的使用
- c++第四次作业
- java --HashMap和HashTable区别
- QT网络编程笔记
- CDOJ--卿学姐与基本法(线段树+离散化+区间查询)
- Markdown编辑器使用方法
- 与人工智能相关的创业公司或团队