目录/时间线 Typecho 自定义模板 作者: Chuwen 时间: 2021-07-04 分类: PHP 1 条评论 ## 使用说明 如果你使用的是 Typecho 默认主题,那么你可以在你博客目录下 `/www/wwwroot/nowtime.cc/usr/themes/default` 新建一个文件名为 `time-line.php` 然后将下述**模板源码**粘贴进去保存 > 其它主题可以参照着你主题目录下的 `page.php` 源码来修改我下面写的**模板源码** 然后去博客后台 -> 管理 -> 独立页面 -> 新增,选择模板 ![](https://cdn.nowtime.cc/2021/07/04/623357964.png) 然后“发布页面即可” ### 效果预览 https://nowtime.cc/time-line.html ![https://nowtime.cc/time-line.html](https://cdn.nowtime.cc/2021/07/04/3640778185.png) ## 模板源码 ```php need('header.php'); ?> title() ?> content(); ?> need('comments.php'); ?> widget("Widget_Contents_Post_Recent", "pageSize=100000000000000")->to($post); $recentPost = array(); while ($post->next()) { $recentPost[] = array( "title" => $post->title, "link" => $post->permalink, "time" => $post->created, ); } ?> need('sidebar.php'); ?> need('footer.php'); ?> ```
强烈推荐 EditorMD for Typecho 插件 作者: Chuwen 时间: 2021-01-08 分类: 唠嗑闲聊 评论 # 强烈推荐 EditorMD for Typecho 插件 是基于 https://pandao.github.io/editor.md/ 做的插件 基本上的 EditorMD 上实现的都能够使用,并且后台的编辑器也更换了 ![](https://cdn.nowtime.cc/2021/01/08/1313693641.png) 项目地址:[https://github.com/DT27/EditorMD](https://github.com/DT27/EditorMD) # 我自己感觉的优点 - 支持粘贴图片上传,再也不用截图然后保存到本地再上传了!!!!
让 Typecho 文章支持 Emoji 表情输出 作者: Chuwen 时间: 2020-11-23 分类: 唠嗑闲聊 评论 > 转载自:https://blog.laoooo.cn:88/emoji.html > 原因,最近换上了 macOS ?,自带的输入打出一些关键字会提示一些 Emoji 表情,写博客的时候用上感觉能使页面好看?、亲切些 --- Emoji ===== Emoji表情随着IOS的普及和微信的支持越来越常见,比如这些比较常见的表情:⭐️ ✨ ⚡️。所谓Emoji就是一种在Unicode位于`\u1F601`-`\u1F64F`区段的字符。这个显然超过了目前常用的UTF-8字符集的编码范围u0000-uFFFF。在 MySQL 中,UTF-8只支持最多 3 个字节,而 emoji 是 4 个字节。 原理 == Typecho默认不支持emoji表情,其实不是程序的锅,而是由于编码的问题,只需要将默认的数据库编码utf8修改为utf8mb4即可,当然别忘了,utf8mb4编码只有在PHP5.5以后才支持。 目标 == 简单两步即可让typecho支持emoji 方法 == 1.修改数据库编码 进入`PhpMyadmin`,选择您的数据库,操作 → 整理 → 选择`utf8mb4_unicode_ci` 2.修改数据库表编码 直接运行以下`sql`语句 ```sql alter table typecho_comments convert to character set utf8mb4 collate utf8mb4_unicode_ci; alter table typecho_contents convert to character set utf8mb4 collate utf8mb4_unicode_ci; alter table typecho_fields convert to character set utf8mb4 collate utf8mb4_unicode_ci; alter table typecho_metas convert to character set utf8mb4 collate utf8mb4_unicode_ci; alter table typecho_options convert to character set utf8mb4 collate utf8mb4_unicode_ci; alter table typecho_relationships convert to character set utf8mb4 collate utf8mb4_unicode_ci; alter table typecho_users convert to character set utf8mb4 collate utf8mb4_unicode_ci; ``` 3.修改数据库配置文件 网站`根目录`数据库配置文件`config.inc.php`,下面是示例: ```php $db->addServer(array ( 'host' => localhost, 'user' => 'youruser', 'password' => 'yourpassword', 'charset' => 'utf8mb4', //修改这一行 utf8 -> utf8mb4 'port' => 3306, 'database' => 'yourdatabase' ), Typecho_Db::READ | Typecho_Db::WRITE); ```
Typecho 使用 CommentToDingtalk (评论推送至钉钉)插件遇到的问题 作者: Chuwen 时间: 2020-04-06 分类: PHP 3 条评论 > CommentToDingtalk 项目地址:https://github.com/MoLeft/CommentToDingtalk # 运行报以下错误 ``` Using $this when not in object context Error: Using $this when not in object context in //nowtime.cc/usr/plugins/CommentToDingtalk/Plugin.php:123 Stack trace: #0 /nowtime.cc/usr/plugins/CommentToDingtalk/Plugin.php(87): CommentToDingtalk_Plugin::getWebhook('https://oapi.di...', 'SECca000000000...') #1 /nowtime.cc/var/Typecho/Plugin.php(489): CommentToDingtalk_Plugin::send(Object(Widget_Feedback), NULL) #2 /nowtime.cc/var/Widget/Feedback.php(146): Typecho_Plugin->__call('Widget_Feedback...', Array) #3 /nowtime.cc/var/Widget/Feedback.php(336): Widget_Feedback->comment() #4 /nowtime.cc/var/Typecho/Router.php(138): Widget_Feedback->action() #5 /nowtime.cc/index.php(30): Typecho_Router::dispatch() #6 {main} ``` # 原因 在静态方法中调用非静态方法,导致其报错 # 解决方法 将 **静态方法** 中调用 **非静态方法** `$this->` 改成 `(new self())->` 即可 以下是修改后的 `Plugin.php`,你可以直接复制以下代码进行替换: ``` finishComment = array('CommentToDingtalk_Plugin', 'send'); return '插件已激活,请设置相关信息'; } /* 禁用插件方法 */ public static function deactivate() { return '插件已禁用'; } /* 插件配置方法 */ public static function config(Typecho_Widget_Helper_Form $form) { $webhook = new Typecho_Widget_Helper_Form_Element_Text('webhook', null, '', 'Webhook地址', '请将钉钉中的webhook地址填到此处'); $secret = new Typecho_Widget_Helper_Form_Element_Text('secret', null, '', 'Secret密钥', '请将钉钉中的Secret密钥填到此处'); $form->addInput($webhook); $form->addInput($secret); } /** * 个人用户的配置面板 * * @access public * @param Typecho_Widget_Helper_Form $form * @return void */ public static function personalConfig(Typecho_Widget_Helper_Form $form) { } /* 插件实现方法 */ public static function render() { } /* 推送通知方法 */ public static function send($post) { //获取系统配置 $options = Helper::options(); //判断是否配置webhook地址 if (is_null($options->plugin('CommentToDingtalk')->webhook)) { throw new Typecho_Plugin_Exception(_t('Webhook地址未配置')); } //判断是否配置secret密钥 if (is_null($options->plugin('CommentToDingtalk')->secret)) { throw new Typecho_Plugin_Exception(_t('Secret密钥未配置')); } $webhook = $options->plugin('CommentToDingtalk')->webhook; $secret = $options->plugin('CommentToDingtalk')->secret; $text = "###您收到了一条新评论\n文章标题:{$post->title}\n评论作者:{$post->author}\n评论内容:{$post->text}"; $data = [ 'msgtype' => 'actionCard', 'actionCard' => [ 'title' => '您收到了一条新评论', 'text' => $text, 'btnOrientation' => 1, 'hideAvatar' => 0, 'singleTitle' => '查看详情', 'singleURL' =>$post->permalink ] ]; //我修改了这里 //我修改了这里 //我修改了这里 $response = (new self())->request((new self())->getWebhook($webhook,$secret), json_encode($data)); //我修改了这里 //我修改了这里 //我修改了这里 if($response['errcode'] !== 0){ //发送失败,记录日志 $log = @file_get_contents('./error.log'); file_put_contents('./error.log','['.date("Y-m-d H:i:s").']'.$response['errmsg']); } } /* Curl请求精简版 */ private function request($url, $postData) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json;charset=utf-8')); curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 线下环境不用开启curl证书验证, 未调通情况可尝试添加该代码 // curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0); // curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0); $data = curl_exec($ch); curl_close($ch); return json_decode($data, true); } /* webhook地址 */ private function getWebhook($webhook, $secret) { list($msec, $sec) = explode(' ', microtime()); $timestamp = (float) sprintf('%.0f', (floatval($msec) + floatval($sec)) * 1000); $sign = $this->signSecret($timestamp, $secret); $webhook_url = "{$webhook}×tamp={$timestamp}&sign={$sign}"; return $webhook_url; } /* 计算签名 */ private function signSecret($timestamp,$secret){ $stringToSign = $timestamp."\n".$secret; return urlencode(base64_encode(hash_hmac('sha256', $stringToSign, $secret, true))); } } ```
博客域名更换为NowTime.cc,博客程序由WordPress换成Typecho 作者: Chuwen 时间: 2017-05-29 分类: 唠嗑闲聊 评论 > 有人说,我的博客域名 `blog.ogdn.net` 有什么寓意,感觉不太好记,好吧 `ogdn.net` 这域名是在去年九月份在阿里云域名交易市场买的,当时觉得挺短的(4位),而且价格才几块钱,所以当时就买了,到期时间是十月下旬;所以这次换成有些寓意的域名 `NowTime.cc` 是不是更好记了些,`Now` 的意思是现在,`Time`的意思是时间,现在网主要取前面那个单词(Now)的意思,就是这样:) > 博客程序换成 `Typecho`,因为我觉得她轻,才500多k,麻雀虽小,五脏俱全,还有WordPress转Typecho工具,所以博客内容,分类等等都完好无损的转移过来了。