您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

PHP问题汇总(一)

2024/5/31 18:08:42发布24次查看
1 typecho插件digg 搭建typecho时,在官网下载了一个插件digg是一个顶踩插件,安装好后在后台可以激活并配置,但是前台没变化。这是怎么回事? 开始以为时自己配置不对,反反复复了插件使用教程没搞明白怎么回事,于是怀疑代码有 问题 ,去看了插件编写教程
1 typecho插件digg搭建typecho时,在官网下载了一个插件digg是一个顶踩插件,安装好后在后台可以激活并配置,但是前台没变化。这是怎么回事?
开始以为时自己配置不对,反反复复了插件使用教程没搞明白怎么回事,于是怀疑代码有问题,去看了插件编写教程,helloword。详细在这里。
1. 插件分析插件功能,是为了实现用户登录后,在后台菜单导航栏输出欢迎话语,所以我们要做的,就是找找后台菜单文件,是否有提供到此类功能的插件接口。一般来说,用哪个接口来实现功能,是要看我们要写的插件,用到哪一方面的功能,或者实现哪些效果来判断,再到对应的文件去寻找。很幸运,我们在 /admin/menu.php 中找到了以下接口,大概在第7行左右:navbar(); ?>这就是我们要在激活插件里要写入的接口代码。插件接口,常以下面的两种方式出现:typecho_plugin::factory()->function();$this->pluginhandle()->function();我们找好接口代码后,下面便开始编写我们的插件代码。2. 编写代码平常编写代码的顺序,基本按照默认办法出现的顺序来编写。所以,我们先开始写激活接口代码:public static function activate(){ typecho_plugin::factory('admin/menu.php')->navbar = array('helloworld_plugin', 'render');}
在插件得activate函数里会让程序得一个插件函数调用自己插件里得函数render。
但是digg插件里得activate函数除了操作数据库外没有其他得代码,这怎么影响到前台的显示了。继续看代码。digg里有一个output函数
/** * 输出方法 * * @access public * @return void or array */ public static function output($return = false, $dump = false) { //防止未激活插件输出错误信息,可注释掉 $all = typecho_plugin::export(); if (!array_key_exists('digg', $all['activated'])) { return; } //获取相关设置 $setting = helper::options()->plugin('digg'); $items = explode('|', $setting->items); $items_echo = explode('|', $setting->items_echo); if (count($items) != count($items_echo) || empty($items[0])) { echo 插件项目配置错误; return; } //digg 提交地址 $post_url = typecho_common::url('action/digg', helper::options()->index); //digg 表情地址 $img_url = helper::options()->pluginurl . '/digg/img/'; //获取日志digg数据 $db = typecho_db::get(); $cid = typecho_widget::widget('widget_archive')->cid; $rows = $db->fetchall($db->select('item', 'count')->from('table.digg')->where('cid = ?', $cid)); $result = array(); $result['items'] = @array_combine($items, $items_echo); $result['imgurl'] = $img_url; $result['cid'] = $cid; $result['count'] = 0; foreach ($rows as $k => $v) { if (isset($result['items'][$v['item']])) { $result['count'] += $v['count']; $result[0][$v['item']] = $v; } } //print_r($result); unset($rows); //输出js及css echo $setting->src; /* 用法1 按插件自定义格式输出 也可自己修改输出格式*/ if (!$return) { echo ; foreach ($items as $k => $v) { echo ''; echo $result['items'][$v]; echo '(' . (isset($result[0][$v]) ? $result[0][$v]['count'] : 0 ) . ')'; } echo '
'; return; } /* 用法2 将digg数据以数组形式返回,自定义html结构 可外加参数true查看返回数据*/ if ($dump) var_dump($result); //var_dump return $result; }
里面注释了用法1和用法2。这才明白过来,使用用法1
放到前台得模板页面里,如下图
这样前台首页的每个文章就有顶踩功能了。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product