typecho

typecho调用二级分类文章group by incompatible with sql_mode=only_full_group_by错误

分析 调用typecho二级分类文章列表显示data base query error 代码目录下搜索"Database Server Error",找到文件var/Typecho/Common.php 282行附近 var/Typecho/Common.php if ($isException && $exception instanceof Typecho_Db_Exception) { $code = 500; @error_log($message); //覆盖原始错误信息 $message = 'Database Server Error'; if ($exception instanceof Typecho_Db_Adapter_Exception) { $code = 503; $message = 'Error establishing a database connection'; } else if ($exception instanceof Typecho_Db_Query_Exception) { $message = 'Database Query Error'; // 增加va...

php7使用Coalescing运算符替代isset

简洁 使用coalescing运算(??)代替isset来减少代码量,省去不必要的代码。在获得某个变量的时候,可以直接给出默认值,而不是先判断是否存在 isset https://www.php.net/manual/en/function.isset.php 用例 $page = 1; if(isset($_GET["page"])){ $page = $_GET["page"]; } //或者 page = isset($_GET['page']) ? $_GET['page'] : 1 我们经常需要检测一个 coalescing运算(??) https://www.php.net/manual/en/migration70.new-features.php 当我们需要使用isset三元运算符的时候,我们可以使用coalescing运算(??)这个语法糖来代替 比如 $page = isset($_GET['page']) ?? 1; 测试代码 $array = [0 => "aaa", 1 => null]; $v0 = $array[0] ?? "emtpy"; // 存在 $v1 = $array[1] ?? "emtpy"; // null $v2 = $array[2] ?? "emtpy"; // 不存在 echo $...

Typecho自定义二级菜单样式

背景介绍 先来说说当前的菜单样式吧 系统默认菜单栏实现和样式 // themes/default/sidebar.php 25行 <?php if (!empty($this->options->sidebarBlock) && in_array('ShowCategory', $this->options->sidebarBlock)): ?> <section class="widget"> <h3 class="widget-title"><?php _e('分类'); ?></h3> <?php $this->widget('Widget_Metas_Category_List')->listCategories('wrapClass=widget-list'); ?> </section> <?php endif; ?> 默认模板调用了Widget_Metas_Category_List的listCategories方法来显示导航菜单,那么这个导航菜单的样式就被集成到了listCategories方法中。又是html+php混写。(大家吐槽的不是php, 而是写php的人) 显示效果呢,上个图吧 再来看看Typ...

优雅地自定义遍历输出文章

背景介绍 看了不下十个主题的代码,一个通病,就是控制代码和模板混写在一起。如下图 这么写的问题是什么? 当输出结构比较复杂的时候,html会变得非常难以修改。 typecho自己是如何做的 作为一个typecho新手,很好奇为什么系统内置的文章输出就可以如此优雅。一个while($this->next())实现文章遍历,模板随意修改,数据控制代码也随意修改,互不干涉。 以下是所有模板中都用到的,输出文章列表的代码。 <?php while($this->next()): ?> <article class="post_summary"> <h3 class="title"><a target="_blank" itemtype="url" href="<?php $this->permalink() ?>"><?php $this->title() ?></a></h3> <div class="row"> <div class="col-lg-3"> <a href="<?php $this->permalink() ...

安装RandomArticleList插件无法启用

错误信息: Path '/action/plugins-edit' not found Typecho_Router_Exception: Path '/action/plugins-edit' not found in /...../var/Typecho/Router.php:155 Stack trace: #0 /...../index.php(25): Typecho_Router::dispatch() #1 {main} 没找到插件,看下插件代码吧。 看起来只有这个插件文件名不一样,其他插件都叫做Plugin.php,这个插件叫做RandomArticleList.php。 改文件名,RandomArticleList.php -> Plugin.php。再次运行 还在报错,不过错误内容不一样了。 无法启用插件 Typecho_Widget_Exception: 无法启用插件 in /...../var/Widget/Plugins/Edit.php:98 Stack trace: #0 /...../var/Widget/Plugins/Edit.php(308): Widget_Plugins_Edit->activate('RandomArticleLi...') #1 /...../var/Widget/Do.php(82): Widget...

安装Stat插件无法激活

错误提示:“数据表检测失败,统计插件启用失败” 解决过程: 打开插件源代码看了下, class Stat_Plugin implements Typecho_Plugin_Interface{ } // 来看看这个接口的定义 /** * 插件接口 * * @package Plugin * @abstract */ interface Typecho_Plugin_Interface { /** * 启用插件方法,如果启用失败,直接抛出异常 */ public static function activate(); /** * 禁用插件方法,如果禁用失败,直接抛出异常 */ public static function deactivate(); /** * 获取插件配置面板 */ public static function config(Typecho_Widget_Helper_Form $form); /** * 个人用户的配置面板 */ public static function personalConfig(Typecho_Widget_Helper_Form $form); } 这样看很明显了,启用插...
执行时间: 37.797927856445 毫秒